326 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			326 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | /* | ||
|  | 文件名: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); |