140 lines
4.0 KiB
Plaintext
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); |