328 lines
10 KiB
Plaintext
328 lines
10 KiB
Plaintext
|
|
class New_RotersC extends BasicsDrawTool {
|
||
|
|
//世界BOSS是否打开
|
||
|
|
EventState = false;
|
||
|
|
//活动开启的动画是否播放过
|
||
|
|
EventAnimationPlayFlag = false;
|
||
|
|
//活动开启动画Timer
|
||
|
|
EventAnimationTimer = null;
|
||
|
|
|
||
|
|
|
||
|
|
//基础奖励道具信息
|
||
|
|
RewardInfo = null;
|
||
|
|
ItemInfoObject = null;
|
||
|
|
ItemInfoDrawS = null;
|
||
|
|
//排名信息
|
||
|
|
RankInfo = null;
|
||
|
|
|
||
|
|
//BOSS血量
|
||
|
|
BOSS_HP_RATE = 1;
|
||
|
|
|
||
|
|
WindowObj = null; //窗口对象
|
||
|
|
MainState = false; //主状态
|
||
|
|
X = 124;
|
||
|
|
Y = 16;
|
||
|
|
|
||
|
|
|
||
|
|
//收包逻辑
|
||
|
|
function GetWolrdBossEventStateCallBack(Chunk) {
|
||
|
|
local Jso = Json.Decode(Chunk);
|
||
|
|
switch (Jso.State) {
|
||
|
|
//未开启
|
||
|
|
case 0: {
|
||
|
|
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
//开启中
|
||
|
|
case 1: {
|
||
|
|
if (EventState == false) {
|
||
|
|
EventState = true;
|
||
|
|
EventAnimationPlayFlag = true;
|
||
|
|
EventIcon("世界BOSS ", 232, 232, this);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
//结算中
|
||
|
|
case 2: {
|
||
|
|
if (EventState == false) {
|
||
|
|
EventState = true;
|
||
|
|
EventAnimationPlayFlag = true;
|
||
|
|
EventIcon("世界BOSS ", 232, 232, this);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
default:
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//获取排名信息
|
||
|
|
function GetWorldBossEventRankInfoCallBack(Chunk) {
|
||
|
|
local Jso = Json.Decode(Chunk);
|
||
|
|
RankInfo = Jso.RankInfo;
|
||
|
|
BOSS_HP_RATE = Jso.BossHpRate;
|
||
|
|
if (BOSS_HP_RATE == 0) BOSS_HP_RATE = 0.01;
|
||
|
|
}
|
||
|
|
|
||
|
|
//获取基础信息包
|
||
|
|
function GetWorldBossEventBaseInfoCallBack(Chunk) {
|
||
|
|
local Jso = Json.Decode(Chunk);
|
||
|
|
RewardInfo = Jso.RewardInfo;
|
||
|
|
local GetItemInfoArr = [];
|
||
|
|
foreach(Value in RewardInfo) {
|
||
|
|
if (!(ItemInfoObject.rawin(Value))) {
|
||
|
|
GetItemInfoArr.append(Value);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (GetItemInfoArr.len() > 0) {
|
||
|
|
local T = {
|
||
|
|
op = 20231010,
|
||
|
|
realop = 20060020,
|
||
|
|
itemId = RewardInfo,
|
||
|
|
Type = 2,
|
||
|
|
}
|
||
|
|
SendPack(T);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function GetWorldBossEventBaseItemInfoCallBack(Chunk) {
|
||
|
|
local Jso = Json.Decode(Chunk);
|
||
|
|
foreach(Pos, Value in Jso.itemInfo) {
|
||
|
|
if (Value.Name2.len() == 0)
|
||
|
|
Value.Name2 = "Yosin-Team";
|
||
|
|
ItemInfoObject.rawset(Jso.itemId[Pos], Value);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
//收包逻辑
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
//发包逻辑
|
||
|
|
function GetWolrdBossEventState() {
|
||
|
|
local T = {
|
||
|
|
op = 20060001
|
||
|
|
}
|
||
|
|
SendPack(T);
|
||
|
|
}
|
||
|
|
|
||
|
|
function GetWorldBossEventRankInfo() {
|
||
|
|
local T = {
|
||
|
|
op = 20060003,
|
||
|
|
Page = 0
|
||
|
|
}
|
||
|
|
SendPack(T);
|
||
|
|
}
|
||
|
|
|
||
|
|
function GetWorldBossEventBaseInfo() {
|
||
|
|
local T = {
|
||
|
|
op = 20060009,
|
||
|
|
}
|
||
|
|
SendPack(T);
|
||
|
|
}
|
||
|
|
//发包逻辑
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
constructor() {
|
||
|
|
ItemInfoObject = {};
|
||
|
|
//判断活动是否开启
|
||
|
|
Pack_Control.rawset(20060002, GetWolrdBossEventStateCallBack.bindenv(this));
|
||
|
|
//获取排名信息
|
||
|
|
Pack_Control.rawset(20060004, GetWorldBossEventRankInfoCallBack.bindenv(this));
|
||
|
|
//获取基础信息包
|
||
|
|
Pack_Control.rawset(20060010, GetWorldBossEventBaseInfoCallBack.bindenv(this));
|
||
|
|
//获取道具信息
|
||
|
|
Pack_Control.rawset(20060020, GetWorldBossEventBaseItemInfoCallBack.bindenv(this));
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
GetWolrdBossEventState();
|
||
|
|
GetWorldBossEventRankInfo();
|
||
|
|
GetWorldBossEventBaseInfo();
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
//绘制道具带道具信息
|
||
|
|
function DrawItemEx(X, Y, Id, Count) {
|
||
|
|
L_sq_DrawImg("roters/rankmain.img", 9, X - 4, Y - 2);
|
||
|
|
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;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
//绘制世界Boss渐出动画
|
||
|
|
function ShowEventOpenAnimation(obj) {
|
||
|
|
if (!EventAnimationPlayFlag) return;
|
||
|
|
if (EventAnimationTimer == null) EventAnimationTimer = Clock();
|
||
|
|
|
||
|
|
local A = 60;
|
||
|
|
if (EventAnimationTimer) {
|
||
|
|
if (Clock() - EventAnimationTimer <= 2000) {
|
||
|
|
A = sq_GetUniformVelocity(60, 255, Clock() - EventAnimationTimer, 2000);
|
||
|
|
}
|
||
|
|
if (Clock() - EventAnimationTimer <= 4000 && Clock() - EventAnimationTimer > 2000) {
|
||
|
|
A = sq_GetUniformVelocity(255, 0, Clock() - EventAnimationTimer - 2000, 2000);
|
||
|
|
}
|
||
|
|
if (Clock() - EventAnimationTimer > 4000) {
|
||
|
|
EventAnimationTimer = null;
|
||
|
|
EventAnimationPlayFlag = false;
|
||
|
|
} else {
|
||
|
|
L_sq_DrawImg("roters/rankmain.img", 1, 80, 20, 0, sq_RGBA(255, 255, 255, A), 1.0, 1.0);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
//绘制主界面
|
||
|
|
function DrawMain(obj) {
|
||
|
|
//Item信息框一般为211的宽度
|
||
|
|
L_sq_DrawWindow(X, Y, 540, 470, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||
|
|
|
||
|
|
L_sq_DrawImg("roters/rankmain.img", 0, X + 9, Y + 6);
|
||
|
|
|
||
|
|
//Boss血量
|
||
|
|
setClip(X + 15, Y + 30, X + 15 + (532 * BOSS_HP_RATE).tointeger(), Y + 30 + 17); //开始裁切
|
||
|
|
L_sq_DrawImg("roters/rankmain.img", 8, X + 15, Y + 30);
|
||
|
|
releaseClip(); //裁切结束
|
||
|
|
|
||
|
|
//TODO 要判断这次攻坚是否成功了 成功了就不绘制
|
||
|
|
L_sq_DrawImg("roters/rankmaineff.img", 0, X + 13, Y + 50);
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
//绘制奖励
|
||
|
|
if (RewardInfo) {
|
||
|
|
L_sq_DrawWindow(X + 10, Y + 228, 100, 48, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||
|
|
L_sq_DrawCode("活动奖励预览", X + 24, Y + 240, sq_RGBA(251, 251, 181, 250), 1, 1);
|
||
|
|
foreach(Pos, Value in RewardInfo) {
|
||
|
|
DrawItemEx(X + 22 + (Pos * 34), Y + 264, Value, 1);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
//绘制排名
|
||
|
|
if (RankInfo) {
|
||
|
|
foreach(Pos, Value in RankInfo) {
|
||
|
|
if (Pos< 10) {
|
||
|
|
L_sq_DrawCode(Value.RankTop.tostring(), X + 46 - LenheartTextClass.GetStringLength(Value.RankTop.tostring()) / 2, Y + 324 + (Pos * 16), sq_RGBA(251, 251, 181, 250), 1, 1);
|
||
|
|
L_sq_DrawCode(Value.Name.tostring(), X + 158 - LenheartTextClass.GetStringLength(Value.Name.tostring()) / 2, Y + 324 + (Pos * 16), sq_RGBA(251, 251, 181, 250), 1, 1);
|
||
|
|
L_sq_DrawCode(Value.Job.tostring(), X + 310 - LenheartTextClass.GetStringLength(Value.Job.tostring()) / 2, Y + 324 + (Pos * 16), sq_RGBA(251, 251, 181, 250), 1, 1);
|
||
|
|
L_sq_DrawCode(Value.Damage.tostring(), X + 466 - LenheartTextClass.GetStringLength(Value.Damage.tostring()) / 2, Y + 324 + (Pos * 16), sq_RGBA(251, 251, 181, 250), 1, 1);
|
||
|
|
} else {
|
||
|
|
L_sq_DrawCode(Value.RankTop.tostring(), X + 46 - LenheartTextClass.GetStringLength(Value.RankTop.tostring()) / 2, Y + 486, sq_RGBA(251, 251, 181, 250), 1, 1);
|
||
|
|
L_sq_DrawCode(Value.Name.tostring(), X + 158 - LenheartTextClass.GetStringLength(Value.Name.tostring()) / 2, Y + 486, sq_RGBA(251, 251, 181, 250), 1, 1);
|
||
|
|
L_sq_DrawCode(Value.Job.tostring(), X + 310 - LenheartTextClass.GetStringLength(Value.Job.tostring()) / 2, Y + 486, sq_RGBA(251, 251, 181, 250), 1, 1);
|
||
|
|
L_sq_DrawCode(Value.Damage.tostring(), X + 466 - LenheartTextClass.GetStringLength(Value.Damage.tostring()) / 2, Y + 486, sq_RGBA(251, 251, 181, 250), 1, 1);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
local AttackButton = LenheartTabbars(X + 11 + 50, Y + 215, 50, 17);
|
||
|
|
AttackButton.SetFrame("roters/rankmain.img", 2);
|
||
|
|
AttackButton.SyncPos(X + 499, Y + 501);
|
||
|
|
AttackButton.Show();
|
||
|
|
if (AttackButton.isLBActive()) {
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//开启界面回调
|
||
|
|
function OpenClassCallBack() {
|
||
|
|
|
||
|
|
L_NewWindows("Lenheart", 170, 0x65535);
|
||
|
|
local W = sq_GetPopupWindowMainCotrol(170);
|
||
|
|
W.SetVisible(false);
|
||
|
|
W.SetEnable(false);
|
||
|
|
|
||
|
|
|
||
|
|
GetWorldBossEventRankInfo();
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
//绘制道具相信信息
|
||
|
|
ItemObject = null;
|
||
|
|
|
||
|
|
function DrawItemInfo(obj) {
|
||
|
|
if (ItemInfoDrawS && ItemInfoObject) {
|
||
|
|
if (!ItemObject) {
|
||
|
|
local ItemId = ItemInfoDrawS.ItemId;
|
||
|
|
if (ItemInfoObject.rawin(ItemId)) {
|
||
|
|
ItemObject = ItemInfoClass(ItemInfoObject[ItemId]);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
ItemObject.Show(ItemInfoDrawS.X, ItemInfoDrawS.Y - ItemObject.PageLength);
|
||
|
|
} else {
|
||
|
|
ItemObject = null;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//绘制入口
|
||
|
|
function Draw(obj) {
|
||
|
|
ItemInfoDrawS = null;
|
||
|
|
|
||
|
|
if (MainState) {
|
||
|
|
if (WindowObj) {
|
||
|
|
DrawMain(obj);
|
||
|
|
WindowObj.Show(obj);
|
||
|
|
X = WindowObj.X;
|
||
|
|
Y = WindowObj.Y;
|
||
|
|
|
||
|
|
DrawItemInfo(obj);
|
||
|
|
} else {
|
||
|
|
WindowObj = LenheartWindow(X, Y, 558, 470, 15); //坐标 大小 标题栏高度
|
||
|
|
// WindowObj.DeBugMode = true;
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
if (WindowObj && WindowObj.YMouseSw == false) {
|
||
|
|
IMouse.ReleaseMouseClick();
|
||
|
|
WindowObj.YMouseSw = true;
|
||
|
|
WindowObj = null;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
//播放活动开启过场动画
|
||
|
|
// ShowEventOpenAnimation(obj);
|
||
|
|
}
|
||
|
|
|
||
|
|
//逻辑入口
|
||
|
|
function Proc(obj) {
|
||
|
|
if (KeyPressNB.isKeyPress(48, "New_RotersCloseKey")) {
|
||
|
|
MainState = false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
function New_Roters(obj) {
|
||
|
|
local RootTab = getroottable();
|
||
|
|
if (!RootTab.rawin("New_RotersCObj")) {
|
||
|
|
local Cobj = New_RotersC();
|
||
|
|
RootTab.rawset("New_RotersCObj", Cobj);
|
||
|
|
} else {
|
||
|
|
RootTab["New_RotersCObj"].Proc(obj);
|
||
|
|
RootTab["New_RotersCObj"].Draw(obj);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (getroottable().rawin("LenheartFuncTab")) {
|
||
|
|
getroottable()["LenheartFuncTab"].rawset("New_Roters_LenheartFunc", New_Roters);
|
||
|
|
} else {
|
||
|
|
local T = {};
|
||
|
|
T.rawset("New_Roters_LenheartFunc", New_Roters);
|
||
|
|
getroottable().rawset("LenheartFuncTab", T);
|
||
|
|
}
|