/* 文件名: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); } }