/* 文件名:Tuguan.nut 路径:Project/Tuguan/Tuguan.nut 创建日期:2024-08-06 21:53 文件用途:土罐 */ class Tuguan_NewC extends LenheartNewUI_Windows { //调试模式 // DeBugMode = true; //默认显示状态需要是关闭 因为要通过收包打开 Visible = false; //初始化状态 InitState = false; //抽奖模式 OpenFlag = 1; //主界面音效播放开关 MainSoundsSw = 0; ASoundSw = 0; SSoundSw = 0; State = 0; BoxId = null; BoxCount = null; ProbabilityTab = "www.qq.com"; BoxWindowName = "土罐的黄金袖珍罐"; //Ani对象 P1_01 = null; P2_01 = null; P3_01 = null; P4_02 = null; MainEffAni = null; AniType = null; RewardObj = null; //界面回包 function TuguanConfigCallBack(Chunk) { local Jso = Json.Decode(Chunk); if (State == 0) { BoxId = Jso.BoxId; BoxCount = Jso.BoxCount; ProbabilityTab = Jso.ProbabilityTab; State = 2; } //读取物品名称 local ItemObject = L_sq_GetItem(BoxId); local NamePointer = L_sq_RA(ItemObject + 0x20); local Name = NativePointer(L_sq_I2P(NamePointer)).readUnicodeString(); BoxWindowName = Name; Visible = true; //初始化完成 InitState = true; } PackTime = 0; //抽奖回包 function TuguanRewardCallBack(Chunk) { local Jso = Json.Decode(Chunk); AniType = Jso.AniType; BoxCount = Jso.BoxCount; RewardObj = Jso.itemBuffers; PackTime = Clock(); State = 3; } //绘制抽奖动画 function DrawRewardAni(obj) { //停止斗篷风声 obj.stopSound(2022121701); P1_01 = T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/" + AniType + "/" + AniType + "1_01.ani", X + 20, Y + 30, "TuguanSystemDrawReward" + AniType + "1_01" + PackTime); //土罐眼睛闪光 if (P1_01 && sq_GetAnimationFrameIndex(P1_01) == 13) { if (AniType == "a" || AniType == "s") obj.sq_PlaySound("DANJIN_START_AS"); else obj.sq_PlaySound("DANJIN_START_N"); } if (P1_01 && sq_IsEnd(P1_01)) P2_01 = T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/" + AniType + "/" + AniType + "2_01.ani", X + 20, Y + 30, "TuguanSystemDrawReward" + AniType + "2_01" + PackTime); if (P2_01 && sq_GetAnimationFrameIndex(P2_01) == 0) { if (AniType == "b") obj.sq_PlaySound("DANJIN_SUMMON_B"); else if (AniType == "a") obj.sq_PlaySound("DANJIN_SUMMON_A"); else if (AniType == "s") obj.sq_PlaySound("DANJIN_SUMMON_S"); } if (P2_01 && sq_GetAnimationFrameIndex(P2_01) == 8) { if (AniType == "b") obj.sq_PlaySound("DANJIN_GAMBLE_B"); else if (AniType == "a") obj.sq_PlaySound("DANJIN_GAMBLE_A"); else if (AniType == "s") obj.sq_PlaySound("DANJIN_GAMBLE_S"); } if (P2_01 && sq_IsEnd(P2_01)) P3_01 = T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/" + AniType + "/" + AniType + "3_01.ani", X + 20, Y + 30, "TuguanSystemDrawReward" + AniType + "3_01" + PackTime); if (P3_01 && sq_IsEnd(P3_01)) P4_02 = T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/" + AniType + "/" + AniType + "4_02.ani", X + 20, Y + 30, "TuguanSystemDrawReward" + AniType + "4_02" + PackTime); if (P4_02 && sq_IsEnd(P4_02)) { P1_01 = null; P2_01 = null; P3_01 = null; P4_02 = null; obj.sq_PlaySound("DANJIN_GAMBLE_FIN"); State = 4; } } //绘制奖励列表 function DrawRewardItem(obj) { //单抽 if (OpenFlag == 1) { T_DrawStayAni(obj, "common/tuguan/main.ani", X + 20, Y + 30, 5, "TuguanRewardMain"); L_sq_DrawCode("最后结果", (X - 195) + 377, (Y - 100) + 182, sq_RGBA(255, 177, 0, 250), 1, 1); T_DrawStayAni(obj, "common/tuguan/main.ani", X + 20 + 141, Y + 30 + 91, 7, "TuguanRewardMainOneX"); for (local z = 0; z< 2; z++) { //绘制槽 T_DrawStayAni(obj, "common/tuguan/main.ani", X + 20 + 141 + 9 + (z * 34), Y + 30 + 91 + 9, 8, "TuguanRewardMainOneXx"); } for (local x = 0; x< 2; x++) { //品级背景光 local Rarity = RewardObj[0][x]["typ"]; switch (Rarity) { case 2: T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/light_iconslot.ani", X + 20 + 141 + 9 + (x * 34), Y + 30 + 91 + 9, "TuguanRewardMainoieff" + Rarity + PackTime); break; case 3: T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/light_iconslot_1.ani", X + 20 + 141 + 9 + (x * 34), Y + 30 + 91 + 9, "TuguanRewardMainoieff" + Rarity + PackTime); break; } } for (local i = 0; i< 2; i++) { local ItemId = RewardObj[0][i]["itemid"]; local ItemCount = RewardObj[0][i]["num"]; //绘制物品 DrawItemEx(X + 20 + 141 + 9 + (i * 34) + 3, Y + 30 + 91 + 9 + 3, ItemId, ItemCount); //物品刷新光 local Ani = T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/common_excute_icon_front_a.ani", X + 20 + 141 + 13 + (i * 34), Y + 30 + 91 + 12, "TuguanRewardMainoieff" + i + PackTime); //品级闪烁光 local Rarity = RewardObj[0][i]["typ"]; switch (Rarity) { case 2: if (ASoundSw == 0) { obj.sq_PlaySound("DANJIN_GAMBLE_CLASS_A"); ASoundSw = 1; } local RAni = T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/iconslot_00.ani", X + 20 + 141 + 13 + (i * 34), Y + 30 + 91 + 12, "TuguanRewardMainoreff" + 2 + PackTime); break; case 3: if (SSoundSw == 0) { obj.sq_PlaySound("DANJIN_GAMBLE_FANFARE"); SSoundSw = 1; } local RAni = T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/iconslot_01.ani", X + 20 + 141 + 13 + (i * 34), Y + 30 + 91 + 12, "TuguanRewardMainoreff" + 3 + PackTime); break; } } L_sq_DrawCode("祝你发大财!", (X - 195) + 371, (Y - 100) + 320, sq_RGBA(255, 177, 0, 250), 1, 1); } //10连抽 else if (OpenFlag == 10) { T_DrawStayAni(obj, "common/tuguan/main.ani", X + 20, Y + 30, 6, "TuguanRewardMainT"); L_sq_DrawCode("最后结果", (X - 195) + 377, (Y - 100) + 142, sq_RGBA(255, 177, 0, 250), 1, 1); for (local i = 0; i< 10; i++) { local ofs = i; if (i > 7) ofs += 1; T_DrawStayAni(obj, "common/tuguan/main.ani", (X - 195) + 198 + 30 + ((ofs % 4) * 86), Y + 62 + ((ofs / 4) * 50), 7, "TuguanRewardMainTenX"); for (local y = 0; y< 2; y++) { //绘制槽 T_DrawStayAni(obj, "common/tuguan/main.ani", (X - 195) + 198 + 30 + 9 + ((ofs % 4) * 86) + (y * 34), Y + 62 + 9 + ((ofs / 4) * 50), 8, "TuguanRewardMainOneXx"); } for (local x = 0; x< 2; x++) { //品级背景光 local Rarity = RewardObj[i][x]["typ"]; switch (Rarity) { case 2: T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/light_iconslot.ani", (X - 195) + 198 + 30 + 10 + ((ofs % 4) * 86) + (x * 34), Y + 62 + 10 + ((ofs / 4) * 50), "TuguanRewardMainoieff" + Rarity + PackTime); break; case 3: T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/light_iconslot_1.ani", (X - 195) + 198 + 30 + 10 + ((ofs % 4) * 86) + (x * 34), Y + 62 + 10 + ((ofs / 4) * 50), "TuguanRewardMainoieff" + Rarity + PackTime); break; } } for (local z = 0; z< 2; z++) { local ItemId = RewardObj[i][z]["itemid"]; local ItemCount = RewardObj[i][z]["num"]; //绘制物品 DrawItemEx((X - 195) + 198 + 30 + 9 + ((ofs % 4) * 86) + (z * 34) + 3, Y + 62 + 9 + ((ofs / 4) * 50) + 3, ItemId, ItemCount); if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, (X - 195) + 198 + 30 + 9 + ((ofs % 4) * 86) + (z * 34) + 3, Y + 62 + 9 + ((ofs / 4) * 50) + 3, 24, 24)) { ItemInfoDrawS = {}; ItemInfoDrawS.X <- (X - 195) + 198 + 30 + 9 + ((ofs % 4) * 86) + (z * 34) + 3; ItemInfoDrawS.Y <- Y + 62 + 9 + ((ofs / 4) * 50) + 3; ItemInfoDrawS.ItemId <- ItemId; } //物品刷新光 local Ani = T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/common_excute_icon_front_a.ani", (X - 195) + 198 + 30 + 13 + ((ofs % 4) * 86) + (z * 34), Y + 62 + 12 + ((ofs / 4) * 50), "TuguanRewardMainoieff" + z + PackTime); //品级闪烁光 local Rarity = RewardObj[i][z]["typ"]; switch (Rarity) { case 2: if (ASoundSw == 0) { obj.sq_PlaySound("DANJIN_GAMBLE_CLASS_A"); ASoundSw = 1; } local RAni = T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/iconslot_00.ani", (X - 195) + 198 + 30 + 13 + ((ofs % 4) * 86) + (z * 34), Y + 62 + 12 + ((ofs / 4) * 50), "TuguanRewardMainoreff" + 2 + PackTime); break; case 3: if (SSoundSw == 0) { obj.sq_PlaySound("DANJIN_GAMBLE_FANFARE"); SSoundSw = 1; } local RAni = T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/iconslot_01.ani", (X - 195) + 198 + 30 + 13 + ((ofs % 4) * 86) + (z * 34), Y + 62 + 12 + ((ofs / 4) * 50), "TuguanRewardMainoreff" + 3); break; } } } L_sq_DrawCode("祝你发大财!", (X - 195) + 371, (Y - 100) + 336, sq_RGBA(255, 177, 0, 250), 1, 1); } MainEffAni = T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/background_excute_front_supreme.ani", X + 20, Y + 30, "TuguanSystemDrawRewardMainAniL" + PackTime); } //播放主界面音效 function PlayMainSounds(obj) { if (State == 2 && MainSoundsSw == 0) { obj.sq_PlaySound("DANJIN_START_LOOP", 2022121701); MainSoundsSw = 1; } if (State != 2 && State != 3) { obj.stopSound(2022121701); MainSoundsSw = 0; } if (State != 4) { SSoundSw = 0; ASoundSw = 0; } } constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { Childrens = []; //注册控件 RegisterWidget(); LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH); //土罐开启界面回包 Pack_Control.rawset(20071004, TuguanConfigCallBack.bindenv(this)); //抽奖奖励回包 Pack_Control.rawset(20071008, TuguanRewardCallBack.bindenv(this)); } function RegisterWidget() { //关闭按钮 local CloseButton = LenheartNewUI_BaseButton(386, 2, 11, 12, "interface/lenheartwindowcommon.img", 276); CloseButton.OnClick = function() { this.Visible = false; }.bindenv(this); Childrens.append(CloseButton); //单抽复选框 local OneOpenBtn = LenheartNewUI_SwitchButtonText(16 + 50, 30 + 253, "开启1个"); OneOpenBtn.ImgIndex = 358; OneOpenBtn.SetTextPos(12, 2); OneOpenBtn.Width = 76; OneOpenBtn.Height = 16; OneOpenBtn.OnClick = function() { switch (OpenFlag) { case 1: OpenFlag = 10; break; case 10: OpenFlag = 1; break; } State = 2; }.bindenv(this); OneOpenBtn.SetCallBackFunc(function(obj) { if (OpenFlag == 1) obj.State = 1; else obj.State = 0; }.bindenv(this)); AddChild(OneOpenBtn); //单抽复选框 local TenOpenBtn = LenheartNewUI_SwitchButtonText(16 + 50 + 204, 30 + 253, "开启10个"); TenOpenBtn.ImgIndex = 358; TenOpenBtn.SetTextPos(12, 2); TenOpenBtn.Width = 76; TenOpenBtn.Height = 16; TenOpenBtn.OnClick = function() { switch (OpenFlag) { case 1: OpenFlag = 10; break; case 10: OpenFlag = 1; break; } State = 2; }.bindenv(this); TenOpenBtn.SetCallBackFunc(function(obj) { if (OpenFlag == 10) obj.State = 1; else obj.State = 0; }.bindenv(this)); AddChild(TenOpenBtn); //搜索按钮 local ProbabilityButton = LenheartNewUI_ButtonText(18, 28 + 290, 5, "※查看概率"); ProbabilityButton.Idx = 74; //很小的图 这样就不会显示按钮了 ProbabilityButton.SetTextOffset(-14, 1); ProbabilityButton.OnClick = function() { L_Cmd("start iexplore.exe " + ProbabilityTab); }.bindenv(this); AddChild(ProbabilityButton); //抽奖按钮 local OpenButton = LenheartNewUI_ButtonText(18 + 157, 66 + 280, 5, "开启"); OpenButton.SetTextOffset(-1, 1); OpenButton.OnClick = function() { local T = { op = 20071005, Num = OpenFlag } SendPackEx(T); }.bindenv(this); AddChild(OpenButton); } //绘制主界面 function DrawMain(obj) { if (!InitState) return; //窗口 L_sq_DrawImg("tuguan/main.img", 0, X, Y); //标题 L_sq_DrawCode(BoxWindowName, X + 200 - LenheartTextClass.GetStringLength(BoxWindowName) / 2, Y + 6, sq_RGBA(230, 200, 155, 250), 1, 1); //动画 if (State == 2) T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/lobby/lobby_wait_rank_1step_1_step_common_0510_danjin_body.ani", X + 20, Y + 30, "New_TuguanSystemMainbackgroundeff"); //抽奖动画 if (State == 3) { DrawRewardAni(obj); } //奖励列表 if (State == 4) { DrawRewardItem(obj); } //遮罩 T_DrawStayAni(obj, "common/tuguan/main.ani", X + 17, Y + 26, 1, "TuguanSystemMainbackgroundblack"); //图标框 T_DrawStayAni(obj, "common/tuguan/main.ani", X + 187, Y + 26 + 250, 3, "TuguanSystemMainbackgrounditem"); //盒子数量 DrawItemEx(X + 187 + 3, Y + 26 + 250 + 3, BoxId, BoxCount); // if (State == 2) ItemInfoDrawS = null; } function Show(obj) { DrawMain(obj); //播放主界面音效 PlayMainSounds(obj); LenheartNewUI_Windows.Show(obj); } //逻辑入口 function Proc(obj) { LenheartNewUI_Windows.SyncPos(X, Y); } } getroottable().rawdelete("Tuguan_NewC_Obj"); function Lenheart_Tuguan_New(obj) { local RootTab = getroottable(); if (!RootTab.rawin("Tuguan_NewC_Obj")) { RootTab.rawset("Tuguan_NewC_Obj", true); LenheartNewUI_CreateWindow(Tuguan_NewC, "新土罐窗口", ((getroottable().Rindro_Scr_Width - 405) / 2).tointeger(), 64, 405, 372, 28); } } getroottable()["LenheartFuncTab"].rawset("Lenheart_Tuguan_NewFunc", Lenheart_Tuguan_New);