361 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			361 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| /*
 | |
| 文件名: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); |