/* 文件名: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); }