328 lines
14 KiB
Plaintext
328 lines
14 KiB
Plaintext
|
|
/*
|
||
|
|
文件名:FiendReward.nut
|
||
|
|
路径:Project/Fiendwar/FiendReward.nut
|
||
|
|
创建日期:2024-11-26 14:44
|
||
|
|
文件用途:
|
||
|
|
*/
|
||
|
|
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 = RinDro_Fiendwar_Obj.MyRaidTeam.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.F[0][2] + X + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][0] + XOffset - 12;
|
||
|
|
local AYpos = AvatarObj.F[1][3] + 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.F[0][0], 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 = L_sq_RA(L_sq_GetItem(Id) + 0xF4);
|
||
|
|
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) {
|
||
|
|
print(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);
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|