Rindro-Sqr/Project/SeriaZeal/SeriaZeal.nut

297 lines
9.9 KiB
Plaintext

/*
文件名:SeriaZeal.nut
路径:Project/SeriaZeal/SeriaZeal.nut
创建日期:2025-12-08 22:06
文件用途:
*/
class SeriaZealC extends LenheartNewUI_Windows {
//调试模式
// DeBugMode = true;
//不是窗口
// NoWindow = true;
//是否可见
Visible = false;
Img = Rindro_Image("interface2/guidesystem/welcome.img");
//使命信息集合
QuestInfo = null;
//使命按钮
QuestBtn = null;
//累计信息集合
AccumInfo = null;
//累计按钮
AccumBtn = null;
//累计次数文本
AccumStr = ["5", "10", "15", "20", "30"];
//已完成的累计次数
AccumCount = 0;
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
Childrens = [];
//注册控件
RegisterWidget();
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
QuestInfo = [{
State = 1,
Name = "登录游戏",
CurC = 1,
MaxC = 1
},
{
State = 0,
Name = "消耗150点疲劳值",
CurC = 75,
MaxC = 150
},
{
State = 0,
Name = "通关 <魂·比尔马克帝国试验场> 3次",
CurC = 0,
MaxC = 3
},
{
State = 0,
Name = "通关 <魂·悲鸣洞穴> 3次",
CurC = 2,
MaxC = 3
},
{
State = 2,
Name = "完成每日任务 <改变命运的钥匙> 1次",
CurC = 1,
MaxC = 1
},
];
Pack_Control.rawset(20101002, function(Chunk) {
local Jso = Json.Decode(Chunk);
AccumCount = Jso.num;
AccumInfo = [];
foreach(value in Jso.jls) {
local T = {
Item = value.itemId,
Count = value.itemNum,
Str = value.needNum.tostring(),
State = value.state
}
AccumInfo.append(T);
}
QuestInfo = [];
foreach(value in Jso.rws) {
local T = {
State = value.state,
Name = value.name,
CurC = value.dqnum,
MaxC = value.num
}
QuestInfo.append(T);
}
}.bindenv(this));
SendPackEx({
op = 20101001
});
}
function RegisterWidget() {
//关闭按钮
local CloseButton = LenheartNewUI_BaseButton(682, 4, 11, 12, "interface/lenheartwindowcommon.img", 276);
CloseButton.OnClick = function() {
this.Visible = false;
}.bindenv(this);
Childrens.append(CloseButton);
QuestBtn = [];
AccumBtn = [];
for (local i = 0; i< 5; i++) {
//确认按钮
local ButtonBuffer = LenheartNewUI_ButtonText(582, 177 + (i * 47), 15, "完成");
ButtonBuffer.DWidth = -4;
ButtonBuffer.Width = 52;
ButtonBuffer.Data = i;
ButtonBuffer.OnClickEx = function(Btn) {
if (!Btn.Visible || Btn.State == 8) return;
if (!QuestInfo) return;
if (QuestInfo[Btn.Data].State == 2) {
SendPackEx({
op = 20101003,
index = Btn.Data
});
}
}.bindenv(this);
ButtonBuffer.SetCallBackFunc(function(Btn) {
if (!QuestInfo) return;
if (QuestInfo[Btn.Data].State == 2) {
Btn.SetTextOffset(-4, 1);
Btn.TextStr = "完成";
Btn.Visible = true;
Btn.State = 0;
} else if (QuestInfo[Btn.Data].State == 0) {
Btn.SetTextOffset(-10, 2);
Btn.TextStr = "未完成";
Btn.State = 8;
} else if (QuestInfo[Btn.Data].State == 1) {
Btn.SetTextOffset(-10, 2);
Btn.TextStr = "已完成";
Btn.State = 8;
Btn.Visible = true;
}
}.bindenv(this));
QuestBtn.append(ButtonBuffer);
AddChild(ButtonBuffer);
local AccmButton = LenheartNewUI_ButtonText(310 + (i * 70), 492, 15, "完成");
AccmButton.DWidth = -4;
AccmButton.Width = 52;
AccmButton.Data = i;
AccmButton.OnClickEx = function(Btn) {
if (!Btn.Visible || Btn.State == 8) return;
if (!AccumInfo) return;
if (AccumInfo[Btn.Data].State == 2) {
SendPackEx({
op = 20101005,
index = Btn.Data
});
}
}.bindenv(this);
AccmButton.SetCallBackFunc(function(Btn) {
if (!AccumInfo) return;
if (AccumInfo[Btn.Data].State == 2) {
Btn.SetTextOffset(-4, 1);
Btn.TextStr = "领取";
Btn.Visible = true;
} else if (AccumInfo[Btn.Data].State == 0) {
Btn.SetTextOffset(-10, 2);
Btn.TextStr = "未达成";
Btn.State = 8;
} else if (AccumInfo[Btn.Data].State == 1) {
Btn.SetTextOffset(-10, 2);
Btn.TextStr = "已领取";
Btn.State = 8;
Btn.Visible = true;
}
}.bindenv(this));
AccumBtn.append(AccmButton);
AddChild(AccmButton);
}
//关闭按钮
local CloseButton = LenheartNewUI_BaseButton(682, 4, 11, 12, "interface/lenheartwindowcommon.img", 276);
CloseButton.OnClick = function() {
this.Visible = false;
}.bindenv(this);
Childrens.append(CloseButton);
}
//绘制主界面
function DrawMain(obj) {
//背景框
DrawNineBox(X, Y, 700, 546, "interface/lenheartwindowcommon.img", 213);
//标题
DrawWindowTitle(703);
//绘制标题名
L_sq_DrawCode("赛丽亚的热忱", X + 315, Y + 6, sq_RGBA(230, 200, 155, 255), 0, 1);
//嵌套背景框
DrawNineBox(X + 5, Y + 27, 692, 514, "interface/lenheartwindowcommon.img", 97);
//背景
Img.DrawPng(0, X + 8, Y + 32);
if (!AccumInfo) return;
local YOffset = -18;
//赛丽亚的热忱文字
Img.DrawPng(5, X + 314, Y + 68 + YOffset);
L_sq_DrawCode("你好,亲爱的冒险家,我是赛丽亚。", X + 350, Y + 118 + YOffset, sq_RGBA(230, 200, 155, 255), 0, 1);
L_sq_DrawCode("我为来到阿拉德的冒险家准备了一些小礼物。", X + 350, Y + 132 + YOffset, sq_RGBA(230, 200, 155, 255), 0, 1);
//使命框
Img.DrawPng(6, X + 290, Y + 150 + YOffset);
//累计次数奖励框
Img.DrawPng(53, X + 291, Y + 430 + YOffset);
for (local i = 0; i< 5; i++) {
//使命描述
L_sq_DrawCode(QuestInfo[i].Name, X + 352, Y + 190 + (i * 47) + YOffset, sq_RGBA(230, 200, 155, 255), 0, 1);
//使命进度条
if (QuestInfo[i].CurC == QuestInfo[i].MaxC) Img.DrawPng(8, X + 351, Y + 214 + (i * 47) + YOffset);
else {
local Rate = QuestInfo[i].CurC.tofloat() / QuestInfo[i].MaxC.tofloat();
setClip(X + 351, Y + 214 + (i * 47) + YOffset, X + 351 + (222 * Rate).tointeger(), Y + 222 + (i * 47) + YOffset);
Img.DrawPng(9, X + 351, Y + 214 + (i * 47) + YOffset);
releaseClip();
}
//使命进度文字
L_sq_DrawCode(QuestInfo[i].CurC + "/" + QuestInfo[i].MaxC, X + 352 + 222 / 2 - LenheartTextClass.GetStringLength(QuestInfo[i].CurC + "/" + QuestInfo[i].MaxC) / 2, Y + 212 + (i * 47) + YOffset, sq_RGBA(230, 200, 155, 255), 0, 1);
//完成使命的这遮罩框
if (QuestInfo[i].State == 1) {
Img.DrawPng(7, X + 305, Y + 189 + (i * 47) + YOffset);
}
}
for (local i = 0; i< 5; i++) {
local ImgIndex = 62;
if (i >= 2) ImgIndex = 63;
//累计奖励Item框
Img.DrawPng(ImgIndex, X + 320 + (i * 70), Y + 460 + YOffset);
L_sq_DrawCode(AccumInfo[i].Str + "次", X + 338 + (i * 70) - LenheartTextClass.GetStringLength(AccumInfo[i].Str + "次") / 2, Y + 461 + YOffset, sq_RGBA(230, 200, 155, 255), 0, 1);
DrawItemBase(X + 322 + (i * 70), Y + 475 + YOffset, AccumInfo[i].Item, AccumInfo[i].Count);
}
L_sq_DrawCode("已累计完成使命次数: " + AccumCount, X + 302, Y + 438 + YOffset, sq_RGBA(230, 200, 155, 255), 0, 1);
}
function Show(obj) {
DrawMain(obj);
LenheartNewUI_Windows.Show(obj);
}
//逻辑入口
function Proc(obj) {
LenheartNewUI_Windows.SyncPos(X, Y);
}
function OpenCallBack() {
Visible = true;
SendPackEx({
op = 20101001
});
}
}
L_Windows_List <- [];
getroottable().rawdelete("LenheartPluginsInitFlag");
getroottable().rawdelete("EventList_Obj")
getroottable().rawdelete("SeriaZeal_Obj");
function Lenheart_SeriaZeal_Fun(obj) {
local RootTab = getroottable();
if (!RootTab.rawin("SeriaZeal_Obj")) {
RootTab.rawset("SeriaZeal_Obj", true);
local Win = LenheartNewUI_CreateWindow(SeriaZealC, "赛丽亚的热忱窗口", ((getroottable().Rindro_Scr_Width - 700) / 2).tointeger(), 30, 700, 544, 28);
EventList_Obj.AddEvent("赛丽亚的热忱", 256, Win, "interface2/hud/information_button/information_button_cn.img");
}
}
getroottable()["LenheartFuncTab"].rawset("SeriaZealFuncN", Lenheart_SeriaZeal_Fun);