Rindro-Sqr/Project/Fiendwar copy/FiendReward.nut

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);
}
}