/* 文件名:MidsummerParty.nut 路径:Plugins/MidsummerParty/MidsummerParty.nut 创建日期:2023-10-28 17:40 文件用途: */ class MidsummerPartyC extends BasicsDrawTool { WindowObj = null; //窗口对象 MainState = false; //主状态 X = 0; Y = 0; InitState = false; ItemInfoObject = null; RewardItemObject = null; UseItemInfo = null; ExRewardSchedule = null; function GetInfoCallBack(Chunk) { // Sout("收到包 : \n %L", Chunk); local Jso = Json.Decode(Chunk); foreach(Value in Jso.items) { if (Value.Name2.len() == 0) Value.Name2 = "Rindro-Team"; ItemInfoObject[Value.Id] <- Value; } } function GetInfo() { local T = { op = 20061001 } SendPack(T); } EndRewardFlag = 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 GetRewardInfo() { local T = { op = 20061003 } SendPack(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 LotteryPack() { local T = { op = 20061005 } SendPack(T); } function EndRewardPackCallBack(Chunk) { GetRewardInfo(); } //最终奖励包 function EndRewardPack() { local T = { op = 20061009 } SendPack(T); } constructor() { ItemInfoObject = {}; RewardItemObject = {}; UseItemInfo = {}; //获取基础配置回调包 Pack_Control.rawset(20061002, GetInfoCallBack.bindenv(this)); //获取奖励配置回调包 Pack_Control.rawset(20061004, GetRewardInfoCallBack.bindenv(this)); //抽奖回调包 Pack_Control.rawset(20061008, LotteryPackCallBack.bindenv(this)); //最终奖励回包 Pack_Control.rawset(20061010, EndRewardPackCallBack.bindenv(this)); //获取基础配置 GetInfo(); //获取奖励配置 GetRewardInfo(); } function DrawRewardAnimotion(obj) { if (AnimotionState == 1) { local Ani = T_DrawDynamicAni(obj, "common/midsummerpartypackage/main_play.ani", X, 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 + 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, Y, "MidsummerPartyCREffect" + NowReawrdObject.typ); //特殊奖励 DrawItemEx(X + 382, Y + 285, NowReawrdObject.itemid, NowReawrdObject.num); local OkButton = LenheartBaseButton(X + 362, Y + 344, 68, 35, "interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 11); OkButton.Show(); if (OkButton.isLBActive()) { 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; } GetRewardInfo(); } } else if (AnimotionState == 4) { local Ani = T_DrawDynamicAni(obj, "common/midsummerpartypackage/main_slotchange_all.ani", X, Y, "MidsummerPartyCR6Effect"); if (sq_IsEnd(Ani)) { sq_Rewind(Ani); AnimotionState = 0; } } } //绘制主界面 function DrawMain(obj) { if (!InitState) return; //绘制主界面 L_sq_DrawImg("interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 0, X, Y); L_sq_SetDrawImgModel(2, 0); L_sq_DrawImg("interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 44, X + 242, Y + 22, 0, sq_RGBA(255, 255, 255, 250), 1.0, 1.0, 1); L_sq_ReleaseDrawImgModel(); T_DrawDynamicAni(obj, "common/midsummerpartypackage/main_loop.ani", X, Y, "MidsummerPartyCMainEffect"); if (EndRewardFlag) { L_sq_DrawImg("interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 39, X + 92, Y + 114); local OkButton = LenheartBaseButton(X + 652, Y + 239, 68, 35, "interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 11); OkButton.Show(); if (OkButton.isLBActive()) { local obj = sq_GetMyMasterCharacter(); obj.sq_PlaySound("SUMMERLISTEN_CLICK"); EndRewardPack(); } } 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 + 81 + ((Value.index % 4) * 132), Y + 102 + ((Value.index / 4) * 70)); } else { DrawItemEx(X + 142 + ((Value.index % 4) * 132), Y + 134 + ((Value.index / 4) * 70), Value.itemid, Value.num); } } } } //特殊奖励 DrawItemEx(X + 672, Y + 204, RewardItemObject.ExReward, 1); //消耗道具信息绘制 if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + 271, Y + 448, 24, 24)) { ItemInfoDrawS = {}; ItemInfoDrawS.X <- X + 271; ItemInfoDrawS.Y <- Y + 448; ItemInfoDrawS.ItemId <- UseItemInfo.Id; } //消耗道具数量绘制 L_sq_DrawImg("interface2/cs_shop/cs_packageevent/2021_summer/num_blue.img", 10, X + 258, Y + 465); DrawSmallNumber(UseItemInfo.Count); //特殊奖励均衡器 L_sq_DrawImg("interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 5 + ExRewardSchedule, X + 459, Y + 431); //启动按钮 local PlayButton = LenheartBaseButton(X + 338, Y + 410, 121, 86, "interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 1); PlayButton.Show(); if (PlayButton.isLBActive()) { local obj = sq_GetMyMasterCharacter(); obj.sq_PlaySound("SUMMERLISTEN_TAG"); LotteryPack(); } //购买按钮 local ShopButton = LenheartBaseButton(X + 352, Y + 500, 121, 86, "interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 40); ShopButton.Show(); if (ShopButton.isLBActive()) { local obj = sq_GetMyMasterCharacter(); obj.sq_PlaySound("SUMMERLISTEN_CLICK"); L_sq_UseSkill(DIK_F5); MainState = false; } } //开启界面回调 function OpenClassCallBack() { L_NewWindows("Lenheart", 170, 0x65535); local W = sq_GetPopupWindowMainCotrol(170); W.SetVisible(false); W.SetEnable(false); //获取奖励配置 GetRewardInfo(); } //绘制道具相信信息 ItemObject = null; function DrawItemInfo(obj) { if (ItemInfoDrawS && ItemInfoObject) { if (!ItemObject) { local ItemId = ItemInfoDrawS.ItemId; if (ItemInfoObject.rawin(ItemId)) { ItemObject = ItemInfoClass(ItemInfoObject[ItemId]); } } ItemObject.Show(ItemInfoDrawS.X, ItemInfoDrawS.Y - ItemObject.PageLength); } else { ItemObject = null; } } ItemInfoDrawS = null; //绘制入口 function Draw(obj) { ItemInfoDrawS = null; if (MainState) { if (WindowObj) { DrawMain(obj); DrawRewardAnimotion(obj); WindowObj.Show(obj); X = WindowObj.X; Y = WindowObj.Y; DrawItemInfo(obj); } else { WindowObj = LenheartWindow(X, Y, 800, 600, 28); //坐标 大小 标题栏高度 // WindowObj.DeBugMode = true; } } else { if (WindowObj && WindowObj.YMouseSw == false) { IMouse.ReleaseMouseClick(); WindowObj.YMouseSw = true; WindowObj = null; } } } //逻辑入口 function Proc(obj) { if (KeyPressNB.isKeyPress(48, "MidsummerPartyCloseKey")) { MainState = false; } } //绘制道具带道具信息 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 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 + (i * 9), y); } } } function MidsummerParty(obj) { local RootTab = getroottable(); if (!RootTab.rawin("MidsummerPartyCObj")) { local Cobj = MidsummerPartyC(); RootTab.rawset("MidsummerPartyCObj", Cobj); EventIcon("希曼音乐会", 133, 133, Cobj); } else { RootTab["MidsummerPartyCObj"].Proc(obj); RootTab["MidsummerPartyCObj"].Draw(obj); } } if (getroottable().rawin("LenheartFuncTab")) { getroottable()["LenheartFuncTab"].rawset("MidsummerParty_LenheartFunc", MidsummerParty); } else { local T = {}; T.rawset("MidsummerParty_LenheartFunc", MidsummerParty); getroottable().rawset("LenheartFuncTab", T); }