328 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			328 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | /* | ||
|  | 文件名:FiendReward.nut | ||
|  | 路径:Plugins/Fiendwar/FiendReward.nut | ||
|  | 创建日期:2024-05-13	10:03 | ||
|  | 文件用途:超时空奖励 | ||
|  | */ | ||
|  | class FiendRewardC extends LenheartNewUI_Windows { | ||
|  |     //调试模式 | ||
|  |     DeBugMode = true; | ||
|  |     //默认显示状态需要是关闭 因为要通过收包打开 | ||
|  |     Visible = false; | ||
|  | 
 | ||
|  |     //奖励信息 | ||
|  |     RewardInfo = null; | ||
|  |     //奖励动画开始时间 | ||
|  |     AniStartFlag = null; | ||
|  | 
 | ||
|  |     //收到奖励包 | ||
|  |     function RewardCallBack(Chunk) { | ||
|  |         // Sout("收到请求加入包 : \n\n\n %L", Chunk); | ||
|  |         local Jso = Json.Decode(Chunk); | ||
|  |         RewardInfo = Jso; | ||
|  |         Visible = true; | ||
|  |         AniStartFlag = Clock(); | ||
|  |     } | ||
|  | 
 | ||
|  |     constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { | ||
|  |         Childrens = []; | ||
|  |         //注册控件 | ||
|  |         RegisterWidget(); | ||
|  | 
 | ||
|  |         LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH); | ||
|  | 
 | ||
|  |         Pack_Control.rawset(20063026, RewardCallBack.bindenv(this)); | ||
|  | 
 | ||
|  |         local T = { | ||
|  |             op = 20063061, | ||
|  |         } | ||
|  |         Rindro_BaseToolClass.SendPackEx(T); | ||
|  |     } | ||
|  | 
 | ||
|  |     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); | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  |     AniName_Flag = 0; | ||
|  |     AniActFlag = 0; | ||
|  |     Ani_Title = null; | ||
|  |     Ani_Time = null; | ||
|  |     Ani_Time2 = null; | ||
|  |     Ani_Card_1 = null; | ||
|  |     Ani_Card_2 = null; | ||
|  |     Ani_Card_Open_1 = null; | ||
|  |     Ani_Card_Open_2 = null; | ||
|  |     AniTimeStartFlag = 0; | ||
|  |     AniRewardMyStartFlag = 0; | ||
|  |     Ani_Card_All_1 = null; | ||
|  |     Ani_Card_All_Open = null; | ||
|  |     Ani_Card_All_Open_Gold = null; | ||
|  |     AniRewardReloadFlag = 0; | ||
|  |     AlphaValue = 0.0; | ||
|  |     //绘制主界面 | ||
|  |     function DrawMain(obj) { | ||
|  |         if (AniStartFlag) { | ||
|  |             local ExiTime = Clock() - AniStartFlag; | ||
|  | 
 | ||
|  |             //绘制背景 | ||
|  |             L_sq_DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 0, X + 0, Y + 0, 1, sq_RGBA(255, 255, 255, 150), 1.0, 1.0); | ||
|  | 
 | ||
|  |             //标题一阶段 | ||
|  |             Ani_Title = Rindro_BaseToolClass.T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/reward_title_00.ani", X + 188, Y + 30, "超时空奖励标题1" + AniName_Flag); | ||
|  |             if (sq_IsEnd(Ani_Title)) { | ||
|  |                 if (AniActFlag == 0) AniActFlag = 1; | ||
|  |             } | ||
|  |             //时间二阶段 | ||
|  |             if (AniActFlag >= 1) { | ||
|  |                 Ani_Time = Rindro_BaseToolClass.T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/reward_time.ani", X + 55, Y + 120, "超时空奖励标题2" + AniName_Flag); | ||
|  |                 if (sq_IsEnd(Ani_Time)) { | ||
|  |                     if (AniActFlag == 1) AniActFlag = 2; | ||
|  |                 } | ||
|  |             } | ||
|  |             //时间三阶段 | ||
|  |             if (AniActFlag >= 2) { | ||
|  |                 Ani_Time2 = Rindro_BaseToolClass.T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/reward_rank_00.ani", X + 570, Y + 90, "超时空奖励标题3" + AniName_Flag); | ||
|  |                 if (sq_IsEnd(Ani_Time2)) { | ||
|  |                     //记录一下时间 | ||
|  |                     if (AniActFlag == 2) { | ||
|  |                         AniTimeStartFlag = Clock(); | ||
|  |                         AniActFlag = 3; | ||
|  |                     } | ||
|  |                 } | ||
|  |             } | ||
|  |             //时间四阶段 | ||
|  |             if (AniActFlag >= 3) { | ||
|  |                 local al = sq_GetUniformVelocity(0, 100, Clock() - AniTimeStartFlag, 1500); | ||
|  |                 AlphaValue = al.tofloat() / 100.0; | ||
|  | 
 | ||
|  |                 local RealTime = RewardInfo.time; | ||
|  |                 local seconds = RealTime / 10; | ||
|  |                 local hours = seconds / 3600; | ||
|  |                 local minutes = seconds / 60; | ||
|  | 
 | ||
|  |                 seconds %= 60; | ||
|  |                 hours = format("%02d", hours); | ||
|  |                 seconds = format("%02d", seconds).slice(-2); | ||
|  |                 minutes = format("%02d", minutes).slice(-2); | ||
|  | 
 | ||
|  |                 local Offset = -6; | ||
|  |                 DrawImg("hud/fiendwartime.img", hours.slice(0, 1).tointeger(), X + 240 + Offset, Y + 139); | ||
|  |                 DrawImg("hud/fiendwartime.img", hours.slice(1).tointeger(), X + 260 + Offset, Y + 139); | ||
|  |                 DrawImg("hud/fiendwartime.img", 10, X + 286 + Offset, Y + 139); | ||
|  |                 Offset += 60; | ||
|  |                 DrawImg("hud/fiendwartime.img", minutes.slice(0, 1).tointeger(), X + 240 + Offset, Y + 139); | ||
|  |                 DrawImg("hud/fiendwartime.img", minutes.slice(1).tointeger(), X + 260 + Offset, Y + 139); | ||
|  |                 DrawImg("hud/fiendwartime.img", 10, X + 286 + Offset, Y + 139); | ||
|  |                 Offset += 60; | ||
|  |                 DrawImg("hud/fiendwartime.img", seconds.slice(0, 1).tointeger(), X + 240 + Offset, Y + 139); | ||
|  |                 DrawImg("hud/fiendwartime.img", seconds.slice(1).tointeger(), X + 260 + Offset, Y + 139); | ||
|  | 
 | ||
|  |                 Offset += 160; | ||
|  |                 local DieCount = RewardInfo.deathsNum; | ||
|  |                 local DrawDieStr = format("%02d", DieCount); | ||
|  |                 DrawImg("hud/fiendwartime.img", DrawDieStr.slice(0, 1).tointeger(), X + 240 + Offset, Y + 139); | ||
|  |                 DrawImg("hud/fiendwartime.img", DrawDieStr.slice(1).tointeger(), X + 260 + Offset, Y + 139); | ||
|  | 
 | ||
|  |                 if (al >= 100) { | ||
|  |                     if (AniActFlag == 3) { | ||
|  |                         AniActFlag = 4; | ||
|  |                     } | ||
|  |                 } | ||
|  |             } | ||
|  |             //卡牌一阶段 | ||
|  |             if (AniActFlag == 4) { | ||
|  |                 Ani_Card_1 = T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/cardspread_01.ani", X + 0, Y + 30, "超时空奖励个人第一张卡牌" + AniName_Flag); | ||
|  |                 Ani_Card_2 = T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/cardspread_02.ani", X + 0, Y + 30, "超时空奖励个人第二张卡牌" + AniName_Flag); | ||
|  |                 if (sq_IsEnd(Ani_Card_1) && sq_IsEnd(Ani_Card_2)) { | ||
|  |                     if (AniActFlag == 4) AniActFlag = 5; | ||
|  |                 } | ||
|  |             } | ||
|  |             //卡牌二阶段 | ||
|  |             if (AniActFlag == 5) { | ||
|  |                 Ani_Card_Open_1 = T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/reward_card_open.ani", X + 218, Y + 280, "超时空奖励个人第一张卡牌打开" + AniName_Flag); | ||
|  |                 Ani_Card_Open_2 = T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/reward_card_open.ani", X + 406, Y + 280, "超时空奖励个人第二张卡牌打开" + AniName_Flag); | ||
|  |                 if (sq_IsEnd(Ani_Card_Open_1) && sq_IsEnd(Ani_Card_Open_2)) { | ||
|  |                     if (AniActFlag == 5) { | ||
|  |                         AniRewardMyStartFlag = Clock(); | ||
|  |                         AniActFlag = 6; | ||
|  |                     } | ||
|  |                 } | ||
|  |             } | ||
|  |             //卡牌三阶段 | ||
|  |             if (AniActFlag == 6) { | ||
|  |                 local BackGroundFlag = 0; | ||
|  |                 if (RewardInfo.rewards[0].item == -1) BackGroundFlag = 1; | ||
|  |                 DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 23 + BackGroundFlag, X + 218, Y + 280); | ||
|  |                 DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 23 + BackGroundFlag, X + 406, Y + 280); | ||
|  | 
 | ||
|  |                 DrawItemEx(X + 290, Y + 342, RewardInfo.rewards[0].item, RewardInfo.rewards[0].num, RewardInfo.pid, 0, -10); | ||
|  |                 DrawItemEx(X + 478, Y + 342, RewardInfo.rewards[0].item2, RewardInfo.rewards[0].num2, RewardInfo.pid, 0, -10); | ||
|  | 
 | ||
|  |                 if ((Clock() - AniRewardMyStartFlag) >= 1500) { | ||
|  |                     AniActFlag = 7; | ||
|  |                 } | ||
|  |             } | ||
|  |             //卡牌四阶段 | ||
|  |             if (AniActFlag == 7) { | ||
|  |                 Ani_Card_All_1 = T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/cardspread_00.ani", X + 0, Y + 0, "二阶段翻牌未翻开" + AniName_Flag); | ||
|  |                 if (sq_IsEnd(Ani_Card_All_1)) { | ||
|  |                     if (AniActFlag == 7) { | ||
|  |                         Ani_Card_All_Open = array(8); | ||
|  |                         Ani_Card_All_Open_Gold = array(8); | ||
|  |                         AniActFlag = 8; | ||
|  |                     } | ||
|  |                 } | ||
|  |             } | ||
|  |             //卡牌五阶段 | ||
|  |             if (AniActFlag == 8) { | ||
|  |                 for (local i = 0; i< 8; i++) { | ||
|  |                     Ani_Card_All_Open[i] = T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/reward_card_open.ani", X + 30 + ((i % 4) * 188), Y + 250 + ((i / 4) * 138), "超时空奖励团队卡牌打开" + "i" + AniName_Flag); | ||
|  | 
 | ||
|  |                     if (i<(RewardInfo.rewards2.len() - 1) && RewardInfo.rewards2[i][0].grade == 1) { | ||
|  |                         Ani_Card_All_Open_Gold[i] = T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/gold_nomal.ani", X + 30 + ((i % 4) * 188), Y + 250 + ((i / 4) * 138), "超时空奖励团队卡牌打开金牌" + "i" + AniName_Flag); | ||
|  |                     } | ||
|  |                 } | ||
|  |                 if (sq_IsEnd(Ani_Card_All_Open[7])) { | ||
|  |                     if (AniActFlag == 8) { | ||
|  |                         AniActFlag = 9; | ||
|  |                         AniRewardReloadFlag = Clock(); | ||
|  |                     } | ||
|  |                 } | ||
|  |             } | ||
|  |             //卡牌六阶段 | ||
|  |             if (AniActFlag == 9) { | ||
|  |                 for (local i = 0; i< 8; i++) { | ||
|  |                     DrawRewardCard(i); | ||
|  |                 } | ||
|  |                 //重置 | ||
|  |                 if (Clock() - AniRewardReloadFlag >= 2000) { | ||
|  |                     AniActFlag = 0; | ||
|  |                     Ani_Title = null; | ||
|  |                     Ani_Time = null; | ||
|  |                     Ani_Time2 = null; | ||
|  |                     Ani_Card_1 = null; | ||
|  |                     Ani_Card_2 = null; | ||
|  |                     Ani_Card_Open_1 = null; | ||
|  |                     Ani_Card_Open_2 = null; | ||
|  |                     AniTimeStartFlag = 0; | ||
|  |                     AniRewardMyStartFlag = 0; | ||
|  |                     Ani_Card_All_1 = null; | ||
|  |                     Ani_Card_All_Open = null; | ||
|  |                     Ani_Card_All_Open_Gold = null; | ||
|  |                     AniRewardReloadFlag = 0; | ||
|  |                     AlphaValue = 0.0; | ||
|  |                     RewardInfo = null; | ||
|  |                     AniStartFlag = null; | ||
|  |                     AniName_Flag += 1; | ||
|  |                     CloseWindow(); | ||
|  |                 } | ||
|  |             } | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  |     function DrawRewardCard(Index) { | ||
|  |         if (Index > (RewardInfo.rewards2.len() - 1)) { | ||
|  |             DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 24, X + 29 + ((Index % 4) * 189), Y + 250 + ((Index / 4) * 138)); | ||
|  |             return; | ||
|  |         } | ||
|  |         local Info = RewardInfo.rewards2[Index][0]; | ||
|  |         local BackGroundFlag = 0; | ||
|  |         if (Info.count == 0) { | ||
|  |             BackGroundFlag = 1; | ||
|  |             DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 23 + BackGroundFlag, X + 29 + ((Index % 4) * 189), Y + 250 + ((Index / 4) * 138)); | ||
|  |             DrawItemEx(X + 29 + ((Index % 4) * 189) + 72, Y + 250 + ((Index / 4) * 138) + 62, Info.item, Info.num, Index, 0, -10); | ||
|  |         } | ||
|  |         if (Info.count == 1) { | ||
|  |             if (Info.grade == 1)(BackGroundFlag = -5) | ||
|  |             DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 23 + BackGroundFlag, X + 29 + ((Index % 4) * 189), Y + 250 + ((Index / 4) * 138)); | ||
|  |             DrawItemEx(X + 29 + ((Index % 4) * 189) + 72, Y + 250 + ((Index / 4) * 138) + 62, Info.item, Info.num, Index, 0, -10); | ||
|  |         } else if (Info.count == 2) { | ||
|  |             if (Info.grade == 1)(BackGroundFlag = -5) | ||
|  |             DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 23 + BackGroundFlag, X + 29 + ((Index % 4) * 189), Y + 250 + ((Index / 4) * 138)); | ||
|  |             DrawItemEx(X + 29 + ((Index % 4) * 189) + 72 - 20, Y + 250 + ((Index / 4) * 138) + 62, Info.item, Info.num, Index, 999999, 0); | ||
|  |             DrawItemEx(X + 29 + ((Index % 4) * 189) + 72 + 20, Y + 250 + ((Index / 4) * 138) + 62, Info.item2, Info.num2, Index, -20, -10); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     ItemInfoDrawS = null; | ||
|  |     //绘制道具相信信息 | ||
|  |     ItemObject = null; | ||
|  | 
 | ||
|  |     //绘制道具带道具信息 | ||
|  |     function DrawItemEx(X, Y, Id, Count, Pid, Flag, Flag2) { | ||
|  |         try { | ||
|  |             if (Flag != 999999) { | ||
|  |                 local PartyMasterIcon = FiendwarTotal.GetInstance().MyTeam.MembersList[Pid]; | ||
|  | 
 | ||
|  |                 local XOffset = -77 + Flag; | ||
|  |                 local YOffset = -31 + Flag2; | ||
|  |                 sq_DrawBox(X + 30 + XOffset, Y + 1 + YOffset, 22, 18, PartyMasterIcon.HandBoxColor[PartyMasterIcon.InfoObj.TeamId]); | ||
|  | 
 | ||
|  |                 //绘制队长头像 | ||
|  |                 foreach(AvatarObj in PartyMasterIcon.InfoObj.EquVos) { | ||
|  |                     local AXpos = AvatarObj.D[0] + X + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][0] + XOffset - 12; | ||
|  |                     local AYpos = AvatarObj.D[1] + Y + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][1] + YOffset; | ||
|  |                     setClip(AXpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][2], AYpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][3], AXpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][2] + 22, AYpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][3] + 18); //开始裁切 | ||
|  |                     DrawImg("character/" + AvatarObj.B + ".img", AvatarObj.C, AXpos, AYpos); | ||
|  |                     releaseClip(); //裁切结束 | ||
|  |                 } | ||
|  |                 local DrawName = PartyMasterIcon.InfoObj.Name; | ||
|  |                 //绘制名字 | ||
|  |                 L_sq_DrawCode(DrawName, X + XOffset + 100 - LenheartTextClass.GetStringLength(DrawName) / 2, Y + YOffset + 4, sq_RGBA(247, 214, 90, 250), 0, 1); | ||
|  |             } | ||
|  | 
 | ||
|  |             if (Id != -1) { | ||
|  |                 local Rarity = AllItemInfoObject[Id].Rarity; | ||
|  |                 L_sq_DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 5 + Rarity, X - 3, Y - 3); | ||
|  |                 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; | ||
|  |                 } | ||
|  |             } | ||
|  |         } catch (exception) { | ||
|  | 
 | ||
|  |         } | ||
|  |     } | ||
|  |     //绘制悬停 | ||
|  |     function DrawItemInfoF(obj) { | ||
|  |         if (ItemInfoDrawS) { | ||
|  |             if (!ItemObject) { | ||
|  |                 local ItemId = ItemInfoDrawS.ItemId; | ||
|  |                 if (AllItemInfoObject.rawin(ItemId)) { | ||
|  |                     ItemObject = ItemInfoClass(AllItemInfoObject[ItemId]); | ||
|  |                 } | ||
|  |             } | ||
|  |             ItemObject.Show(ItemInfoDrawS.X, ItemInfoDrawS.Y - ItemObject.PageLength); | ||
|  |         } else { | ||
|  |             ItemObject = null; | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     function DrawImg(Path, Index, XPos, YPos) { | ||
|  |         L_sq_DrawImg(Path, Index, XPos, YPos, 1, sq_RGBA(255, 255, 255, (250 * AlphaValue).tointeger()), 1.0, 1.0); | ||
|  |     } | ||
|  | 
 | ||
|  |     function Show(obj) { | ||
|  |         ItemInfoDrawS = null; | ||
|  |         DrawMain(obj); | ||
|  |         // DrawItemInfoF(obj); | ||
|  |         LenheartNewUI_Windows.Show(obj); | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  |     //逻辑入口 | ||
|  |     function Proc(obj) { | ||
|  |         LenheartNewUI_Windows.SyncPos(X, Y); | ||
|  |     } | ||
|  | 
 | ||
|  | } |