349 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			349 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | /* | ||
|  | 文件名:Rindro_Luke_PartyHall.nut | ||
|  | 路径:Plugins/New_Luke/Rindro_Luke_PartyHall.nut | ||
|  | 创建日期:2024-07-15	16:50 | ||
|  | 文件用途:卢克组队大厅 | ||
|  | */ | ||
|  | class Rindro_Luke_PartyHallC extends LenheartNewUI_Windows { | ||
|  | 
 | ||
|  |     Visible = false; | ||
|  |     //调试模式 | ||
|  |     // DeBugMode = true; | ||
|  | 
 | ||
|  | 
 | ||
|  |     //页数 | ||
|  |     Page = 0; | ||
|  |     //一页放多少个队伍 | ||
|  |     PageMaxCount = 13; | ||
|  |     //攻坚队List | ||
|  |     PartyList = null; | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     //获取所有队伍 | ||
|  |     function GetAllTeamCall() { | ||
|  |         local Jso = { | ||
|  |             op = 20084011 | ||
|  |         } | ||
|  |         SendPack(Jso); | ||
|  |     } | ||
|  | 
 | ||
|  |     //获取所有队伍收包 | ||
|  |     function GetAllTeamCallCallBack(Chunk) { | ||
|  |         local Jso = Json.Decode(Chunk); | ||
|  | 
 | ||
|  |         //清除原来的List PartyList可以直接清除  但是Childrens中的窗口需要调用底层方法清除队伍类 | ||
|  |         PartyList = []; | ||
|  | 
 | ||
|  |         RemoveAllParty(); | ||
|  |         //遍历包构造攻坚队UI对象 | ||
|  |         foreach(TeamsSimple in Jso.TeamSimList) { | ||
|  |             local RealState = 0; | ||
|  |             if (TeamsSimple.State == 1) RealState = 1; | ||
|  |             else if (TeamsSimple.State == 2) RealState = 0; | ||
|  |             else if (TeamsSimple.State == 3) RealState = 2; | ||
|  |             else if (TeamsSimple.State == 4) RealState = 3; | ||
|  |             local T = { | ||
|  |                 TeamId = TeamsSimple.TeamId.tostring(), | ||
|  |                 TeamName = TeamsSimple.TeamName, | ||
|  |                 TeamPlayerCount = TeamsSimple.TeamPlayerCount, | ||
|  |                 State = RealState | ||
|  |             } | ||
|  |             local TeamBuf = Rindro_LukePartyC(T); | ||
|  |             AddChild(TeamBuf); | ||
|  |             PartyList.append(TeamBuf); | ||
|  |         } | ||
|  |         //收到刷新队伍列表包时需要将队伍窗口关闭 //TODO | ||
|  |         // if ("Close" in Jso) LenheartNewUI_DestoryWindow("超时空我的队伍窗口"); | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { | ||
|  |         Childrens = []; | ||
|  | 
 | ||
|  |         PartyList = []; | ||
|  |         //注册控件 | ||
|  |         RegisterWidget(); | ||
|  | 
 | ||
|  |         LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH); | ||
|  | 
 | ||
|  | 
 | ||
|  |         Pack_Control.rawset(20084002, GetAllTeamCallCallBack.bindenv(this)); | ||
|  | 
 | ||
|  | 
 | ||
|  |         GetAllTeamCall(); | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  |     OnlyPreparingBtn = null; | ||
|  |     OnlyPreparingFlag = 1; | ||
|  |     InputObject = null; | ||
|  | 
 | ||
|  |     function RegisterWidget() { | ||
|  |         //关闭按钮 | ||
|  |         local CloseButton = LenheartNewUI_BaseButton(457, 0, 11, 12, "interface/lenheartwindowcommon.img", 276); | ||
|  |         CloseButton.OnClick = function() { | ||
|  |             CloseWindow(); | ||
|  |         }.bindenv(this); | ||
|  |         AddChild(CloseButton); | ||
|  | 
 | ||
|  | 
 | ||
|  |         //我的频道复选框 | ||
|  |         local MyChannelBtn = LenheartNewUI_SwitchButtonText(16, 30, "我的频道"); | ||
|  |         MyChannelBtn.State = 1; | ||
|  |         MyChannelBtn.ImgIndex = 358; | ||
|  |         MyChannelBtn.SetTextPos(12, 2); | ||
|  |         MyChannelBtn.Width = 76; | ||
|  |         MyChannelBtn.Height = 16; | ||
|  |         AddChild(MyChannelBtn); | ||
|  | 
 | ||
|  |         //只查看招募中的攻坚队 | ||
|  |         OnlyPreparingBtn = LenheartNewUI_SwitchButtonText(110, 30, "只查看招募中的攻坚队"); | ||
|  |         OnlyPreparingBtn.ImgIndex = 358; | ||
|  |         OnlyPreparingBtn.SetTextPos(12, 2); | ||
|  |         OnlyPreparingBtn.Width = 76; | ||
|  |         OnlyPreparingBtn.Height = 16; | ||
|  |         OnlyPreparingBtn.OnClick = function() { | ||
|  |             switch (OnlyPreparingFlag) { | ||
|  |                 case 0: | ||
|  |                     OnlyPreparingFlag = 1; | ||
|  |                     break; | ||
|  |                 case 1: | ||
|  |                     OnlyPreparingFlag = 0; | ||
|  |                     break; | ||
|  |             } | ||
|  |             OnlyPreparingBtn.State = OnlyPreparingFlag; | ||
|  |         }.bindenv(this); | ||
|  |         AddChild(OnlyPreparingBtn); | ||
|  | 
 | ||
|  |         //搜索队伍输入框 | ||
|  |         InputObject = LenheartNewUI_BaseInput(260, 31, 80, 20); | ||
|  |         AddChild(InputObject); | ||
|  | 
 | ||
|  |         //搜索按钮 | ||
|  |         local FindButton = LenheartNewUI_ButtonText(348, 28, 5, "搜索"); | ||
|  |         FindButton.SetTextOffset(0, 1); | ||
|  |         FindButton.OnClick = function() { | ||
|  |             if (InputObject.str.len() > 0) { | ||
|  | 
 | ||
|  |             } | ||
|  |         }.bindenv(this); | ||
|  |         AddChild(FindButton); | ||
|  | 
 | ||
|  |         //重置按钮 | ||
|  |         local ResetButton = LenheartNewUI_ButtonText(408, 28, 5, "重置"); | ||
|  |         ResetButton.SetTextOffset(0, 1); | ||
|  |         ResetButton.OnClick = function() { | ||
|  |             InputObject.str = ""; | ||
|  |         }.bindenv(this); | ||
|  |         AddChild(ResetButton); | ||
|  | 
 | ||
|  |         //编号按钮 | ||
|  |         local ModelButton = LenheartNewUI_ButtonText(9, 56, -18, "编号"); | ||
|  |         ModelButton.Idx = 163; | ||
|  |         ModelButton.DWidth = -8; | ||
|  |         ModelButton.SetTextOffset(-9, 1); | ||
|  |         AddChild(ModelButton); | ||
|  | 
 | ||
|  |         //状态按钮 | ||
|  |         local StateButton = LenheartNewUI_ButtonText(51, 56, -18, "状态"); | ||
|  |         StateButton.Idx = 163; | ||
|  |         StateButton.DWidth = -8; | ||
|  |         StateButton.SetTextOffset(-9, 1); | ||
|  |         AddChild(StateButton); | ||
|  | 
 | ||
|  |         //频道按钮 | ||
|  |         local ChannelButton = LenheartNewUI_ButtonText(93, 56, -18, "频道"); | ||
|  |         ChannelButton.Idx = 163; | ||
|  |         ChannelButton.DWidth = -8; | ||
|  |         ChannelButton.SetTextOffset(-9, 1); | ||
|  |         AddChild(ChannelButton); | ||
|  | 
 | ||
|  |         //攻坚队名称按钮 | ||
|  |         local PartyNameButton = LenheartNewUI_ButtonText(135, 56, 100, "攻坚队名称"); | ||
|  |         PartyNameButton.Idx = 163; | ||
|  |         PartyNameButton.DWidth = 223; | ||
|  |         PartyNameButton.FillWidth = 1; | ||
|  |         PartyNameButton.FirstWidth = 21; | ||
|  |         PartyNameButton.SetTextOffset(26, 1); | ||
|  |         AddChild(PartyNameButton); | ||
|  | 
 | ||
|  |         //阶段按钮 | ||
|  |         local StageButton = LenheartNewUI_ButtonText(289, 56, 52, "阶段"); | ||
|  |         StageButton.Idx = 163; | ||
|  |         StageButton.DWidth = 140; | ||
|  |         StageButton.FillWidth = 1; | ||
|  |         StageButton.FirstWidth = 21; | ||
|  |         StageButton.SetTextOffset(26, 1); | ||
|  |         AddChild(StageButton); | ||
|  | 
 | ||
|  |         //队员数量按钮 | ||
|  |         local TeammembersButton = LenheartNewUI_ButtonText(402, 56, 50, "队员数量"); | ||
|  |         TeammembersButton.Idx = 163; | ||
|  |         TeammembersButton.FillWidth = 1; | ||
|  |         TeammembersButton.FirstWidth = 21; | ||
|  |         TeammembersButton.DWidth = 47; | ||
|  |         TeammembersButton.SetTextOffset(-8, 1); | ||
|  |         AddChild(TeammembersButton); | ||
|  | 
 | ||
|  |         //创建攻坚队按钮 | ||
|  |         local MyPartyButton = LenheartNewUI_ButtonText(15, 395, 30, "创建攻坚队"); | ||
|  |         MyPartyButton.SetTextOffset(-6, 1); | ||
|  |         MyPartyButton.OnClick = function() { | ||
|  |             //有队伍则查看队伍信息 | ||
|  |             if (RinDro_Luke_Obj.MyRaidTeamId) { | ||
|  |                 //发送查看攻坚队具体信息包 | ||
|  |                 local T = { | ||
|  |                     op = 20084013, | ||
|  |                     teamsId = RinDro_Luke_Obj.MyRaidTeamId | ||
|  |                 } | ||
|  |                 SendPackEx(T); | ||
|  |             } | ||
|  |             //否则创建队伍 | ||
|  |             else { | ||
|  |                 local Win = LenheartNewUI_CreateWindow(Rindro_LukeCreatePartyC, "卢克创建队伍窗口", 290, 220, 284, 154, 18); | ||
|  |                 Win.Visible = true; | ||
|  |                 Win.ResetFocus(); | ||
|  |             } | ||
|  |         }.bindenv(this); | ||
|  |         //设置动态回调改变按钮名称 | ||
|  |         MyPartyButton.SetCallBackFunc(function(window) { | ||
|  |             if (RinDro_Luke_Obj.MyRaidTeamId) window.TextStr = "我的攻坚队"; | ||
|  |             else window.TextStr = "创建攻坚队"; | ||
|  |         }.bindenv(this)); | ||
|  | 
 | ||
|  |         AddChild(MyPartyButton); | ||
|  | 
 | ||
|  |         //左翻页按钮 | ||
|  |         local LeftButton = LenheartNewUI_BaseButton(160, 400, 15, 15, "interface/lenheartwindowcommon.img", 34); | ||
|  |         LeftButton.OnClick = function() { | ||
|  |             if (Page > 0) Page--; | ||
|  |         }.bindenv(this); | ||
|  |         AddChild(LeftButton); | ||
|  | 
 | ||
|  |         //右翻页按钮 | ||
|  |         local RightButton = LenheartNewUI_BaseButton(220, 400, 15, 15, "interface/lenheartwindowcommon.img", 38); | ||
|  |         RightButton.OnClick = function() { | ||
|  |             if (Page<(((PartyList.len() / PageMaxCount)))) Page++; | ||
|  |         }.bindenv(this); | ||
|  |         AddChild(RightButton); | ||
|  | 
 | ||
|  |         //进入待机按钮 | ||
|  |         local FQButton = LenheartNewUI_ButtonText(300, 394, 20, "进入待机"); | ||
|  |         FQButton.SetTextOffset(-5, 2); | ||
|  |         FQButton.State = 8; | ||
|  |         AddChild(FQButton); | ||
|  | 
 | ||
|  |         //刷新按钮 | ||
|  |         local RefreshButton = LenheartNewUI_BaseButton(410, 395, 25, 25, "interface/lenheartwindowcommon.img", 366); | ||
|  |         RefreshButton.OnClick = function() { | ||
|  |             GetAllTeamCall(); | ||
|  |         }.bindenv(this); | ||
|  |         AddChild(RefreshButton); | ||
|  | 
 | ||
|  |         //设置按钮 | ||
|  |         local SettingButton = LenheartNewUI_BaseButton(440, 394, 15, 15, "interface/lenheartwindowcommon.img", 362); | ||
|  |         SettingButton.State = 8; | ||
|  |         AddChild(SettingButton); | ||
|  |     } | ||
|  | 
 | ||
|  |     //绘制主界面 | ||
|  |     function DrawMain(obj) { | ||
|  |         //Item信息框一般为211的宽度 | ||
|  |         L_sq_DrawWindow(X, Y + 10, 540 * 0.85, 420 * 0.9, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13); | ||
|  | 
 | ||
|  |         L_sq_DrawWindow(X + 6, Y + 19, 528 * 0.85, 47, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13); | ||
|  | 
 | ||
|  |         //绘制背景框标题栏 | ||
|  |         L_sq_DrawImg("hud/rindroanton.img", 3, X + 1, Y); | ||
|  | 
 | ||
|  |         L_sq_DrawCode("寻找攻坚队", X + 217, Y + 3, sq_RGBA(179, 169, 135, 255), 0, 1); | ||
|  | 
 | ||
|  |         //绘制队伍List | ||
|  |         DrawPartyList(obj); | ||
|  | 
 | ||
|  |         L_sq_DrawWindow(X + 6, Y + 382, 528 * 0.85, 24, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13); | ||
|  | 
 | ||
|  |         //计算页数 | ||
|  |         local PageStr = Page + 1 + " / " + ((PartyList.len() / PageMaxCount) + 1); | ||
|  |         //绘制当前页数 | ||
|  |         L_sq_DrawCode(PageStr, X + 166 + LenheartTextClass.GetStringLength(PageStr) / 2, Y + 402, sq_RGBA(134, 120, 79, 255), 0, 1); | ||
|  |     } | ||
|  | 
 | ||
|  |     //重置所有选中 | ||
|  |     function ResetAllSelect() { | ||
|  |         foreach(Index, TeamObj in PartyList) { | ||
|  |             TeamObj.SelectState = false; | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     //移除队伍 | ||
|  |     function RemoveParty(TeamId) { | ||
|  |         local ObjectID = null; | ||
|  |         for (local i = 0; i< Childrens.len(); i++) { | ||
|  |             local Cobj = Childrens[i]; | ||
|  |             if (Cobj instanceof Rindro_LukePartyC) { | ||
|  |                 if (Cobj.TeamObj.TeamId.tointeger() == TeamId.tointeger()) { | ||
|  |                     ObjectID = Cobj.ObjectId; | ||
|  |                 } | ||
|  |             } | ||
|  |         } | ||
|  |         if (ObjectID) RemoveChild(ObjectID); | ||
|  |     } | ||
|  | 
 | ||
|  |     //移除所有队伍 | ||
|  |     function RemoveAllParty() { | ||
|  |         for (local i = 0; i< Childrens.len(); i++) { | ||
|  |             local Cobj = Childrens[i]; | ||
|  |             if (Cobj instanceof Rindro_LukePartyC) { | ||
|  |                 Childrens.remove(i); | ||
|  |                 i--; | ||
|  |             } | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     //绘制队伍信息 | ||
|  |     function DrawPartyList(obj) { | ||
|  |         if (PartyList.len() <= 0) return; | ||
|  |         //先遍历一遍全部挪走 | ||
|  |         foreach(Index, TeamObj in PartyList) { | ||
|  |             TeamObj.SyncPos(9999, 9999); | ||
|  |         } | ||
|  |         //在遍历需要显示的同步坐标 | ||
|  |         foreach(Index, TeamObj in PartyList.slice((((Page) * PageMaxCount) > 0) ? ((Page) * PageMaxCount) : 0, ((Page + 1) * PageMaxCount) > PartyList.len() ? PartyList.len() : ((Page + 1) * PageMaxCount))) { | ||
|  |             TeamObj.SyncPos(X, Y + 2 + (Index % PageMaxCount) * 23); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     function Show(obj) { | ||
|  |         DrawMain(obj); | ||
|  |         LenheartNewUI_Windows.Show(obj); | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  |     MainButton = null; | ||
|  |     //逻辑入口 | ||
|  |     function Proc(obj) { | ||
|  | 
 | ||
|  |         //界面未打开 | ||
|  |         if (!this.Visible && L_sq_RA(0x1A5FB4C, "0x14+0x28+")< 2) { | ||
|  |             //在甲板 | ||
|  |             if (RinDro_Luke_Obj.BaseConfig && RinDro_Luke_Obj.BaseConfig.channel_index.find("19") && L_sq_GetTownIndex() == RinDro_Luke_Obj.BaseConfig.town_index && L_sq_GetRegionIndex() >= 1) { | ||
|  |                 local PaW = sq_GetPopupWindowMainCotrol(6); | ||
|  |                 if (PaW) { | ||
|  |                     L_sq_UseSkill(DIK_ESCAPE); | ||
|  |                     this.Visible = true; | ||
|  |                     GetAllTeamCall(); | ||
|  |                 } | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |         LenheartNewUI_Windows.SyncPos(X, Y); | ||
|  |     } | ||
|  | 
 | ||
|  | } |