/* 文件名: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); } }