/* 文件名:MidsummerParty.nut 路径:Project/MidsummerParty/MidsummerParty.nut 创建日期:2024-08-20 08:02 文件用途:希曼音乐会 */ class MidsummerPartyC extends LenheartNewUI_Windows { //调试模式 // DeBugMode = true; //不是窗口 // NoWindow = true; //是否可见 Visible = false; InitState = false; //最终奖励条件是否达成 EndRewardFlag = false; //奖励对象 RewardItemObject = null; //消耗道具 UseItemInfo = null; ExRewardSchedule = null; //抽奖完成的Ok按钮 OkButtonFlag = false; function GetRewardInfoCallBack(Chunk) { // Sout("收到包 : \n %L", Chunk); local Jso = Json.Decode(Chunk); //常规奖励 foreach(Value in Jso.items) { RewardItemObject[Value.index] <- Value; // if (Value.ifhas == 0) EndRewardFlag = false; } //最终奖励 RewardItemObject["ExReward"] <- Jso.endItem; //是否已经集齐 EndRewardFlag = Jso.endani; //消耗道具 UseItemInfo.Id <- Jso.useItem; //消耗道具数量 UseItemInfo.Count <- Jso.usrItemNum; if (UseItemInfo.Count > 16) UseItemInfo.Count = 16; //特殊奖励均衡器 ExRewardSchedule = Jso.plusNum; local obj = sq_GetMyMasterCharacter(); switch (ExRewardSchedule) { case 0: break; case 1: obj.sq_PlaySound("SUMMERLISTEN_PLAY_01"); break; case 2: obj.sq_PlaySound("SUMMERLISTEN_PLAY_02"); break; case 3: obj.sq_PlaySound("SUMMERLISTEN_PLAY_03"); break; case 4: obj.sq_PlaySound("SUMMERLISTEN_PLAY_04"); break; } InitState = true; } function GetInfo() { local T = { op = 20061001 } SendPackEx(T); } function GetRewardInfo() { local T = { op = 20061003 } SendPackEx(T); } AnimotionState = 0; AnimotionEndFlag = 0; NowReawrdObject = null; function LotteryPackCallBack(Chunk) { // Sout("收到包 : \n %L", Chunk); local Jso = Json.Decode(Chunk); NowReawrdObject = Jso.item; AnimotionState = 1; AnimotionEndFlag = Jso.endani; local obj = sq_GetMyMasterCharacter(); obj.sq_PlaySound("SUMMERLISTEN_START"); } function EndRewardPackCallBack(Chunk) { GetRewardInfo(); } constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { Childrens = []; RewardItemObject = {}; UseItemInfo = {}; //注册控件 RegisterWidget(); LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH); //获取奖励配置回调包 Pack_Control.rawset(20061004, GetRewardInfoCallBack.bindenv(this)); //抽奖回调包 Pack_Control.rawset(20061008, LotteryPackCallBack.bindenv(this)); //最终奖励回包 Pack_Control.rawset(20061010, EndRewardPackCallBack.bindenv(this)); //获取基础配置 GetInfo(); //获取奖励配置 GetRewardInfo(); } function RegisterWidget() { // //关闭按钮 // local CloseButton = LenheartNewUI_BaseButton(278, 0, 11, 12, "interface/lenheartwindowcommon.img", 276); // CloseButton.OnClick = function() { // this.Visible = false; // }.bindenv(this); // Childrens.append(CloseButton); //关闭按钮 local EndRewardGetButton = LenheartNewUI_BaseButton(652 - 21, 239, 68, 35, "interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 11); EndRewardGetButton.OnClick = function() { local obj = sq_GetMyMasterCharacter(); obj.sq_PlaySound("SUMMERLISTEN_CLICK"); local T = { op = 20061009 } SendPackEx(T); }.bindenv(this); EndRewardGetButton.SetCallBackFunc(function(win) { if (EndRewardFlag) { win.State = 0; } else { win.State = 8; } }.bindenv(this)); Childrens.append(EndRewardGetButton); //启动按钮 local PlayButton = LenheartNewUI_BaseButton(317, 410, 121, 86, "interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 1); PlayButton.OnClick = function() { local obj = sq_GetMyMasterCharacter(); obj.sq_PlaySound("SUMMERLISTEN_TAG"); local T = { op = 20061005 } SendPackEx(T); }.bindenv(this); Childrens.append(PlayButton); //购买按钮 local ShopButton = LenheartNewUI_BaseButton(331, 500, 93, 26, "interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 40); ShopButton.OnClick = function() { local obj = sq_GetMyMasterCharacter(); obj.sq_PlaySound("SUMMERLISTEN_CLICK"); L_sq_UseSkill(DIK_F5); // CloseWindow(); }.bindenv(this); Childrens.append(ShopButton); //抽奖完成的Ok按钮 local OkButton = LenheartNewUI_BaseButton(341, 344, 68, 35, "interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 11); OkButton.OnClick = function() { OkButtonFlag = false; local obj = sq_GetMyMasterCharacter(); obj.sq_PlaySound("SUMMERLISTEN_CLICK"); if (AnimotionEndFlag) { AnimotionState = 4; local obj = sq_GetMyMasterCharacter(); obj.sq_PlaySound("SUMMERLISTEN_RESULT_02"); } else { AnimotionState = 0; } local T = { op = 20061003 } SendPackEx(T); }.bindenv(this); OkButton.SetCallBackFunc(function(win) { if (OkButtonFlag) { win.Localtion_X = 341; } else { win.Localtion_X = -50000; } }.bindenv(this)); Childrens.append(OkButton); } //绘制主界面 function DrawMain(obj) { if (!InitState) return; //绘制主界面 L_sq_DrawImg("interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 0, X - 21, Y); L_sq_SetDrawImgModel(2, 0); L_sq_DrawImg("interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 44, X + 242 - 21, Y + 22, 0, sq_RGBA(255, 255, 255, 250), 1.0, 1.0); L_sq_ReleaseDrawImgModel(); T_DrawDynamicAni(obj, "common/midsummerpartypackage/main_loop.ani", X - 21, Y, "MidsummerPartyCMainEffect"); if (EndRewardFlag) { L_sq_DrawImg("interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 39, X + 92, Y + 114); } else { //常规奖励 foreach(Value in RewardItemObject) { if ("index" in Value) { if (Value.ifhas) { L_sq_DrawImg("interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 23 + Value.index, X - 21 + 81 + ((Value.index % 4) * 132), Y + 102 + ((Value.index / 4) * 70)); } else { DrawItemBase(X - 21 + 142 + ((Value.index % 4) * 132), Y + 134 + ((Value.index / 4) * 70), Value.itemid, Value.num); } } } } //特殊奖励 DrawItemBase(X - 21 + 672, Y + 204, RewardItemObject.ExReward, 1); //消耗道具数量绘制 L_sq_DrawImg("interface2/cs_shop/cs_packageevent/2021_summer/num_blue.img", 10, X - 21 + 258, Y + 465); DrawSmallNumber(UseItemInfo.Count); //特殊奖励均衡器 L_sq_DrawImg("interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 5 + ExRewardSchedule, X - 21 + 459, Y + 431); } function DrawRewardAnimotion(obj) { if (AnimotionState == 1) { local Ani = T_DrawDynamicAni(obj, "common/midsummerpartypackage/main_play.ani", X - 21, Y, "MidsummerPartyCR1Effect"); if (sq_IsEnd(Ani)) { sq_Rewind(Ani); AnimotionState = 2; local obj = sq_GetMyMasterCharacter(); obj.sq_PlaySound("SUMMERLISTEN_RESULT"); } } else if (AnimotionState == 2) { local Ani = T_DrawDynamicAni(obj, "common/midsummerpartypackage/main_slotchange.ani", X - 21 + 81 + ((NowReawrdObject.index % 4) * 132), Y + 102 + ((NowReawrdObject.index / 4) * 70), "MidsummerPartyCR2Effect"); if (sq_IsEnd(Ani)) { sq_Rewind(Ani); AnimotionState = 3; } } else if (AnimotionState == 3) { local path = "normal"; if (NowReawrdObject.typ == 1) path = "special"; local Ani = T_DrawDynamicAni(obj, "common/midsummerpartypackage/reward_" + path + "_00.ani", X - 21, Y, "MidsummerPartyCREffect" + NowReawrdObject.typ); //特殊奖励 DrawItemEx(X - 21 + 382, Y + 285, NowReawrdObject.itemid, NowReawrdObject.num); OkButtonFlag = true; } else if (AnimotionState == 4) { local Ani = T_DrawDynamicAni(obj, "common/midsummerpartypackage/main_slotchange_all.ani", X - 21, Y, "MidsummerPartyCR6Effect"); if (sq_IsEnd(Ani)) { sq_Rewind(Ani); AnimotionState = 0; } } } //绘制等级数字 function DrawSmallNumber(num) { num = num.tostring(); local x = X + 284; local y = Y + 465; if (num.len() == 2) x = X + 276; for (local i = 0; i< num.len(); i++) { local n = num.slice(i, i + 1); n = n.tointeger(); local Img = "interface2/cs_shop/cs_packageevent/2021_summer/num_blue.img"; L_sq_DrawImg(Img, n, x - 21 + (i * 9), y); } } function Show(obj) { DrawMain(obj); DrawRewardAnimotion(obj); LenheartNewUI_Windows.Show(obj); } //逻辑入口 function Proc(obj) { LenheartNewUI_Windows.SyncPos(X, Y); } function OpenCallBack() { //获取基础配置 GetInfo(); //获取奖励配置 GetRewardInfo(); Visible = true; ResetFocus(); } } getroottable().rawdelete("MidsummerParty_Obj"); function Lenheart_MidsummerParty_Fun(obj) { local RootTab = getroottable(); if (!RootTab.rawin("MidsummerParty_Obj")) { RootTab.rawset("MidsummerParty_Obj", true); local Winobj = LenheartNewUI_CreateWindow(MidsummerPartyC, "希曼音乐会窗口", ((getroottable().Rindro_Scr_Width - 760) / 2).tointeger(), 12, 760, 571, 100); EventList_Obj.AddEvent("希曼音乐会", 733, Winobj, "interface2/hud/information_button/information_button_cn.img"); } } getroottable()["LenheartFuncTab"].rawset("MidsummerPartyFuncN", Lenheart_MidsummerParty_Fun);