282 lines
7.9 KiB
Plaintext
282 lines
7.9 KiB
Plaintext
|
|
/*
|
||
|
|
文件名:Tomb.nut
|
||
|
|
路径:Plugins/Tomb/Tomb.nut
|
||
|
|
创建日期:2023-10-28 17:40
|
||
|
|
文件用途:
|
||
|
|
*/
|
||
|
|
|
||
|
|
|
||
|
|
class TombC extends BasicsDrawTool {
|
||
|
|
WindowObj = null; //窗口对象
|
||
|
|
MainState = false; //主状态
|
||
|
|
X = 300;
|
||
|
|
Y = 160;
|
||
|
|
|
||
|
|
//层数
|
||
|
|
Index = 0;
|
||
|
|
//总层数
|
||
|
|
MaxIndex = 0;
|
||
|
|
//道具
|
||
|
|
ItemInfoObject = null;
|
||
|
|
//需要的道具名字
|
||
|
|
ItemName = null;
|
||
|
|
//需要的道具数量
|
||
|
|
ItemCount = null;
|
||
|
|
|
||
|
|
UseFlag = false;
|
||
|
|
EndFlag = false;
|
||
|
|
|
||
|
|
function GetInfoCallBack(Chunk) {
|
||
|
|
Sout("收到包 : \n %L", Chunk);
|
||
|
|
ItemInfoObject = null;
|
||
|
|
local Jso = Json.Decode(Chunk);
|
||
|
|
Index = Jso.index;
|
||
|
|
MaxIndex = Jso.endSize;
|
||
|
|
|
||
|
|
ItemName = Jso.useItemInfo.Name;
|
||
|
|
ItemCount = Jso.useNum;
|
||
|
|
|
||
|
|
EndFlag = !Jso.end;
|
||
|
|
|
||
|
|
ItemInfoObject = Jso.itemInfo;
|
||
|
|
if (ItemInfoObject.Name2.len() == 0)
|
||
|
|
ItemInfoObject.Name2 = "Rindro-Team";
|
||
|
|
}
|
||
|
|
|
||
|
|
function GetInfo() {
|
||
|
|
local T = {
|
||
|
|
op = 20062013
|
||
|
|
}
|
||
|
|
SendPack(T);
|
||
|
|
}
|
||
|
|
|
||
|
|
//失败
|
||
|
|
function OpenTombCallBack_L(Chunk) {
|
||
|
|
// Sout("收到包 : \n %L", Chunk);
|
||
|
|
}
|
||
|
|
//成功
|
||
|
|
function OpenTombCallBack_S(Chunk) {
|
||
|
|
// Sout("收到包 : \n %L", Chunk);
|
||
|
|
}
|
||
|
|
|
||
|
|
//拔剑
|
||
|
|
function OpenTomb() {
|
||
|
|
local T = {
|
||
|
|
op = 20062003,
|
||
|
|
index = Index
|
||
|
|
}
|
||
|
|
SendPack(T);
|
||
|
|
}
|
||
|
|
|
||
|
|
function GetMyStkFlagCallBack(Chunk) {
|
||
|
|
// Sout("收到包 : \n %L", Chunk);
|
||
|
|
local Jso = Json.Decode(Chunk);
|
||
|
|
UseFlag = Jso.useFlag;
|
||
|
|
}
|
||
|
|
|
||
|
|
//获取自身材料
|
||
|
|
function GetMyStkFlag() {
|
||
|
|
local T = {
|
||
|
|
op = 20062019
|
||
|
|
}
|
||
|
|
SendPack(T);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
constructor() {
|
||
|
|
//获取基础配置回调包
|
||
|
|
Pack_Control.rawset(20062014, GetInfoCallBack.bindenv(this));
|
||
|
|
//拔剑结果包
|
||
|
|
Pack_Control.rawset(20062008, OpenTombCallBack_L.bindenv(this));
|
||
|
|
Pack_Control.rawset(20062006, OpenTombCallBack_S.bindenv(this));
|
||
|
|
//自身材料是否足够回调包
|
||
|
|
Pack_Control.rawset(20062020, GetMyStkFlagCallBack.bindenv(this));
|
||
|
|
//获取自身材料是否足够
|
||
|
|
|
||
|
|
|
||
|
|
GetInfo();
|
||
|
|
GetMyStkFlag();
|
||
|
|
}
|
||
|
|
|
||
|
|
QuestTips = false;
|
||
|
|
|
||
|
|
//绘制主界面
|
||
|
|
function DrawMain(obj) {
|
||
|
|
// if (!ItemInfoObject) return;
|
||
|
|
//Item信息框一般为211的宽度
|
||
|
|
L_sq_DrawWindow(X, Y, 210, 200, "interface/lenheartwindowcommon.img", 0, 11, 12, 11, 13);
|
||
|
|
|
||
|
|
//绘制背景
|
||
|
|
L_sq_DrawImg("interface2/event/chn_event_2015/chn_tomb_ui.img", 0, X + 10, Y + 16);
|
||
|
|
|
||
|
|
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + 150, Y + 196, 16, 16)) {
|
||
|
|
L_sq_DrawImg("interface/lenheartwindowcommon.img", 240, X + 150, Y + 196);
|
||
|
|
QuestTips = true;
|
||
|
|
} else {
|
||
|
|
L_sq_DrawImg("interface/lenheartwindowcommon.img", 239, X + 150, Y + 196);
|
||
|
|
QuestTips = false;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
//关闭按钮
|
||
|
|
local CloseButton = LenheartBaseButton(X + 206, Y + 1, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||
|
|
CloseButton.Show();
|
||
|
|
if (CloseButton.isLBActive()) {
|
||
|
|
obj.sq_PlaySound("CLICK_BUTTON2");
|
||
|
|
L_sq_UseSkill(DIK_ESCAPE);
|
||
|
|
MainState = false;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
if (!UseFlag || !EndFlag) {
|
||
|
|
local Str = "材料不足";
|
||
|
|
if (UseFlag && !EndFlag) Str = "活动结束";
|
||
|
|
local OpenButton = LenheartButtonText(X + 70, Y + 120 + 20 + 31 + 20, 22, Str);
|
||
|
|
OpenButton.SetFrame(null, 323);
|
||
|
|
OpenButton.SetTextOffset(-3, 1);
|
||
|
|
OpenButton.Show();
|
||
|
|
} else {
|
||
|
|
//拔剑按钮
|
||
|
|
local OpenButton = LenheartButtonText(X + 70, Y + 120 + 20 + 31 + 20, 22, "拔 剑");
|
||
|
|
OpenButton.SetFrame(null, 323);
|
||
|
|
OpenButton.SetTextOffset(6, 1);
|
||
|
|
OpenButton.Show();
|
||
|
|
if (OpenButton.isLBActive()) {
|
||
|
|
obj.sq_PlaySound("CLICK_BUTTON2");
|
||
|
|
AniState = 1;
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
DrawAni(obj);
|
||
|
|
|
||
|
|
|
||
|
|
if (AniState == 0) T_DrawDynamicAni(obj, "common/tomb/stay.ani", X + 113, Y + 179, "TombEffectStay");
|
||
|
|
|
||
|
|
//特殊奖励
|
||
|
|
if (ItemInfoObject) DrawItemEx(X + 96, Y + 120, ItemInfoObject.Id, 1);
|
||
|
|
}
|
||
|
|
|
||
|
|
AniState = 0;
|
||
|
|
|
||
|
|
function DrawAni(obj) {
|
||
|
|
if (AniState == 1) {
|
||
|
|
local Ani = T_DrawDynamicAni(obj, "common/tomb/pick.ani", X + 113, Y + 179, "TombEffect");
|
||
|
|
if (sq_IsEnd(Ani)) {
|
||
|
|
sq_Rewind(Ani);
|
||
|
|
AniState = 0;
|
||
|
|
OpenTomb();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
//开启界面回调
|
||
|
|
function OpenClassCallBack() {
|
||
|
|
|
||
|
|
L_NewWindows("Lenheart", 170, 0x65535);
|
||
|
|
local W = sq_GetPopupWindowMainCotrol(170);
|
||
|
|
W.SetVisible(false);
|
||
|
|
W.SetEnable(false);
|
||
|
|
GetInfo();
|
||
|
|
GetMyStkFlag();
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
//绘制道具相信信息
|
||
|
|
ItemObject = null;
|
||
|
|
ItemInfoDrawS = null;
|
||
|
|
|
||
|
|
function DrawItemInfo(obj) {
|
||
|
|
if (ItemInfoDrawS && ItemInfoObject) {
|
||
|
|
if (!ItemObject) {
|
||
|
|
local ItemId = ItemInfoDrawS.ItemId;
|
||
|
|
// if (ItemInfoObject.rawin(ItemId)) {
|
||
|
|
ItemObject = ItemInfoClass(ItemInfoObject);
|
||
|
|
// }
|
||
|
|
}
|
||
|
|
ItemObject.Show(ItemInfoDrawS.X, ItemInfoDrawS.Y - ItemObject.PageLength);
|
||
|
|
} else {
|
||
|
|
ItemObject = null;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//绘制入口
|
||
|
|
function Draw(obj) {
|
||
|
|
ItemInfoDrawS = null;
|
||
|
|
if (MainState) {
|
||
|
|
if (WindowObj) {
|
||
|
|
DrawMain(obj);
|
||
|
|
DrawSuspensionLayer(obj);
|
||
|
|
WindowObj.Show(obj);
|
||
|
|
X = WindowObj.X;
|
||
|
|
Y = WindowObj.Y;
|
||
|
|
|
||
|
|
DrawItemInfo(obj);
|
||
|
|
} else {
|
||
|
|
WindowObj = LenheartWindow(X, Y, 224, 228, 28); //坐标 大小 标题栏高度
|
||
|
|
// WindowObj.DeBugMode = true;
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
if (WindowObj && WindowObj.YMouseSw == false) {
|
||
|
|
IMouse.ReleaseMouseClick();
|
||
|
|
WindowObj.YMouseSw = true;
|
||
|
|
WindowObj = null;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//逻辑入口
|
||
|
|
function Proc(obj) {
|
||
|
|
if (KeyPressNB.isKeyPress(48, "TombCloseKey")) {
|
||
|
|
MainState = false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
ItemInfoDrawS = null;
|
||
|
|
//绘制道具带道具信息
|
||
|
|
function DrawItemEx(X, Y, Id, Count) {
|
||
|
|
L_Sq_DrawItem(X, Y, Id, Count, 0, 0, 0);
|
||
|
|
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X, Y, 24, 24)) {
|
||
|
|
ItemInfoDrawS = {};
|
||
|
|
ItemInfoDrawS.X <- X;
|
||
|
|
ItemInfoDrawS.Y <- Y;
|
||
|
|
ItemInfoDrawS.ItemId <- Id;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
//悬浮层
|
||
|
|
function DrawSuspensionLayer(obj) {
|
||
|
|
//任务提示
|
||
|
|
if (QuestTips) {
|
||
|
|
L_sq_DrawWindow(X + 40, Y + 150, 224, 40, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||
|
|
local QuestTipsStr = "背包在存在道具 [ " + ItemName + " ] x" + ItemCount + "个时,可参与拔剑活动。\n当前拔剑层数为 [ " + (Index + 1) + " ]层,总层数为 [ " + (MaxIndex + 1) + " ]层。";
|
||
|
|
local QuestTipsArray = L_sq_GetStringDrawArray(QuestTipsStr, 251);
|
||
|
|
foreach(Pos, va in QuestTipsArray) {
|
||
|
|
// Sout("文本内容嗯: %L", va);
|
||
|
|
L_sq_DrawCode(va, X + 40 + 7, Y + 7 + 150 + (Pos * 16), 0xFFFFFFFF, 1, 1);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
function Tomb(obj) {
|
||
|
|
local RootTab = getroottable();
|
||
|
|
if (!RootTab.rawin("TombCObj")) {
|
||
|
|
local Cobj = TombC();
|
||
|
|
RootTab.rawset("TombCObj", Cobj);
|
||
|
|
EventIcon("拔剑挑战", 271, 271, Cobj);
|
||
|
|
} else {
|
||
|
|
RootTab["TombCObj"].Proc(obj);
|
||
|
|
RootTab["TombCObj"].Draw(obj);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (getroottable().rawin("LenheartFuncTab")) {
|
||
|
|
getroottable()["LenheartFuncTab"].rawset("Tomb_LenheartFunc", Tomb);
|
||
|
|
} else {
|
||
|
|
local T = {};
|
||
|
|
T.rawset("Tomb_LenheartFunc", Tomb);
|
||
|
|
getroottable().rawset("LenheartFuncTab", T);
|
||
|
|
}
|