Rindro-Sqr/Project/AradPass/AradPass.nut

361 lines
10 KiB
Plaintext
Raw Normal View History

2024-09-16 17:09:36 +08:00
/*
文件名: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");
2024-09-16 17:09:36 +08:00
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);
2024-09-27 14:04:23 +08:00
EventList_Obj.AddEvent("阿拉德战令", 928, Win, "interface2/hud/information_button/information_button_cn.img");
2024-09-16 17:09:36 +08:00
}
}
getroottable()["LenheartFuncTab"].rawset("AradPassFuncN", Lenheart_AradPass_Fun);