/* 文件名:AradPass.nut 路径:Project/AradPass/AradPass.nut 创建日期:2024-08-13 09:39 文件用途:阿拉德战令 */ // dofile("sqr/Project/AradPass/AradPass_Reward.nut"); // dofile("sqr/Project/AradPass/AradPass_Quest.nut"); // dofile("sqr/Project/AradPass/AradPass_Help.nut"); class AradPassC extends LenheartNewUI_Windows { //调试模式 // DeBugMode = true; //不是窗口 // NoWindow = true; //是否可见 Visible = false; //基础信息 BaseInfo = null; //标题栏 Title = null; //当前页面 Page = 0; QuestTitle = null; QuestPage = 0; //标签提示 TabSuccessTips = null; //标签提示 TabSuccessTips = null; //等级按钮 LevelButton = null; LevelPage = 0; //战令等级 MyPassLevel = 2; //ItemInfo ItemInfoObject = null; ItemInfoDrawS = null; RewardInfoObject = null; RewardInfoEffTimer = null; //奖励完成提示 RewardSuccessTips = null; //页面选择器 PageSelectM = 0; //奖励页面 RewardPage = null; //任务页面 QuestPage = null; //助力页面 HelpPage = null; function GetBaseInfoCallBack2(Chunk) { local Jso = Json.Decode(Chunk); BaseInfo = {}; BaseInfo = clone(Jso); LevelPage = ((BaseInfo.Exp / 1000) + 1) / 10; } function GetPlayerRewardCallBack(Chunk) { //还原奖励领取提示数组 RewardSuccessTips = [0, 0, 0, 0, 0]; TabSuccessTips[0] = 0; RewardInfoObject = {}; local Jso = Json.Decode(Chunk); foreach(Pos, Value in Jso.reward) { RewardInfoObject.rawset(Pos, Value); if ((Pos)<(BaseInfo.Exp / 1000 + 1)) { //判断是否有未领取的道具绘制感叹号要用 local Page = (Pos / 10); if (RewardSuccessTips[Page] == 0) { if (Value.isOrdinary == 0) { RewardSuccessTips[Page] = 1; TabSuccessTips[0] = 1; } if (BaseInfo.isVip) { if (Value.isadditional == 0) { RewardSuccessTips[Page] = 1; TabSuccessTips[0] = 1; } } } } } } constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { Childrens = []; Title = []; RewardSuccessTips = [0, 0, 0, 0, 0]; //标签完成提示 TabSuccessTips = [0, 0, 0]; //奖励动画时间 RewardInfoEffTimer = Clock(); //注册控件 RegisterWidget(); LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH); RewardPage = AradPass_RewardC("阿拉德战令_奖励窗口", X, Y + 210, 558, 274, 0); QuestPage = AradPass_QuestC("阿拉德战令_任务窗口", X, Y + 210, 558, 274, 0); HelpPage = AradPass_HelpC("阿拉德战令_助力窗口", X, Y + 210, 558, 274, 0); Pack_Control.rawset(20059006, GetBaseInfoCallBack2.bindenv(this)); Pack_Control.rawset(20059004, GetPlayerRewardCallBack.bindenv(this)); GetBaseInfo(); GetPlayerReward(); //默认构造时切换到0页 ChangePage(0); } function ChangePage(ToPage) { foreach(ButtonObj in Title) { ButtonObj.State = 0; } Page = ToPage; Title[ToPage].State = 1; RemoveChild("阿拉德战令_奖励窗口"); RemoveChild("阿拉德战令_任务窗口"); RemoveChild("阿拉德战令_助力窗口"); PageSelectM = ToPage; switch (ToPage) { case 0: { AddChild(RewardPage); break; } case 1: { AddChild(QuestPage); QuestPage.OpenCallBack(); break; } case 2: AddChild(HelpPage); break; } } function RegisterWidget() { //关闭按钮 local CloseButton = LenheartNewUI_BaseButton(540, 0, 11, 12, "interface/lenheartwindowcommon.img", 276); CloseButton.OnClick = function() { this.Visible = false; }.bindenv(this); Childrens.append(CloseButton); local Tabbars1 = LenheartNewUI_TabbarsText(12, 27, "奖励"); Tabbars1.State = 1; AddChild(Tabbars1); Tabbars1.OnClick = function() { ChangePage(0); }.bindenv(this); Title.append(Tabbars1); local Tabbars2 = LenheartNewUI_TabbarsText(74, 27, "任务"); AddChild(Tabbars2); Tabbars2.OnClick = function() { ChangePage(1); }.bindenv(this); Title.append(Tabbars2); local Tabbars3 = LenheartNewUI_TabbarsText(136, 27, "社交"); AddChild(Tabbars3); Tabbars3.OnClick = function() { ChangePage(2); }.bindenv(this); Title.append(Tabbars3); //激活按钮 local ActiveButton = LenheartNewUI_ButtonText(102, 121, 15, "激 活"); ActiveButton.SetFrame(null, 323); ActiveButton.SetTextOffset(-3, 1); ActiveButton.OnClick = function() { local T = { op = 20059013 } SendPackEx(T); }.bindenv(this); ActiveButton.SetCallBackFunc(function(Win) { if (!BaseInfo.isVip) Win.Visible = true; else Win.Visible = false; }.bindenv(this)) AddChild(ActiveButton); } //绘制等级数字 function DrawNumber(num, ...) { num = num.tostring(); local x = X + 38; local y = Y + 110; if (num.len() == 2) x = X + 28; for (local i = 0; i< num.len(); i++) { local n = num.slice(i, i + 1); n = n.tointeger(); local Img = "interface2/ui/aradpass/chn/aradpassnum.img"; if (BaseInfo.isVip) Img = "interface2/ui/aradpass/chn/aradpassnumy.img"; L_sq_DrawImg(Img, n, x + (i * 18), y); } } //绘制等级数字 function DrawSmallNumber(num, bx) { num = num.tostring(); local x = X + 38 + bx; local y = Y + 250; if (num.len() == 2) x = X + 33 + bx; for (local i = 0; i< num.len(); i++) { local n = num.slice(i, i + 1); n = n.tointeger(); local Img = "interface2/ui/aradpass/chn/aradpassnum.img"; if (BaseInfo.isVip) Img = "interface2/ui/aradpass/chn/aradpassnumy.img"; L_sq_DrawImg(Img, n, x + (i * 9), y, 0, sq_RGBA(255, 255, 255, 255), 0.5, 0.5); } } //绘制主界面 function DrawMain(obj) { //Item信息框一般为211的宽度 L_sq_DrawWindow(X, Y + 10, 540, 420, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13); L_sq_DrawWindow(X + 6, Y + 45, 528, 384, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13); //绘制背景框标题栏 L_sq_DrawImg("interface2/ui/aradpass/chn/aradpassmain.img", 0, X + 1, Y); //绘制主题栏 L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 0, X + 11, Y + 50); L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass_banner.img", 0, X + 11, Y + 50); L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 3, X + 547 - 252, Y + 207 - 47); //绘制等级与经验值 MyPassLevel = BaseInfo.Exp / 1000 + 1; DrawNumber(MyPassLevel); local jystr = (BaseInfo.Exp % 1000) + " / " + 1000; L_sq_DrawCode(jystr, X + 50 - LenheartTextClass.GetStringLength(jystr) / 2, Y + 50 + 20 + 80, sq_RGBA(179, 169, 135, 255), 0, 1); if (BaseInfo.isVip) { L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 6, X + 11 + 22, Y + 50 + 24); } //绘制战令名 L_sq_DrawImg("interface2/ui/aradpass/chn/aradpassl.img", 0, X + 11 + 91, Y + 50 + 20); //绘制时装套装名 local szstr = BaseInfo.Apn; // local szstr = "使用时,选择的装备无论目前强化 /增幅数值多寡"; L_sq_DrawCode(szstr, X + 500 - LenheartTextClass.GetStringLength(szstr) / 2, Y + 192, sq_RGBA(179, 169, 135, 255), 0, 1); //绘制结束时间 L_sq_DrawCode("距离结束还有" + BaseInfo.EndTime + "天", X + 11 + 91, Y + 50 + 20 + 31, sq_RGBA(134, 120, 79, 255), 0, 1); //绘制主要奖励框 for (local i = 0; i< 5; i++) { L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 4, X + 11 + 91 + (36 * i), Y + 31 + 124); DrawItemEx(X + 11 + 95 + (36 * i), Y + 33 + 124, BaseInfo.showItemIds[i], 1); } } //上层绘制 function DrawTop(obj) { //绘制标签栏的感叹号 foreach(Pos, Value in Title) { //绘制完成事件的感叹号 if (TabSuccessTips[Pos] == 1) { L_sq_DrawImg("interface/Lenheartwindowcommon.img", 301, X + 58 + (Pos * 62), Y + 31, 0, sq_RGBA(255, 255, 255, 210), 0.8, 0.8); } } } function Show(obj) { if (!BaseInfo) return; DrawMain(obj); LenheartNewUI_Windows.Show(obj); DrawTop(obj); } //逻辑入口 function Proc(obj) { LenheartNewUI_Windows.SyncPos(X, Y); //主动调用子对象窗口的Proc foreach(Object in Childrens) { if (Object instanceof LenheartNewUI_Windows) Object.Proc(obj); } } function GetBaseInfo() { local T = { op = 20059001 } SendPackEx(T); local T2 = { op = 20059005 } SendPackEx(T2); } function GetPlayerReward() { local T = { op = 20059003 } SendPackEx(T); } //开启界面回调 function OpenCallBack() { GetBaseInfo(); GetPlayerReward(); Visible = true; ResetFocus(); } } getroottable().rawdelete("AradPass_Obj"); function Lenheart_AradPass_Fun(obj) { local RootTab = getroottable(); if (!RootTab.rawin("AradPass_Obj")) { RootTab.rawset("AradPass_Obj", true); local Win = LenheartNewUI_CreateWindow(AradPassC, "阿拉德战令窗口", ((getroottable().Rindro_Scr_Width - 558) / 2).tointeger(), 46, 558, 484, 15); EventList_Obj.AddEvent("阿拉德战令", 928, Win, "interface2/hud/information_button/information_button_cn.img"); } } getroottable()["LenheartFuncTab"].rawset("AradPassFuncN", Lenheart_AradPass_Fun);