Compare commits
	
		
			2 Commits
		
	
	
		
			b52f6126d2
			...
			35421c3ba6
		
	
	| Author | SHA1 | Date | 
|---|---|---|
|  | 35421c3ba6 | |
|  | 9e7cce285a | 
							
								
								
									
										
											BIN
										
									
								
								Yosin_Engine.exe
								
								
								
								
							
							
						
						
									
										
											BIN
										
									
								
								Yosin_Engine.exe
								
								
								
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							|  | @ -272,4 +272,14 @@ class CL_BaseObject { | ||||||
|     function SetRotate(Duration, Rotation) { |     function SetRotate(Duration, Rotation) { | ||||||
|         BaseObject_SetRotate(this.C_Object, Duration, Rotation); |         BaseObject_SetRotate(this.C_Object, Duration, Rotation); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     //获取右侧的坐标 | ||||||
|  |     function right() { | ||||||
|  |         return X + GetSize().w; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     //获取底部的坐标 | ||||||
|  |     function bottom() { | ||||||
|  |         return Y + GetSize().h; | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | @ -169,6 +169,20 @@ class Yosin_BaseWindow extends Layer { | ||||||
|         // gChild.Parent = this; |         // gChild.Parent = this; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /* | ||||||
|  |      * @函数作用: 获取窗口右侧的坐标 | ||||||
|  |      */ | ||||||
|  |     function right() { | ||||||
|  |         return X + Width; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /* | ||||||
|  |      * @函数作用: 获取窗口底部的坐标 | ||||||
|  |      */ | ||||||
|  |     function bottom() { | ||||||
|  |         return Y + Height; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     //开启Debug模式 |     //开启Debug模式 | ||||||
|     function OpenDeBug() { |     function OpenDeBug() { | ||||||
|         DeBugSprite = CL_SpriteObject("sprite/interface/lenheartwindowcommon.img", 257); |         DeBugSprite = CL_SpriteObject("sprite/interface/lenheartwindowcommon.img", 257); | ||||||
|  |  | ||||||
|  | @ -69,6 +69,7 @@ l:\Yosin_Engine\Yosin&Kiwano_DOF\sqr\User\Object\ActiveObject\CharacterObjectCla | ||||||
| l:\Yosin_Engine\Yosin&Kiwano_DOF\sqr\User\Object\ActiveObject\CharacterObjectClass_AI.nut | l:\Yosin_Engine\Yosin&Kiwano_DOF\sqr\User\Object\ActiveObject\CharacterObjectClass_AI.nut | ||||||
| 
 | 
 | ||||||
| l:\Yosin_Engine\Yosin&Kiwano_DOF\sqr\User\Socket\Socket.nut | l:\Yosin_Engine\Yosin&Kiwano_DOF\sqr\User\Socket\Socket.nut | ||||||
|  | l:\Yosin_Engine\Yosin&Kiwano_DOF\sqr\User\Socket\Packet.nut | ||||||
| 
 | 
 | ||||||
| l:\Yosin_Engine\Yosin&Kiwano_DOF\sqr\User\Stage\LodingStage.nut | l:\Yosin_Engine\Yosin&Kiwano_DOF\sqr\User\Stage\LodingStage.nut | ||||||
| l:\Yosin_Engine\Yosin&Kiwano_DOF\sqr\User\Stage\TestStage.nut | l:\Yosin_Engine\Yosin&Kiwano_DOF\sqr\User\Stage\TestStage.nut | ||||||
|  | @ -83,6 +84,8 @@ l:\Yosin_Engine\Yosin&Kiwano_DOF\sqr\User\UI\Window\0_Login.nut | ||||||
| l:\Yosin_Engine\Yosin&Kiwano_DOF\sqr\User\UI\Window\1_Select_Character.nut | l:\Yosin_Engine\Yosin&Kiwano_DOF\sqr\User\UI\Window\1_Select_Character.nut | ||||||
| l:\Yosin_Engine\Yosin&Kiwano_DOF\sqr\User\UI\Window\2_create_Character.nut | l:\Yosin_Engine\Yosin&Kiwano_DOF\sqr\User\UI\Window\2_create_Character.nut | ||||||
| l:\Yosin_Engine\Yosin&Kiwano_DOF\sqr\User\UI\Window\3_Top_tool.nut | l:\Yosin_Engine\Yosin&Kiwano_DOF\sqr\User\UI\Window\3_Top_tool.nut | ||||||
|  | l:\Yosin_Engine\Yosin&Kiwano_DOF\sqr\User\UI\Window\4_PersonalInfo.nut | ||||||
|  | l:\Yosin_Engine\Yosin&Kiwano_DOF\sqr\User\UI\Window\5_Inventory.nut | ||||||
| l:\Yosin_Engine\Yosin&Kiwano_DOF\sqr\User\UI\Window\233_HUD_Message.nut | l:\Yosin_Engine\Yosin&Kiwano_DOF\sqr\User\UI\Window\233_HUD_Message.nut | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -32,6 +32,8 @@ class GameObject.Character extends GameObject.ActiveObject { | ||||||
| 
 | 
 | ||||||
|     //职业编号 |     //职业编号 | ||||||
|     Job = 0; |     Job = 0; | ||||||
|  |     //cid | ||||||
|  |     Cid = -1; | ||||||
| 
 | 
 | ||||||
|     //控制器 |     //控制器 | ||||||
|     Controller = null; |     Controller = null; | ||||||
|  |  | ||||||
|  | @ -281,6 +281,18 @@ class Map extends Actor { | ||||||
|         m_data.npc = Arr; |         m_data.npc = Arr; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     //添加角色的回包 | ||||||
|  |     function AddCharacterCallBack(Binary) { | ||||||
|  |         local Pack = Packet(Binary); | ||||||
|  | 
 | ||||||
|  |         /* | ||||||
|  |         local Charc = GameObject.CreateCharacter(Info.job, Info.equ); | ||||||
|  |                     local NPCobj = GameObject.NPC(info.id); | ||||||
|  |                     NPCobj.SetDirection(info.direction); | ||||||
|  |                     NPCobj.SetPosition(info.xpos, info.ypos, info.zpos); | ||||||
|  | 
 | ||||||
|  |                     */ | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     //添加对象 |     //添加对象 | ||||||
|     function AddObject(obj, IsPlayer = false) { |     function AddObject(obj, IsPlayer = false) { | ||||||
|  | @ -307,42 +319,19 @@ class Map extends Actor { | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     //移动城镇的回包 | ||||||
|  |     function MoveTownCallBack(Jso) { | ||||||
|  |         //我自己的移动城镇添加角色对象 | ||||||
|  |         local MapObj = GlobalTownManager.TownList[Jso.town].map[Jso.region]; | ||||||
|  |         MapObj.AddObjectByChangeTown(ClientCharacter, Jso.pos); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     //移动城镇的添加对象 |     //移动城镇的添加对象 | ||||||
|     function AddObjectByChangeTown(obj, FromMapobj) { |     function AddObjectByChangeTown(obj, pos) { | ||||||
|         //角色对象 |         //角色对象 | ||||||
|         if (typeof obj == "character") { |         if (typeof obj == "character") { | ||||||
|             //如果已经处于某个地图中 |             //角色原城镇 | ||||||
|             if (obj.Parent) { |             local FromMapobj = obj.MySelfMap; | ||||||
|                 obj.Parent.Removechild(obj); |  | ||||||
|             } |  | ||||||
|             LayerObject.normal.Addchild(obj); |  | ||||||
|             //将地图信息写入角色中 |  | ||||||
|             obj.MySelfMap = this.weakref(); |  | ||||||
|             //绑定摄像机 |  | ||||||
|             m_camera.SetFromParent(obj); |  | ||||||
|             //获取应该设置的坐标 |  | ||||||
|             foreach(index, info in m_data.town_movable_area_info) { |  | ||||||
|                 if (info.town == FromMapobj.m_town && info.area == FromMapobj.m_mapId) { |  | ||||||
|                     local pos = { |  | ||||||
|                         x = m_data.town_movable_area[index * 4] + m_data.town_movable_area[index * 4 + 2] / 2, |  | ||||||
|                         y = m_data.town_movable_area[index * 4 + 1] + m_data.town_movable_area[index * 4 + 3] / 2, |  | ||||||
|                         z = 0 |  | ||||||
|                     } |  | ||||||
|                     obj.SetPosition(pos); |  | ||||||
|                     break; |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             //获取当前场景 |  | ||||||
|             local Stage = sq_GetCurrentStage(); |  | ||||||
|             if (GlobalTownManager.CurrentTown) { |  | ||||||
|                 Stage.Removechild(GlobalTownManager.CurrentTown); |  | ||||||
|             } |  | ||||||
|             Stage.Addchild(this); |  | ||||||
|             //添加全局 |  | ||||||
|             GlobalTownManager.CurrentTown = this.weakref(); |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|             //背景音乐处理 |             //背景音乐处理 | ||||||
|             BackGroundMusic = {}; |             BackGroundMusic = {}; | ||||||
|             if (FromMapobj.BackGroundMusic != null) { |             if (FromMapobj.BackGroundMusic != null) { | ||||||
|  | @ -366,6 +355,28 @@ class Map extends Actor { | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|  |             //绑定摄像机 | ||||||
|  |             m_camera.SetFromParent(obj); | ||||||
|  |             //获取当前场景 | ||||||
|  |             local Stage = sq_GetCurrentStage(); | ||||||
|  |             if (GlobalTownManager.CurrentTown) { | ||||||
|  |                 Stage.Removechild(GlobalTownManager.CurrentTown); | ||||||
|  |             } | ||||||
|  |             Stage.Addchild(this); | ||||||
|  |             //添加全局 | ||||||
|  |             GlobalTownManager.CurrentTown = this.weakref(); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |             //如果已经处于某个地图中 则先移除 | ||||||
|  |             if (obj.Parent) { | ||||||
|  |                 obj.Parent.Removechild(obj); | ||||||
|  |             } | ||||||
|  |             //将角色添加到地图的normal图层 | ||||||
|  |             LayerObject.normal.Addchild(obj); | ||||||
|  |             //设置坐标 | ||||||
|  |             obj.SetPosition(pos); | ||||||
|  |             //将地图信息写入角色中 | ||||||
|  |             obj.MySelfMap = this.weakref(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -402,6 +413,10 @@ class Map extends Actor { | ||||||
|         m_camera.BackgroundOffset = m_data.background_pos; |         m_camera.BackgroundOffset = m_data.background_pos; | ||||||
| 
 | 
 | ||||||
|         // OpenMovableAreaBorder(); |         // OpenMovableAreaBorder(); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         MySocket.RegisterHandler(PACKET_ID.CHANGE_TOWN_AREA_CALLBACK, MoveTownCallBack.bindenv(this)); | ||||||
|  |         MySocket.RegisterBinaryHandler(PACKET_ID.TOWN_ADD_CHARACTER_CALLBACK, AddCharacterCallBack.bindenv(this)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     //DEBUG方法 |     //DEBUG方法 | ||||||
|  | @ -477,13 +492,33 @@ class Map extends Actor { | ||||||
|         //走进了传送阵 |         //走进了传送阵 | ||||||
|         if (Index != -1) { |         if (Index != -1) { | ||||||
|             if (!obj.TransmitFlag) { |             if (!obj.TransmitFlag) { | ||||||
|  |                 //得到传送信息  目标城镇 | ||||||
|                 local info = m_data.town_movable_area_info[Index]; |                 local info = m_data.town_movable_area_info[Index]; | ||||||
|                 //这里是未加载的城镇 |                 //如果是未加载的城镇 则先构造城镇 | ||||||
|                 if (!(GlobalTownManager.TownList.rawin(info.town))) { |                 if (!(GlobalTownManager.TownList.rawin(info.town))) { | ||||||
|                     Town(info.town); |                     Town(info.town); | ||||||
|                 } |                 } | ||||||
|  |                 //计算位移过去以后应该设置的位置 | ||||||
|                 local MapObj = GlobalTownManager.TownList[info.town].map[info.area]; |                 local MapObj = GlobalTownManager.TownList[info.town].map[info.area]; | ||||||
|                 MapObj.AddObjectByChangeTown(obj, this); |                 local movepos = { | ||||||
|  |                     z = 0 | ||||||
|  |                 }; | ||||||
|  |                 //遍历目标城镇的该区域 查找适当位移位置 | ||||||
|  |                 foreach(index, mapinfo in MapObj.m_data.town_movable_area_info) { | ||||||
|  |                     if (mapinfo.town == m_town && mapinfo.area == m_mapId) { | ||||||
|  |                         movepos.x <- MapObj.m_data.town_movable_area[index * 4] + MapObj.m_data.town_movable_area[index * 4 + 2] / 2; | ||||||
|  |                         movepos.y <- MapObj.m_data.town_movable_area[index * 4 + 1] + MapObj.m_data.town_movable_area[index * 4 + 3] / 2; | ||||||
|  |                         break; | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|  |                 //发包移动城镇 | ||||||
|  |                 MySocket.Send(PACKET_ID.CHANGE_TOWN_AREA, { | ||||||
|  |                     town = info.town, | ||||||
|  |                     region = info.area, | ||||||
|  |                     pos = movepos | ||||||
|  |                 }) | ||||||
|  | 
 | ||||||
|                 obj.TransmitFlag = true; |                 obj.TransmitFlag = true; | ||||||
|             } |             } | ||||||
|         } else { |         } else { | ||||||
|  |  | ||||||
|  | @ -0,0 +1,92 @@ | ||||||
|  | /* | ||||||
|  | 文件名:Packet.nut | ||||||
|  | 路径:User/Socket/Packet.nut | ||||||
|  | 创建日期:2025-01-04	22:20 | ||||||
|  | 文件用途:数据封包类 | ||||||
|  | */ | ||||||
|  | class Packet { | ||||||
|  |     Data = null; | ||||||
|  | 
 | ||||||
|  |     constructor(...) { | ||||||
|  |         //不传参数时,构造空包 | ||||||
|  |         if (vargv.len() == 0) { | ||||||
|  |             this.Data = blob(); | ||||||
|  |         } | ||||||
|  |         //传入数据流以流的形式构造包 | ||||||
|  |         else { | ||||||
|  |             this.Data = vargv[0]; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     //字节 | ||||||
|  |     function Put_Byte(Value) { | ||||||
|  |         this.Data.writen('c', Value); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     //短整型 | ||||||
|  |     function Put_Short(Value) { | ||||||
|  |         this.Data.writen('s', Value); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     //整型 | ||||||
|  |     function Put_Int(Value) { | ||||||
|  |         this.Data.writen('i', Value); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     //浮点型 | ||||||
|  |     function Put_Float(Value) { | ||||||
|  |         this.Data.writen('f', Value); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     //字符串 | ||||||
|  |     function Put_String(String) { | ||||||
|  |         foreach(char in String) { | ||||||
|  |             Put_Byte(char); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     //字节数组 | ||||||
|  |     function Put_Binary(BinaryArray) { | ||||||
|  |         //流 | ||||||
|  |         if (typeof BinaryArray == "blob") { | ||||||
|  |             this.Data.writeblob(BinaryArray); | ||||||
|  |         } | ||||||
|  |         //数组 | ||||||
|  |         else if (typeof BinaryArray == "array") { | ||||||
|  |             foreach(byte in BinaryArray) { | ||||||
|  |                 Put_Byte(byte); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     //获取字节 | ||||||
|  |     function Get_Byte() { | ||||||
|  |         return this.Data.readn('c'); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     //获取短整型 | ||||||
|  |     function Get_Short() { | ||||||
|  |         return this.Data.readn('s'); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     //获取整型 | ||||||
|  |     function Get_Int() { | ||||||
|  |         return this.Data.readn('i'); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     //获取浮点型 | ||||||
|  |     function Get_Float() { | ||||||
|  |         return this.Data.readn('f'); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     //获取字符串 | ||||||
|  |     function Get_String(len) { | ||||||
|  |         return stream_myreadstring(len); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     //获取字节数组 | ||||||
|  |     function Get_Binary(len) { | ||||||
|  |         return this.Data.readblob(len); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -41,7 +41,7 @@ function LoginStage() { | ||||||
|     local T = CL_StageObject(); |     local T = CL_StageObject(); | ||||||
|     T.SetName("加载界面舞台"); |     T.SetName("加载界面舞台"); | ||||||
| 
 | 
 | ||||||
|     local AniTime = 800; |     local AniTime = 1500; | ||||||
| 
 | 
 | ||||||
|     //大背景 |     //大背景 | ||||||
|     local BackGround = CL_SpriteObject("sprite/loding.img", 0); |     local BackGround = CL_SpriteObject("sprite/loding.img", 0); | ||||||
|  | @ -51,7 +51,7 @@ function LoginStage() { | ||||||
|     local Kiwano = CL_SpriteObject("sprite/loding.img", 1); |     local Kiwano = CL_SpriteObject("sprite/loding.img", 1); | ||||||
|     Kiwano.SetAnchor(0.5, 0.5); |     Kiwano.SetAnchor(0.5, 0.5); | ||||||
|     Kiwano.SetScale(0.35, 0.35); |     Kiwano.SetScale(0.35, 0.35); | ||||||
|     Kiwano.SetPosition(1066 / 2, 800); |     Kiwano.SetPosition(1066 / 2, 300); | ||||||
|     Kiwano.SetUpdateFunc(function(sp, dt) { |     Kiwano.SetUpdateFunc(function(sp, dt) { | ||||||
|         if (!("time" in sp.Var)) sp.Var.time <- 0; |         if (!("time" in sp.Var)) sp.Var.time <- 0; | ||||||
|         sp.Var.time += dt; |         sp.Var.time += dt; | ||||||
|  |  | ||||||
|  | @ -12,7 +12,7 @@ function TestStage() { | ||||||
| 
 | 
 | ||||||
|     local Window = Sq_CreateWindow(_Login_Window, "登录界面窗口", 0, 0, 1066, 600, 0); |     local Window = Sq_CreateWindow(_Login_Window, "登录界面窗口", 0, 0, 1066, 600, 0); | ||||||
| 
 | 
 | ||||||
| 
 |     // local Window = Sq_CreateWindow(_Inventory, "背包窗口", 150, 12, 257, 555, 20); | ||||||
|     // //大背景 |     // //大背景 | ||||||
|     // local BackGround = CL_SpriteObject("sprite/map/npc/2019_halloween_blossom_normal.img", 0); |     // local BackGround = CL_SpriteObject("sprite/map/npc/2019_halloween_blossom_normal.img", 0); | ||||||
|     // BackGround.SetPosition(300, 150); |     // BackGround.SetPosition(300, 150); | ||||||
|  | @ -54,15 +54,11 @@ function TestStage() { | ||||||
|     //         name = "测试角色", |     //         name = "测试角色", | ||||||
|     //         job = 0, |     //         job = 0, | ||||||
|     //         equip = [101020037, 601500061, 601550061, 601560059, 601570054, 601520053, 601500061, 601510060, 601530052, 601540061, 601580024, 609590003] |     //         equip = [101020037, 601500061, 601550061, 601560059, 601570054, 601520053, 601500061, 601510060, 601530052, 601540061, 601580024, 609590003] | ||||||
|     //     }, { |  | ||||||
|     //         lv = 90, |  | ||||||
|     //         name = "测试角色2号", |  | ||||||
|     //         job = 0, |  | ||||||
|     //         equip = [601020007, 601500060, 601550060, 601560058, 601570053, 601520052, 601500060, 601510059, 601530051, 601540060, 601580023, 609590003] |  | ||||||
|     //     }] |     //     }] | ||||||
|     // }; |     // }; | ||||||
|     // Window.Init(T); |     // Window.Init(T); | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|     // local Actorobj = Actor(); |     // local Actorobj = Actor(); | ||||||
|     // Actorobj.ShowBorder(true); |     // Actorobj.ShowBorder(true); | ||||||
|     // Actorobj.SetSize(1500, 100); |     // Actorobj.SetSize(1500, 100); | ||||||
|  |  | ||||||
|  | @ -44,7 +44,7 @@ class Yosin_InputBox extends Yosin_CommonUi { | ||||||
|         Text_Obj = TextActor(0, { |         Text_Obj = TextActor(0, { | ||||||
|             color = 0xFFFFFFFF |             color = 0xFFFFFFFF | ||||||
|         }); |         }); | ||||||
|         Text_Obj.SetPosition(4, 3); |         Text_Obj.SetPosition(4, 1); | ||||||
|         Addchild(Text_Obj); |         Addchild(Text_Obj); | ||||||
| 
 | 
 | ||||||
|         _Imm_Input_Func_.rawset(C_Object, Imm_Input.bindenv(this)); |         _Imm_Input_Func_.rawset(C_Object, Imm_Input.bindenv(this)); | ||||||
|  |  | ||||||
|  | @ -62,7 +62,6 @@ class _Login_Window extends Yosin_Window { | ||||||
|                     local value = Blob.readn('i'); |                     local value = Blob.readn('i'); | ||||||
|                     info.equip.append(value); |                     info.equip.append(value); | ||||||
|                 } |                 } | ||||||
|                 // print(info); |  | ||||||
|             } |             } | ||||||
|             //关闭登录界面 |             //关闭登录界面 | ||||||
|             NoticeBox.DestroyWindow(); |             NoticeBox.DestroyWindow(); | ||||||
|  |  | ||||||
|  | @ -271,6 +271,10 @@ class _Select_Character_Chr extends Yosin_CommonUi { | ||||||
|             M_Ypos = MousePos_Y; |             M_Ypos = MousePos_Y; | ||||||
|             B_X = X; //原始窗口位置 |             B_X = X; //原始窗口位置 | ||||||
|             B_Y = Y; |             B_Y = Y; | ||||||
|  |             //遍历父对象中的所有按钮 修改他们的层级 | ||||||
|  |             foreach(Button in Parent.UpCharacterList) { | ||||||
|  |                 Button.SetZOrder(99999); | ||||||
|  |             } | ||||||
|             SetZOrder(100000); |             SetZOrder(100000); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | @ -347,7 +351,19 @@ class _Select_Character_Window extends Yosin_Window { | ||||||
| 
 | 
 | ||||||
|     constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { |     constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { | ||||||
|         base.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH); |         base.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH); | ||||||
|         UpCharacterList = []; |         //定义五个空数组 | ||||||
|  |         UpCharacterList = array(5, null); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         // 选择角色进入游戏回包 | ||||||
|  |         MySocket.RegisterHandler(PACKET_ID.SELECT_CHARACTER_ENTER_GAME_CALLBACK, function(Jso) { | ||||||
|  |             local Info = Jso.charac; | ||||||
|  |             local TownObj = Town(Info.town); | ||||||
|  |             local Charc = GameObject.CreateCharacter(Info.job, Info.equ); | ||||||
|  |             TownObj.AddObject(Charc, true); | ||||||
|  |             ClientCharacter = Charc; | ||||||
|  |         }.bindenv(this)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     function Init(gInfo) { |     function Init(gInfo) { | ||||||
|  | @ -371,6 +387,39 @@ class _Select_Character_Window extends Yosin_Window { | ||||||
|         if (!BackGroundMusic.IsPlaying()) BackGroundMusic.Play(); |         if (!BackGroundMusic.IsPlaying()) BackGroundMusic.Play(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     function AddUpCharacter(CharacInfo, Index = 5) { | ||||||
|  |         //先定义为最大值 如果没有查到空位则不会执行逻辑 | ||||||
|  |         if (Index == 5) { | ||||||
|  |             //遍历获取第一个空位 Info为空也为空 | ||||||
|  |             foreach(pos, value in UpCharacterList) { | ||||||
|  |                 if (value == null) { | ||||||
|  |                     Index = pos; | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |                 //如果是信息为空的 要先删除原来的再添加 | ||||||
|  |                 if (value.Info == null) { | ||||||
|  |                     Index = pos; | ||||||
|  |                     RemoveUIChild(UpCharacterList[pos]); | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             if (Index >= 5) return; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         local Buf = _Select_Character_Chr(184 + (Index * 142), ((Index % 2) ? 13 : 0) + 93, 132, 208); | ||||||
|  |         //如果有信息则构造角色 | ||||||
|  |         if (CharacInfo) { | ||||||
|  |             //通过信息构造角色 | ||||||
|  |             Buf.Init(CharacInfo, Index); | ||||||
|  |             AddUIChild(Buf); | ||||||
|  |             UpCharacterList[Index] = Buf; | ||||||
|  |         } else { | ||||||
|  |             Buf.Init(null, Index); | ||||||
|  |             AddUIChild(Buf); | ||||||
|  |             UpCharacterList[Index] = Buf; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     function RegisterWindow() { |     function RegisterWindow() { | ||||||
|         SettingBackgroundWindow = _Select_Character_SettingBackground_Window("选择角色_设置背景图片窗口", 850, 28, 212, 129, 0); |         SettingBackgroundWindow = _Select_Character_SettingBackground_Window("选择角色_设置背景图片窗口", 850, 28, 212, 129, 0); | ||||||
|         AddUIChild(SettingBackgroundWindow); |         AddUIChild(SettingBackgroundWindow); | ||||||
|  | @ -386,11 +435,8 @@ class _Select_Character_Window extends Yosin_Window { | ||||||
|             CharBg.SetZOrder(-10); |             CharBg.SetZOrder(-10); | ||||||
|             Addchild(CharBg); |             Addchild(CharBg); | ||||||
| 
 | 
 | ||||||
|             local Buf = _Select_Character_Chr(184 + (i * 142), ((i % 2) ? 13 : 0) + 93, 132, 208); |             //如果没有足够的信息则传递null | ||||||
|             if (i< Info.charac.len()) Buf.Init(Info.charac[i], i); |             AddUpCharacter((Info.charac.len() > i) ? Info.charac[i] : null, i); | ||||||
|             else Buf.Init(null, i); |  | ||||||
|             UpCharacterList.push(Buf); |  | ||||||
|             AddUIChild(Buf); |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -237,6 +237,9 @@ class _CreateCharacter extends Yosin_Window { | ||||||
| 
 | 
 | ||||||
|     NoticeBox = null; |     NoticeBox = null; | ||||||
| 
 | 
 | ||||||
|  |     //临时创建角色 | ||||||
|  |     TempCharacter = null; | ||||||
|  | 
 | ||||||
|     constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { |     constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { | ||||||
|         base.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH); |         base.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH); | ||||||
| 
 | 
 | ||||||
|  | @ -247,7 +250,7 @@ class _CreateCharacter extends Yosin_Window { | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|         // 创建角色回包 |         // 创建角色回包 | ||||||
|         MySocket.RegisterHandler(4, function(Jso) { |         MySocket.RegisterHandler(PACKET_ID.CREATE_CHARACTER_CALLBACK, function(Jso) { | ||||||
|             if (NoticeBox) NoticeBox.CloseWindow(); |             if (NoticeBox) NoticeBox.CloseWindow(); | ||||||
|             if (Jso.type == 0) { |             if (Jso.type == 0) { | ||||||
|                 // 创建成功. |                 // 创建成功. | ||||||
|  | @ -255,6 +258,9 @@ class _CreateCharacter extends Yosin_Window { | ||||||
|                 NoticeBox.DestroyWindow(); |                 NoticeBox.DestroyWindow(); | ||||||
|                 DestroyWindow(); |                 DestroyWindow(); | ||||||
|                 MySocket.Send(PACKET_ID.QUERY_CHARACTER_LIST, null); |                 MySocket.Send(PACKET_ID.QUERY_CHARACTER_LIST, null); | ||||||
|  | 
 | ||||||
|  |                 local Window = Sq_CreateWindow(_Select_Character_Window, "选择角色界面窗口", 0, 0, 1066, 600, 0); | ||||||
|  |                 Window.AddUpCharacter(TempCharacter); | ||||||
|             } else { |             } else { | ||||||
|                 // 创建失败. |                 // 创建失败. | ||||||
|                 NoticeBox = _Yosin_MessageBox("创建失败."); |                 NoticeBox = _Yosin_MessageBox("创建失败."); | ||||||
|  | @ -263,9 +269,6 @@ class _CreateCharacter extends Yosin_Window { | ||||||
| 
 | 
 | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     function PlayBackgroundMusic() { |  | ||||||
| 
 |  | ||||||
|     } |  | ||||||
| 
 | 
 | ||||||
|     function RegisterDraw() { |     function RegisterDraw() { | ||||||
|         //大背景 |         //大背景 | ||||||
|  | @ -362,10 +365,16 @@ class _CreateCharacter extends Yosin_Window { | ||||||
|         // 确定 |         // 确定 | ||||||
|         enter.OnClick = function(enterName) { |         enter.OnClick = function(enterName) { | ||||||
|             local jobEnum = getJobEnum(jobIndex); |             local jobEnum = getJobEnum(jobIndex); | ||||||
|             MySocket.Send(7, { |             TempCharacter = { | ||||||
|  |                 lv = 1, | ||||||
|                 name = enterName, |                 name = enterName, | ||||||
|                 job = jobEnum, |                 job = jobEnum, | ||||||
|             }) |                 equip = [] | ||||||
|  |             }; | ||||||
|  |             MySocket.Send(PACKET_ID.CREATE_CHARACTER, { | ||||||
|  |                 name = enterName, | ||||||
|  |                 job = jobEnum, | ||||||
|  |             }); | ||||||
|         }.bindenv(this); |         }.bindenv(this); | ||||||
| 
 | 
 | ||||||
|     } |     } | ||||||
|  | @ -814,7 +823,7 @@ class _create_Character_enterName extends Yosin_Window { | ||||||
|         //点击事件回调 |         //点击事件回调 | ||||||
|         checkButton.OnClick = function(Button) { |         checkButton.OnClick = function(Button) { | ||||||
| 
 | 
 | ||||||
|             MySocket.Send(6, { |             MySocket.Send(PACKET_ID.NICKNAME_REPEAT_CHECK, { | ||||||
|                 name = nameInputBox.str, |                 name = nameInputBox.str, | ||||||
|             }) |             }) | ||||||
| 
 | 
 | ||||||
|  | @ -877,7 +886,7 @@ class _create_Character_enterName extends Yosin_Window { | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|         // 昵称重复检查回包 |         // 昵称重复检查回包 | ||||||
|         MySocket.RegisterHandler(3, function(Jso) { |         MySocket.RegisterHandler(PACKET_ID.NICKNAME_REPEAT_CHECK_CALLBACK, function(Jso) { | ||||||
|             if (Parent.NoticeBox) Parent.NoticeBox.CloseWindow(); |             if (Parent.NoticeBox) Parent.NoticeBox.CloseWindow(); | ||||||
|             if (Jso.type == 0) { |             if (Jso.type == 0) { | ||||||
|                 // 可以使用的ID 确认按钮可以使用. |                 // 可以使用的ID 确认按钮可以使用. | ||||||
|  |  | ||||||
|  | @ -5,12 +5,19 @@ | ||||||
| 文件用途:包ID枚举 | 文件用途:包ID枚举 | ||||||
| */ | */ | ||||||
| enum PACKET_ID { | enum PACKET_ID { | ||||||
|  | 
 | ||||||
|  |     /**** 客户端发包 ***/ | ||||||
|  | 
 | ||||||
|     // 登录 |     // 登录 | ||||||
|     LOGIN = 1 |     LOGIN = 1 | ||||||
|     //注册 |     //注册 | ||||||
|     REGISTER = 3 |     REGISTER = 3 | ||||||
|     //修改密码 |     //修改密码 | ||||||
|     CHANGE_PASSWORD = 5 |     CHANGE_PASSWORD = 5 | ||||||
|  |     //昵称重复检查 | ||||||
|  |     NICKNAME_REPEAT_CHECK = 6 | ||||||
|  |     //创建角色 | ||||||
|  |     CREATE_CHARACTER = 7 | ||||||
|     //查询账号中的角色列表 |     //查询账号中的角色列表 | ||||||
|     QUERY_CHARACTER_LIST = 9 |     QUERY_CHARACTER_LIST = 9 | ||||||
|     //选择角色 |     //选择角色 | ||||||
|  | @ -18,4 +25,22 @@ enum PACKET_ID { | ||||||
|     //更换角色位置 |     //更换角色位置 | ||||||
|     CHANGE_CHARACTER_POSITION = 10 |     CHANGE_CHARACTER_POSITION = 10 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  |     //城镇移动切换区域 | ||||||
|  |     CHANGE_TOWN_AREA = 10001 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     /**** 客户端收包 ***/ | ||||||
|  | 
 | ||||||
|  |     //昵称重复检查回包 | ||||||
|  |     NICKNAME_REPEAT_CHECK_CALLBACK = 3 | ||||||
|  |     //创建角色回包 | ||||||
|  |     CREATE_CHARACTER_CALLBACK = 4 | ||||||
|  |     //选择角色进入游戏回包 | ||||||
|  |     SELECT_CHARACTER_ENTER_GAME_CALLBACK = 5 | ||||||
|  |     //城镇移动切换区域回包 | ||||||
|  |     CHANGE_TOWN_AREA_CALLBACK = 10001 | ||||||
|  |     //城镇添加角色回包 | ||||||
|  |     TOWN_ADD_CHARACTER_CALLBACK = 10002 | ||||||
| } | } | ||||||
|  | @ -247,5 +247,8 @@ | ||||||
|     }, |     }, | ||||||
|     "User/UI/Window/4_PersonalInfo.nut": { |     "User/UI/Window/4_PersonalInfo.nut": { | ||||||
|         "description": "个人信息窗口" |         "description": "个人信息窗口" | ||||||
|  |     }, | ||||||
|  |     "User/Socket/Packet.nut": { | ||||||
|  |         "description": "数据包类" | ||||||
|     } |     } | ||||||
| } | } | ||||||
		Loading…
	
		Reference in New Issue