Rindro-Sqr/Project/HellExLogic/HellExLogic.nut

140 lines
4.0 KiB
Plaintext

/*
文件名:HellExLogic.nut
路径:Project/HellExLogic/HellExLogic.nut
创建日期:2024-08-09 11:11
文件用途:
*/
class HellExLogicC extends LenheartNewUI_Windows {
//调试模式
// DeBugMode = true;
//不是窗口
NoWindow = true;
//是否可见
Visible = true;
//被击数
HitCount = 0;
//总被击次数
MaxHitCount = 50;
//深渊派对难度
Difficulty = 1;
//难度文字数组
DifficultyStr = ["未开启深渊", "非常困难", "困难"];
//深渊状态 0进行 1成功 2失败
HellState = 0;
function OpenWindowCallBack(Chunk) {
local Jso = Json.Decode(Chunk);
MaxHitCount = Jso.HitCounts;
Difficulty = Jso.Diff;
HitCount = 0;
HellState = 0;
Visible = true;
ResetFocus();
}
function HitSucCallBack(Chunk) {
local obj = sq_getMyCharacter();
obj = sq_GetCNRDObjectToActiveObject(obj);
sq_SendCreatePassiveObjectPacket(obj, 85905, 100, 0, 0, 0, obj.getDirection());
try {
onHellDungeonHitCountMax(obj, Difficulty);
} catch (exception) {
}
}
function HellFail(Chunk) {
HellState = 2;
}
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
Childrens = [];
//注册控件
RegisterWidget();
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
//开启界面回包
Pack_Control.rawset(20069006, OpenWindowCallBack.bindenv(this));
//击打次数到了
Pack_Control.rawset(20069004, HitSucCallBack.bindenv(this));
//深渊派对失败
Pack_Control.rawset(20069008, HellFail.bindenv(this));
getroottable().sq_SendHitConfirmPacket <- HitLogic.bindenv(this);
}
function RegisterWidget() {
//关闭按钮
local CloseButton = LenheartNewUI_BaseButton(278, 8, 11, 12, "interface/windowcommon.img", 276);
CloseButton.OnClick = function() {
this.Visible = false;
}.bindenv(this);
Childrens.append(CloseButton);
}
//HitLogic
function HitLogic() {
if (HellState == 2) return;
local T = {
op = 20069003
}
SendPackEx(T);
HitCount++;
}
//绘制主界面
function DrawMain(obj) {
//Item信息框一般为211的宽度
L_sq_DrawWindow(X, Y, 260, 80, "interface/windowcommon.img", 204, 4, 14, 4, 14);
L_sq_DrawCode("封印之门的进展情况", X + 82, Y + 12, sq_RGBA(230, 200, 155, 250), 1, 1);
L_sq_DrawCode("- 被击数", X + 6, Y + 40, sq_RGBA(230, 200, 155, 250), 1, 1);
L_sq_DrawCode("- 深渊派对难度:", X + 6, Y + 58, sq_RGBA(230, 200, 155, 250), 1, 1);
local Color = sq_RGBA(230, 200, 155, 250);
if (HitCount >= MaxHitCount) Color = sq_RGBA(255, 50, 50, 250);
local HitStr = HitCount + "/" + MaxHitCount;
L_sq_DrawCode(HitStr, X + 254 - LenheartTextClass.GetStringLength(HitStr), Y + 40, Color, 1, 1);
L_sq_DrawCode(DifficultyStr[Difficulty], X + 254 - LenheartTextClass.GetStringLength(DifficultyStr[Difficulty]), Y + 58, sq_RGBA(255, 50, 50, 250), 1, 1);
if (HellState == 2) {
}
}
function Show(obj) {
DrawMain(obj);
LenheartNewUI_Windows.Show(obj);
}
//逻辑入口
function Proc(obj) {
//如果不在副本中
if (sq_GetCurrentModuleType() == 1) {
if (Visible) CloseWindow();
}
LenheartNewUI_Windows.SyncPos(X, Y);
}
}
getroottable().rawdelete("HellExLogic_Obj");
function Lenheart_HellExLogic_Fun(obj) {
local RootTab = getroottable();
if (!RootTab.rawin("HellExLogic_Obj")) {
RootTab.rawset("HellExLogic_Obj", true);
LenheartNewUI_CreateWindow(HellExLogicC, "深渊派对特殊逻辑窗口", ((getroottable().Rindro_Scr_Width - 261)).tointeger(), 64, 260, 80, 80);
}
}
getroottable()["LenheartFuncTab"].rawset("HellExLogicFuncN", Lenheart_HellExLogic_Fun);