969 lines
39 KiB
Plaintext
969 lines
39 KiB
Plaintext
/*
|
||
文件名:AradPass.nut
|
||
路径:Plugins/AradPass/AradPass.nut
|
||
创建日期:2023-10-18 08:38
|
||
文件用途:
|
||
*/
|
||
class AradPassC extends BasicsDrawTool {
|
||
WindowObj = null; //窗口对象
|
||
MainState = false; //主状态
|
||
X = 124;
|
||
Y = 34;
|
||
|
||
Page = 0;
|
||
|
||
Title = null;
|
||
QuestTitle = null;
|
||
QuestPage = 0;
|
||
|
||
BaseInfo = null;
|
||
|
||
Mobj = null;
|
||
|
||
|
||
|
||
//每日任务数组
|
||
DailyTasks = null;
|
||
//重复任务数组
|
||
RepeatingTasks = null;
|
||
//赛季任务数组
|
||
SeasonTasks = null;
|
||
|
||
//标签提示
|
||
TabSuccessTips = null;
|
||
|
||
//等级按钮
|
||
LevelButton = null;
|
||
LevelPage = 0;
|
||
|
||
//战令等级
|
||
MyPassLevel = 2;
|
||
|
||
//ItemInfo
|
||
ItemInfoObject = null;
|
||
ItemInfoDrawS = null;
|
||
|
||
RewardInfoObject = null;
|
||
RewardInfoEffTimer = null;
|
||
RewardSuccessTips = null;
|
||
|
||
function GetBaseInfo() {
|
||
local T = {
|
||
op = 20059001
|
||
}
|
||
SendPack(T);
|
||
local T2 = {
|
||
op = 20059005
|
||
}
|
||
SendPack(T2);
|
||
}
|
||
|
||
function GetBaseInfoCallBack(Chunk) {
|
||
// Sout("收到包 : \n %L", Chunk);
|
||
local Jso = Json.Decode(Chunk);
|
||
foreach(Value in Jso.itemInfo) {
|
||
if (Value.Name2.len() == 0)
|
||
Value.Name2 = "Yosin-Team";
|
||
ItemInfoObject[Value.Id] <- Value;
|
||
}
|
||
}
|
||
|
||
function GetBaseInfoCallBack2(Chunk) {
|
||
// Sout("收到包 : \n %L", Chunk);
|
||
local Jso = Json.Decode(Chunk);
|
||
BaseInfo = {};
|
||
BaseInfo = clone(Jso);
|
||
|
||
LevelPage = ((BaseInfo.Exp / 1000) + 1) / 10;
|
||
}
|
||
|
||
|
||
QuestSuccessTips = null;
|
||
|
||
function GetPlayerQuestCallBack(Chunk) {
|
||
// Sout("收到包 : \n %L", Chunk);
|
||
local Jso = Json.Decode(Chunk);
|
||
DailyTasks = Jso.task[0];
|
||
RepeatingTasks = Jso.task[1];
|
||
SeasonTasks = Jso.task[2];
|
||
|
||
QuestSuccessTips = [0, 0, 0];
|
||
TabSuccessTips[1] = 0;
|
||
|
||
foreach(Pos, Value in Jso.task) {
|
||
foreach(QuestObject in Value) {
|
||
if (QuestObject.SuccessState == 0) {
|
||
if (QuestObject.NowSuccessCount >= QuestObject.MaxSuccessCount) {
|
||
QuestSuccessTips[Pos] = 1;
|
||
TabSuccessTips[1] = 1;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function GetPlayerReward() {
|
||
local T = {
|
||
op = 20059003
|
||
}
|
||
SendPack(T);
|
||
}
|
||
|
||
function GetPlayerQuest() {
|
||
local T = {
|
||
op = 20059031
|
||
}
|
||
SendPack(T);
|
||
}
|
||
|
||
function GetPlayerRewardCallBack(Chunk) {
|
||
// Sout("收到包 : \n %L", Chunk);
|
||
//还原奖励领取提示数组
|
||
RewardSuccessTips = [0, 0, 0, 0, 0];
|
||
TabSuccessTips[0] = 0;
|
||
|
||
RewardInfoObject = {};
|
||
local Jso = Json.Decode(Chunk);
|
||
foreach(Pos, Value in Jso.reward) {
|
||
RewardInfoObject.rawset(Pos, Value);
|
||
if ((Pos)<(BaseInfo.Exp / 1000 + 1)) {
|
||
//判断是否有未领取的道具绘制感叹号要用
|
||
local Page = (Pos / 10);
|
||
if (RewardSuccessTips[Page] == 0) {
|
||
if (Value.isOrdinary == 0) {
|
||
RewardSuccessTips[Page] = 1;
|
||
TabSuccessTips[0] = 1;
|
||
}
|
||
if (BaseInfo.isVip) {
|
||
if (Value.isadditional == 0) {
|
||
RewardSuccessTips[Page] = 1;
|
||
TabSuccessTips[0] = 1;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
|
||
//发包成功
|
||
function SendSuccessAradPass(a2, a3, a4) {
|
||
local T = {
|
||
op = 20059023,
|
||
id = a2,
|
||
count = a4,
|
||
}
|
||
SendPack(T);
|
||
}
|
||
|
||
function RegisterQuestSu() {
|
||
L_CompleteTaskTable.rawset("AradPass", SendSuccessAradPass.bindenv(this));
|
||
}
|
||
|
||
|
||
|
||
|
||
constructor() {
|
||
if (getroottable().rawin("MouseObject")) Mobj = getroottable()["MouseObject"];
|
||
|
||
//注册完成任务回调
|
||
RegisterQuestSu();
|
||
|
||
ItemInfoObject = {};
|
||
|
||
//标签完成提示
|
||
TabSuccessTips = [0, 0, 0];
|
||
|
||
Pack_Control.rawset(20059002, GetBaseInfoCallBack.bindenv(this));
|
||
Pack_Control.rawset(20059006, GetBaseInfoCallBack2.bindenv(this));
|
||
Pack_Control.rawset(20059004, GetPlayerRewardCallBack.bindenv(this));
|
||
Pack_Control.rawset(20059032, GetPlayerQuestCallBack.bindenv(this));
|
||
|
||
GetBaseInfo();
|
||
GetPlayerReward();
|
||
GetPlayerQuest();
|
||
|
||
RewardInfoEffTimer = Clock();
|
||
RewardSuccessTips = [0, 0, 0, 0, 0];
|
||
}
|
||
|
||
//绘制等级数字
|
||
function DrawNumber(num, ...) {
|
||
num = num.tostring();
|
||
local x = X + 38;
|
||
local y = Y + 110;
|
||
if (num.len() == 2) x = X + 28;
|
||
for (local i = 0; i< num.len(); i++) {
|
||
local n = num.slice(i, i + 1);
|
||
n = n.tointeger();
|
||
local Img = "interface2/ui/aradpass/chn/aradpassnum.img";
|
||
if (BaseInfo.isVip) Img = "interface2/ui/aradpass/chn/aradpassnumy.img";
|
||
L_sq_DrawImg(Img, n, x + (i * 18), y);
|
||
}
|
||
|
||
}
|
||
|
||
//绘制等级数字
|
||
function DrawSmallNumber(num, bx) {
|
||
num = num.tostring();
|
||
local x = X + 38 + bx;
|
||
local y = Y + 250;
|
||
if (num.len() == 2) x = X + 33 + bx;
|
||
for (local i = 0; i< num.len(); i++) {
|
||
local n = num.slice(i, i + 1);
|
||
n = n.tointeger();
|
||
local Img = "interface2/ui/aradpass/chn/aradpassnum.img";
|
||
if (BaseInfo.isVip) Img = "interface2/ui/aradpass/chn/aradpassnumy.img";
|
||
L_sq_DrawImg(Img, n, x + (i * 9), y, 0, sq_RGBA(255, 255, 255, 255), 0.5, 0.5);
|
||
}
|
||
}
|
||
|
||
//绘制道具带道具信息
|
||
function DrawItemEx(X, Y, Id, Count) {
|
||
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;
|
||
}
|
||
}
|
||
|
||
//绘制道具相信信息
|
||
ItemObject = null;
|
||
|
||
function DrawItemInfo(obj) {
|
||
if (ItemInfoDrawS) {
|
||
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 DrawRewardItem(obj) {
|
||
local Idx = LevelPage * 10;
|
||
for (local i = 0; i< 10; i++) {
|
||
//奖励下标
|
||
local RealPos = Idx + i;
|
||
|
||
if (RealPos in RewardInfoObject) {
|
||
|
||
local RewardObject = RewardInfoObject[RealPos];
|
||
|
||
//普通道具
|
||
if ("itemid" in RewardObject) {
|
||
//普通底
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 21, X + 11 + 45 + (i * 47), Y + 50 + 162 + 61);
|
||
|
||
DrawItemEx(X + 64 + (i * 47), Y + 296, RewardObject.itemid, RewardObject.num);
|
||
|
||
//已领取
|
||
if (RewardObject.isOrdinary) {
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 23, X + 11 + 45 + (i * 47), Y + 50 + 162 + 61);
|
||
}
|
||
//未领取
|
||
else if (!RewardObject.isOrdinary) {
|
||
//快达到等级
|
||
if ((RealPos + 1) == MyPassLevel + 1) {
|
||
|
||
}
|
||
//已达到等级
|
||
else if ((RealPos + 1) <= MyPassLevel) {
|
||
local A = 60;
|
||
if (RewardInfoEffTimer) {
|
||
if (Clock() - RewardInfoEffTimer <= 1000) {
|
||
A = sq_GetUniformVelocity(60, 255, Clock() - RewardInfoEffTimer, 1000);
|
||
}
|
||
if (Clock() - RewardInfoEffTimer <= 2000 && Clock() - RewardInfoEffTimer > 1000) {
|
||
A = sq_GetUniformVelocity(255, 60, Clock() - RewardInfoEffTimer - 1000, 1000);
|
||
}
|
||
if (Clock() - RewardInfoEffTimer > 2000) {
|
||
RewardInfoEffTimer = Clock();
|
||
}
|
||
}
|
||
L_sq_SetDrawImgModel(2, 0);
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 29, X + 7 + 45 + (i * 47), Y + 50 + 162 + 58, 0, sq_RGBA(255, 255, 255, A), 1.0, 1.0);
|
||
L_sq_ReleaseDrawImgModel();
|
||
|
||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + 7 + 45 + (i * 47), Y + 50 + 162 + 58, 44, 74)) {
|
||
if (Mobj.LbEvent) {
|
||
local T = {
|
||
op = 20059007,
|
||
Type = 0,
|
||
lv = RealPos + 1,
|
||
}
|
||
SendPack(T);
|
||
}
|
||
}
|
||
}
|
||
//未达到等级
|
||
else {
|
||
//普通底Eff 未领取
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 33, X + 11 + 45 + (i * 47), Y + 50 + 162 + 61);
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
//是不是VIP
|
||
local IsVip = BaseInfo.isVip;
|
||
|
||
//进阶道具
|
||
if ("additionalItemId" in RewardObject && "additionalItemId2" in RewardObject) {
|
||
//普通底
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 26, X + 11 + 45 + (i * 47), Y + 50 + 162 + 138);
|
||
|
||
DrawItemEx(X + 64 + (i * 47), Y + 356, RewardObject.additionalItemId, RewardObject.additionalNum);
|
||
DrawItemEx(X + 64 + (i * 47), Y + 390, RewardObject.additionalItemId2, RewardObject.additionalNum2);
|
||
|
||
if (RewardObject.isadditional) {
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 28, X + 11 + 45 + (i * 47), Y + 50 + 162 + 138);
|
||
} else {
|
||
if (!IsVip) {
|
||
//普通底
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 32, X + 11 + 45 + (i * 47), Y + 50 + 162 + 138);
|
||
} else {
|
||
//快达到等级
|
||
if ((RealPos + 1) == MyPassLevel + 1) {
|
||
|
||
}
|
||
//已达到等级
|
||
else if ((RealPos + 1) <= MyPassLevel) {
|
||
local A = 60;
|
||
if (RewardInfoEffTimer) {
|
||
if (Clock() - RewardInfoEffTimer <= 1000) {
|
||
A = sq_GetUniformVelocity(60, 255, Clock() - RewardInfoEffTimer, 1000);
|
||
}
|
||
if (Clock() - RewardInfoEffTimer <= 2000 && Clock() - RewardInfoEffTimer > 1000) {
|
||
A = sq_GetUniformVelocity(255, 60, Clock() - RewardInfoEffTimer - 1000, 1000);
|
||
}
|
||
if (Clock() - RewardInfoEffTimer > 2000) {
|
||
RewardInfoEffTimer = Clock();
|
||
}
|
||
}
|
||
L_sq_SetDrawImgModel(2, 0);
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 30, X + 7 + 45 + (i * 47), Y + 45 + 162 + 138, 0, sq_RGBA(255, 255, 255, A), 1.0, 1.0);
|
||
L_sq_ReleaseDrawImgModel();
|
||
|
||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + 7 + 45 + (i * 47), Y + 45 + 162 + 138, 44, 74)) {
|
||
if (Mobj.LbEvent) {
|
||
local T = {
|
||
op = 20059007,
|
||
Type = 1,
|
||
lv = RealPos + 1,
|
||
}
|
||
SendPack(T);
|
||
}
|
||
}
|
||
}
|
||
//未达到等级
|
||
else {
|
||
//普通底Eff 未领取
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 33, X + 11 + 45 + (i * 47), Y + 50 + 162 + 138);
|
||
}
|
||
}
|
||
}
|
||
|
||
} else {
|
||
//普通底
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 25, X + 11 + 45 + (i * 47), Y + 50 + 162 + 138);
|
||
|
||
DrawItemEx(X + 64 + (i * 47), Y + 373, RewardObject.additionalItemId, RewardObject.additionalNum);
|
||
|
||
|
||
if (RewardObject.isadditional) {
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 27, X + 11 + 45 + (i * 47), Y + 50 + 162 + 138);
|
||
} else {
|
||
if (!IsVip) {
|
||
//普通底
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 31, X + 11 + 45 + (i * 47), Y + 50 + 162 + 138);
|
||
} else {
|
||
//快达到等级
|
||
if ((RealPos + 1) == MyPassLevel + 1) {
|
||
|
||
}
|
||
//已达到等级
|
||
else if ((RealPos + 1) <= MyPassLevel) {
|
||
local A = 60;
|
||
if (RewardInfoEffTimer) {
|
||
if (Clock() - RewardInfoEffTimer <= 1000) {
|
||
A = sq_GetUniformVelocity(60, 255, Clock() - RewardInfoEffTimer, 1000);
|
||
}
|
||
if (Clock() - RewardInfoEffTimer <= 2000 && Clock() - RewardInfoEffTimer > 1000) {
|
||
A = sq_GetUniformVelocity(255, 60, Clock() - RewardInfoEffTimer - 1000, 1000);
|
||
}
|
||
if (Clock() - RewardInfoEffTimer > 2000) {
|
||
RewardInfoEffTimer = Clock();
|
||
}
|
||
}
|
||
L_sq_SetDrawImgModel(2, 0);
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 30, X + 7 + 45 + (i * 47), Y + 45 + 162 + 138, 0, sq_RGBA(255, 255, 255, A), 1.0, 1.0);
|
||
L_sq_ReleaseDrawImgModel();
|
||
|
||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + 7 + 45 + (i * 47), Y + 45 + 162 + 138, 44, 74)) {
|
||
if (Mobj.LbEvent) {
|
||
local T = {
|
||
op = 20059007,
|
||
Type = 1,
|
||
lv = RealPos + 1,
|
||
}
|
||
SendPack(T);
|
||
}
|
||
}
|
||
}
|
||
//未达到等级
|
||
else {
|
||
//普通底Eff 未领取
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 33, X + 11 + 45 + (i * 47), Y + 50 + 162 + 138);
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
if (MyPassLevel >= LevelPage * 10) {
|
||
|
||
//是不是VIP
|
||
local IsVip = BaseInfo.isVip;
|
||
|
||
local MyExp;
|
||
local Rate;
|
||
if (MyPassLevel == LevelPage * 10) {
|
||
MyExp = (BaseInfo.Exp + 1000.0) % 10000.0;
|
||
Rate = MyExp.tofloat() / 10000.0;
|
||
} else if (MyPassLevel<(LevelPage + 1) * 10) {
|
||
MyExp = BaseInfo.Exp % 10000.0 + 1000.0;
|
||
Rate = MyExp.tofloat() / 10000.0;
|
||
} else {
|
||
Rate = 100.0;
|
||
}
|
||
local ImgIndex = 34;
|
||
if (IsVip) ImgIndex = 35;
|
||
|
||
if (Rate <= 0) Rate = 0.01;
|
||
setClip(X + 11 + 45, Y, X + 11 + 45 + (470 * Rate).tointeger(), Y + 264 + 4); //开始裁切
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", ImgIndex, X + 11 + 45, Y + 264);
|
||
releaseClip(); //裁切结束
|
||
|
||
L_sq_SetDrawImgModel(2, 0);
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", ImgIndex + 2, X + 11 + 34 + (470 * Rate).tointeger(), Y + 255);
|
||
L_sq_ReleaseDrawImgModel();
|
||
|
||
}
|
||
}
|
||
|
||
|
||
//绘制主界面
|
||
function DrawMain(obj) {
|
||
if (!BaseInfo) return;
|
||
|
||
//Item信息框一般为211的宽度
|
||
L_sq_DrawWindow(X, Y + 10, 540, 420, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||
|
||
L_sq_DrawWindow(X + 6, Y + 45, 528, 384, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||
|
||
|
||
// L_sq_DrawWindow(X + 5, Y + 28, 530, 390, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||
|
||
//绘制背景框标题栏
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpassmain.img", 0, X + 1, Y);
|
||
|
||
//构造标题栏
|
||
if (!Title) {
|
||
Title = [];
|
||
for (local i = 0; i< 3; i++) {
|
||
local Str = "奖励";
|
||
if (i == 1) Str = "任务";
|
||
if (i == 2) Str = "社交";
|
||
local ButtonBuf = LenheartTabbarsText(X, Y, Str);
|
||
if (i == 0) ButtonBuf.State = 1;
|
||
Title.append(ButtonBuf);
|
||
}
|
||
} else {
|
||
foreach(Pos, Value in Title) {
|
||
Value.SyncPos(X + 12 + (Pos * 62), Y + 27);
|
||
Value.Show();
|
||
//如果有可领取实践 还要画上感叹号标记
|
||
if (Value.isLBActive()) {
|
||
foreach(Pp, Vv in Title) {
|
||
if (Pp != Pos) Vv.State = 0;
|
||
Page = Pos;
|
||
}
|
||
}
|
||
|
||
//绘制完成事件的感叹号
|
||
if (TabSuccessTips[Pos] == 1) {
|
||
L_sq_DrawImg("interface/Lenheartwindowcommon.img", 301, X + 58 + (Pos * 62), Y + 31, 0, sq_RGBA(255, 255, 255, 210), 0.8, 0.8);
|
||
}
|
||
}
|
||
}
|
||
|
||
//绘制主题栏
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 0, X + 11, Y + 50);
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass_banner.img", 0, X + 11, Y + 50);
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 3, X + 547 - 252, Y + 207 - 47);
|
||
|
||
//绘制等级与经验值
|
||
MyPassLevel = BaseInfo.Exp / 1000 + 1;
|
||
DrawNumber(MyPassLevel);
|
||
local jystr = (BaseInfo.Exp % 1000) + " / " + 1000;
|
||
L_sq_DrawCode(jystr, X + 11 + 50 - LenheartTextClass.GetStringLength(jystr) / 2, Y + 50 + 20 + 80, sq_RGBA(179, 169, 135, 255), 0, 1);
|
||
if (BaseInfo.isVip) {
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 6, X + 11 + 22, Y + 50 + 24);
|
||
}
|
||
|
||
//绘制战令名
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpassl.img", 0, X + 11 + 91, Y + 50 + 20);
|
||
|
||
//绘制时装套装名
|
||
local szstr = BaseInfo.Apn;
|
||
L_sq_DrawCode(szstr, X + 500 - LenheartTextClass.GetStringLength(szstr) / 2, Y + 192, sq_RGBA(179, 169, 135, 255), 0, 1);
|
||
|
||
//绘制结束时间
|
||
L_sq_DrawCode("距离结束还有" + BaseInfo.EndTime + "天", X + 11 + 91, Y + 50 + 20 + 31, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||
|
||
//绘制激活按钮
|
||
if (!(BaseInfo.isVip)) {
|
||
local ActivationButton = LenheartButtonText(X + 11 + 91, Y + 50 + 20 + 31 + 20, 22, "激 活");
|
||
ActivationButton.SetFrame(null, 323);
|
||
ActivationButton.SetTextOffset(6, 1);
|
||
ActivationButton.Show();
|
||
if (ActivationButton.isLBActive()) {
|
||
local T = {
|
||
op = 20059013
|
||
}
|
||
SendPack(T);
|
||
}
|
||
}
|
||
|
||
|
||
//绘制主要奖励框
|
||
for (local i = 0; i< 5; i++) {
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 4, X + 11 + 91 + (36 * i), Y + 31 + 124);
|
||
DrawItemEx(X + 11 + 95 + (36 * i), Y + 33 + 124, BaseInfo.showItemIds[i], 1);
|
||
}
|
||
|
||
//绘制奖励页
|
||
if (Page == 0) {
|
||
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 1, X + 11, Y + 50 + 162);
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 2, X + 11, Y + 50 + 162 + 214);
|
||
|
||
L_sq_DrawCode("区", X + 11 + 14, Y + 50 + 162 + 14, sq_RGBA(179, 169, 135, 255), 1, 1);
|
||
L_sq_DrawCode("间", X + 11 + 14, Y + 50 + 162 + 14 + 19, sq_RGBA(179, 169, 135, 255), 1, 1);
|
||
|
||
L_sq_DrawCode("免", X + 11 + 14, Y + 50 + 162 + 14 + 19 + 47, sq_RGBA(179, 169, 135, 255), 1, 1);
|
||
L_sq_DrawCode("费", X + 11 + 14, Y + 50 + 162 + 14 + 19 + 47 + 19, sq_RGBA(179, 169, 135, 255), 1, 1);
|
||
|
||
|
||
L_sq_DrawCode("追", X + 11 + 14, Y + 50 + 162 + 14 + 19 + 47 + 19 + 54, sq_RGBA(179, 169, 135, 255), 1, 1);
|
||
L_sq_DrawCode("加", X + 11 + 14, Y + 50 + 162 + 14 + 19 + 47 + 19 + 54 + 19, sq_RGBA(179, 169, 135, 255), 1, 1);
|
||
|
||
|
||
|
||
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 19, X + 11, Y + 240);
|
||
|
||
|
||
// local SuccessButton = LenheartBaseButtonText(X + 60, Y + 215, 88, 25, "interface2/ui/aradpass/chn/aradpass.img", 15, "1 - 10");
|
||
// local SuccessButton = LenheartTabbarsText(X + 60, Y + 215, "1 - 10", 88, 25);
|
||
// SuccessButton.SetFrame("interface2/ui/aradpass/chn/aradpass.img", 15);
|
||
// SuccessButton.SetTextOffset(30, 5);
|
||
// SuccessButton.Show();
|
||
|
||
|
||
//构造等级按钮
|
||
if (!LevelButton) {
|
||
LevelButton = [];
|
||
for (local i = 0; i< 5; i++) {
|
||
local Str = "1 - 10";
|
||
if (i == 1) Str = "11 - 20";
|
||
if (i == 2) Str = "21 - 30";
|
||
if (i == 3) Str = "31 - 40";
|
||
if (i == 4) Str = "41 - 50";
|
||
local ButtonBuf = LenheartTabbarsText(X + 11 + 50 + (i * 93), Y + 215, Str, 88, 25);
|
||
ButtonBuf.SetFrame("interface2/ui/aradpass/chn/aradpass.img", 15);
|
||
ButtonBuf.SetTextOffset(50 - LenheartTextClass.GetStringLength(Str) / 2, 6);
|
||
if (i == 0) ButtonBuf.State = 1;
|
||
LevelButton.append(ButtonBuf);
|
||
}
|
||
} else {
|
||
foreach(Pos, Value in LevelButton) {
|
||
Value.SyncPos(X + 11 + 50 + (Pos * 93), Y + 215);
|
||
Value.Show();
|
||
if (Pos == LevelPage) Value.State = 1;
|
||
else Value.State = 0;
|
||
//如果有可领取实践 还要画上感叹号标记
|
||
if (Value.isLBActive()) {
|
||
LevelPage = Pos;
|
||
}
|
||
if (Value.State == 1) {
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 18, X + 11 + 50 + (Pos * 93), Y + 215);
|
||
}
|
||
|
||
|
||
//绘制是否可领取奖励的感叹号
|
||
if (RewardSuccessTips[Pos] == 1) {
|
||
L_sq_DrawImg("interface/Lenheartwindowcommon.img", 301, X + 125 + (Pos * 93), Y + 224, 0, sq_RGBA(255, 255, 255, 210), 0.8, 0.8);
|
||
}
|
||
}
|
||
}
|
||
|
||
for (local i = 0; i< 10; i++) {
|
||
DrawSmallNumber(i + 1 + (LevelPage * 10), 124 - 91 + (i * 47));
|
||
}
|
||
|
||
DrawRewardItem(obj);
|
||
|
||
|
||
|
||
|
||
L_sq_DrawImg("interface/Lenheartwindowcommon.img", 504, X + 24, Y + 438, 0, sq_RGBA(255, 255, 255, 250), 0.8, 0.8);
|
||
L_sq_DrawImg("interface/Lenheartwindowcommon.img", 504, X + 24, Y + 460, 0, sq_RGBA(255, 255, 255, 250), 0.8, 0.8);
|
||
L_sq_DrawCode("获得的物品将发放至物品栏。", X + 44, Y + 438, sq_RGBA(179, 169, 135, 150), 1, 1);
|
||
L_sq_DrawCode("未使用的奖励道具将在本季通行券结束时删除。", X + 44, Y + 460, sq_RGBA(179, 169, 135, 150), 1, 1);
|
||
|
||
|
||
|
||
|
||
//绘制领取全部奖励按钮
|
||
local ClaimAllButton = LenheartButtonText(X + 460, Y + 440, 22, "全部领取");
|
||
// ClaimAllButton.SetFrame(null, 323);
|
||
ClaimAllButton.SetTextOffset(-3, 1);
|
||
ClaimAllButton.Show();
|
||
if (ClaimAllButton.isLBActive()) {
|
||
local T = {
|
||
op = 20059009
|
||
}
|
||
SendPack(T);
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
//绘制任务页
|
||
if (Page == 1) {
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 43, X + 11, Y + 50 + 162);
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 38, X + 13, Y + 50 + 184);
|
||
|
||
|
||
//构造标题栏
|
||
if (!QuestTitle) {
|
||
QuestTitle = [];
|
||
for (local i = 0; i< 3; i++) {
|
||
local Str = "每日任务";
|
||
if (i == 1) Str = "重复任务";
|
||
if (i == 2) Str = "赛季任务";
|
||
local ButtonBuf = LenheartTabbarsText(X, Y, Str);
|
||
if (i == 0) ButtonBuf.State = 1;
|
||
ButtonBuf.SetTextOffset(8, 3);
|
||
QuestTitle.append(ButtonBuf);
|
||
}
|
||
} else {
|
||
foreach(Pos, Value in QuestTitle) {
|
||
Value.SyncPos(X + 12 + (Pos * 62), Y + 213);
|
||
Value.Show();
|
||
//如果有可领取实践 还要画上感叹号标记
|
||
if (Value.isLBActive()) {
|
||
foreach(Pp, Vv in QuestTitle) {
|
||
if (Pp != Pos) Vv.State = 0;
|
||
}
|
||
QuestPage = Pos;
|
||
}
|
||
|
||
|
||
if (QuestSuccessTips && QuestSuccessTips.len() == 3) {
|
||
//绘制是否可领取奖励的感叹号
|
||
if (QuestSuccessTips[Pos] == 1) {
|
||
L_sq_DrawImg("interface/Lenheartwindowcommon.img", 301, X + 64 + (Pos * 62), Y + 216, 0, sq_RGBA(255, 255, 255, 210), 0.8, 0.8);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
L_sq_DrawCode("任务内容", X + 120, Y + 7 + 231, sq_RGBA(179, 169, 135, 255), 1, 1);
|
||
L_sq_DrawCode("完成次数", X + 288, Y + 7 + 231, sq_RGBA(179, 169, 135, 255), 1, 1);
|
||
L_sq_DrawCode("经验值", X + 388, Y + 7 + 231, sq_RGBA(179, 169, 135, 255), 1, 1);
|
||
L_sq_DrawCode("状态", X + 492, Y + 7 + 231, sq_RGBA(179, 169, 135, 255), 1, 1);
|
||
|
||
local QuestTasks = null;
|
||
//每日
|
||
if (QuestPage == 0) {
|
||
//每日任务数组
|
||
QuestTasks = DailyTasks;
|
||
}
|
||
//重复
|
||
else if (QuestPage == 1) {
|
||
//重复任务数组
|
||
QuestTasks = RepeatingTasks;
|
||
}
|
||
//赛季
|
||
else {
|
||
//赛季任务数组
|
||
QuestTasks = SeasonTasks;
|
||
}
|
||
|
||
if (QuestTasks) {
|
||
QuestWheelMax = QuestTasks.len();
|
||
local SuccessCount = 0;
|
||
local Incomplete = 0;
|
||
foreach(Pos, Value in QuestTasks) {
|
||
local OffsetPos = Pos - QuestWheelNow - SuccessCount;
|
||
if (Pos >= QuestWheelNow && Pos <= QuestWheelNow + 5) {
|
||
if (Value.SuccessState == 0) {
|
||
Incomplete++;
|
||
L_sq_DrawCode(Value.QuestExplain, X + 20, Y + 50 + 162 + 53 + (OffsetPos * 30) + (OffsetPos), sq_RGBA(179, 169, 135, 255), 1, 1);
|
||
local SuccessStr = Value.NowSuccessCount + " / " + Value.MaxSuccessCount;
|
||
L_sq_DrawCode(SuccessStr, X + 320 - LenheartTextClass.GetStringLength(SuccessStr) / 2, Y + 50 + 162 + 53 + (OffsetPos * 30) + (OffsetPos), sq_RGBA(179, 169, 135, 255), 1, 1);
|
||
L_sq_DrawCode(Value.Experience.tostring(), X + 404 - LenheartTextClass.GetStringLength(Value.Experience.tostring()) / 2, Y + 50 + 162 + 53 + (OffsetPos * 30) + (OffsetPos), sq_RGBA(179, 169, 135, 255), 1, 1);
|
||
//绘制完成按钮
|
||
local SuccessButton = LenheartButtonText(X + 472, Y + 261 + (OffsetPos * 30) + (OffsetPos), 10, "完成");
|
||
SuccessButton.SetTextOffset(3, 1);
|
||
if (Value.NowSuccessCount >= Value.MaxSuccessCount) {
|
||
if (SuccessButton.isLBActive()) {
|
||
Value.op <- 20059033;
|
||
SendPack(Value);
|
||
}
|
||
} else {
|
||
SuccessButton.State = 8;
|
||
}
|
||
SuccessButton.Show();
|
||
} else {
|
||
SuccessCount++;
|
||
}
|
||
}
|
||
}
|
||
local SuccessPos = 0;
|
||
foreach(Pos, Value in QuestTasks) {
|
||
local SuccessOffsetPos = SuccessPos - QuestWheelNow + Incomplete;
|
||
if (Value.SuccessState == 1) {
|
||
SuccessPos++;
|
||
L_sq_DrawCode(Value.QuestExplain, X + 20, Y + 50 + 162 + 53 + (SuccessOffsetPos * 30) + (SuccessOffsetPos), sq_RGBA(179, 169, 135, 150), 1, 1);
|
||
local SuccessStr = Value.NowSuccessCount + " / " + Value.MaxSuccessCount;
|
||
L_sq_DrawCode(SuccessStr, X + 320 - LenheartTextClass.GetStringLength(SuccessStr) / 2, Y + 50 + 162 + 53 + (SuccessOffsetPos * 30) + (SuccessOffsetPos), sq_RGBA(179, 169, 135, 150), 1, 1);
|
||
L_sq_DrawCode(Value.Experience.tostring(), X + 404 - LenheartTextClass.GetStringLength(Value.Experience.tostring()) / 2, Y + 50 + 162 + 53 + (SuccessOffsetPos * 30) + (SuccessOffsetPos), sq_RGBA(179, 169, 135, 150), 1, 1);
|
||
//绘制完成按钮
|
||
local SuccessButton = LenheartButtonText(X + 472, Y + 261 + (SuccessOffsetPos * 30) + (SuccessOffsetPos), 10, "已完成");
|
||
SuccessButton.SetTextOffset(-2, 1);
|
||
SuccessButton.State = 8;
|
||
SuccessButton.Show();
|
||
// L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 41, X + 14, Y + 50 + 160 + 50 + (SuccessOffsetPos * 30) + (SuccessOffsetPos));
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + 25, Y + 456, 16, 16)) {
|
||
L_sq_DrawImg("interface/lenheartwindowcommon.img", 240, X + 25, Y + 456);
|
||
QuestTips = true;
|
||
} else {
|
||
L_sq_DrawImg("interface/lenheartwindowcommon.img", 239, X + 25, Y + 456);
|
||
QuestTips = false;
|
||
}
|
||
|
||
// 周获取的经验
|
||
local MaxExp = BaseInfo.ExpLimitMax;
|
||
local NowExp = BaseInfo.ExpLimit;
|
||
L_sq_DrawCode("每周重复任务经验获取上限 " + NowExp + "/" + MaxExp, X + 40 + 7, Y + 7 + 451, sq_RGBA(179, 169, 135, 255), 1, 1);
|
||
|
||
|
||
local ReceiveExpButton = LenheartButtonText(X + 464, Y + 7 + 446, 22, "全部领取");
|
||
ReceiveExpButton.SetTextOffset(-2, 1);
|
||
ReceiveExpButton.Show();
|
||
if (ReceiveExpButton.isLBActive()) {
|
||
local T = {
|
||
op = 20059035
|
||
}
|
||
SendPack(T);
|
||
}
|
||
}
|
||
|
||
|
||
//绘制助力页
|
||
if (Page == 2) {
|
||
L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 42, X + 11, Y + 50 + 162);
|
||
|
||
L_sq_DrawCode("助力奖励", X + 11 + 115, Y + 50 + 162 + 7, sq_RGBA(124, 110, 82, 255), 1, 0);
|
||
L_sq_DrawCode("[发起助力]说明", X + 11 + 372, Y + 50 + 162 + 7, sq_RGBA(124, 110, 82, 255), 1, 0);
|
||
L_sq_DrawCode("获得助力 : " + BaseInfo.helpNum + " 次", X + 11 + 96, Y + 50 + 162 + 111, sq_RGBA(124, 110, 82, 255), 1, 0);
|
||
|
||
|
||
|
||
//助力按钮
|
||
local UpButton = LenheartButtonText(X + 11 + 115 + 20, Y + 50 + 162 + 7 + 48, 4, "发起助力");
|
||
if (BaseInfo.help == 1) {
|
||
UpButton.State = 8;
|
||
}
|
||
UpButton.SetTextOffset(-12, 1);
|
||
UpButton.Show();
|
||
if (UpButton.isLBActive()) {
|
||
local T = {
|
||
op = 20059011,
|
||
Type = 0,
|
||
}
|
||
SendPack(T);
|
||
}
|
||
|
||
|
||
{
|
||
L_sq_DrawCode("社交功能将于每日凌晨6点重置。", X + 11 + 322, Y + 50 + 162 + 77, sq_RGBA(124, 110, 82, 255), 1, 0);
|
||
L_sq_DrawCode("点击[发起助力]按钮时,立即获得通行", X + 11 + 308, Y + 50 + 162 + 77 + 20, sq_RGBA(124, 110, 82, 255), 1, 0);
|
||
L_sq_DrawCode("券经验值。", X + 11 + 380, Y + 50 + 162 + 77 + 40, sq_RGBA(124, 110, 82, 255), 1, 0);
|
||
L_sq_DrawCode("获得助力次数将根据服务器玩家的发起", X + 11 + 300, Y + 50 + 162 + 77 + 60, sq_RGBA(124, 110, 82, 255), 1, 0);
|
||
L_sq_DrawCode("助力次数而更新。", X + 11 + 364, Y + 50 + 162 + 77 + 80, sq_RGBA(124, 110, 82, 255), 1, 0);
|
||
L_sq_DrawCode("每10秒可以点击刷新按钮更新信息。", X + 11 + 310, Y + 50 + 162 + 77 + 100, sq_RGBA(124, 110, 82, 255), 1, 0);
|
||
}
|
||
|
||
|
||
|
||
L_sq_DrawCode("5次", X + 11 + 48, Y + 50 + 162 + 148, sq_RGBA(124, 110, 82, 255), 1, 0);
|
||
L_sq_DrawCode("10次", X + 11 + 132, Y + 50 + 162 + 148, sq_RGBA(124, 110, 82, 255), 1, 0);
|
||
L_sq_DrawCode("20次", X + 11 + 216, Y + 50 + 162 + 148, sq_RGBA(124, 110, 82, 255), 1, 0);
|
||
|
||
|
||
//刷新按钮
|
||
local RefreshButton = LenheartTabbars(X + 11 + 256, Y + 50 + 162 + 108, 19, 19);
|
||
RefreshButton.SetFrame(null, 445);
|
||
RefreshButton.Show();
|
||
if (RefreshButton.isLBActive()) {}
|
||
|
||
local SuccBtnArr = [BaseInfo.help5, BaseInfo.help10, BaseInfo.help20];
|
||
//完成按钮
|
||
foreach(Pos, Kf in SuccBtnArr) {
|
||
local ButtonBuf = LenheartButtonText(X + 11 + 27 + (Pos * 85), Y + 50 + 162 + 206, 4, "完成");
|
||
local RealP = Pos;
|
||
if (RealP == 0) RealP = 5;
|
||
if (RealP == 1) RealP = 10;
|
||
if (RealP == 2) RealP = 20;
|
||
if (Kf == 1 || RealP > BaseInfo.helpNum) ButtonBuf.State = 8;
|
||
// ButtonBuf.SetFrame(null, 323);
|
||
ButtonBuf.SetTextOffset(0, 1);
|
||
ButtonBuf.Show();
|
||
if (ButtonBuf.isLBActive()) {
|
||
local T = {
|
||
op = 20059011,
|
||
Type = RealP,
|
||
}
|
||
SendPack(T);
|
||
}
|
||
}
|
||
|
||
|
||
//TODO 临时绘制道具 2022110703
|
||
//绘制道具
|
||
L_Sq_DrawItem(X + 103, Y + 262, 1232, BaseInfo.helpExp, 0, 0, 0);
|
||
|
||
|
||
L_Sq_DrawItem(X + 11 + 43, Y + 50 + 162 + 167, 1232, BaseInfo.helpExp5, 0, 0, 0);
|
||
L_Sq_DrawItem(X + 11 + 128, Y + 50 + 162 + 167, 1232, BaseInfo.helpExp10, 0, 0, 0);
|
||
L_Sq_DrawItem(X + 11 + 213, Y + 50 + 162 + 167, 1232, BaseInfo.helpExp20, 0, 0, 0);
|
||
}
|
||
}
|
||
|
||
QuestTips = false;
|
||
QuestWheelNow = 0;
|
||
QuestWheelMax = 0;
|
||
|
||
//悬浮层
|
||
function DrawSuspensionLayer(obj) {
|
||
//任务提示
|
||
if (QuestTips) {
|
||
L_sq_DrawWindow(X + 40, Y + 350, 224, 100, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||
local QuestTipsStr = "每周可以通过完成重复任务获得的最大经验值。\n达到每周经验获取上限后,无法进行重复任务。\n通过每日任务以及赛季任务获得的经验值,不受每周经验获取上限的限制。\n每周星期四将初始化每周经验获取量。\n每周四凌晨6点初始化重复任务的进度,并删除未领取的重复任务经验值。";
|
||
local QuestTipsArray = L_sq_GetStringDrawArray(QuestTipsStr, 251);
|
||
foreach(Pos, va in QuestTipsArray) {
|
||
// Sout("文本内容嗯: %L", va);
|
||
L_sq_DrawCode(va, X + 40 + 7, Y + 7 + 350 + (Pos * 16), 0xFFFFFFFF, 1, 1);
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
//开启界面回调
|
||
function OpenClassCallBack() {
|
||
L_NewWindows("Lenheart", 170, 0x65535);
|
||
local W = sq_GetPopupWindowMainCotrol(170);
|
||
W.SetVisible(false);
|
||
W.SetEnable(false);
|
||
|
||
GetBaseInfo();
|
||
GetPlayerReward();
|
||
GetPlayerQuest();
|
||
}
|
||
|
||
//绘制入口
|
||
function Draw(obj) {
|
||
if (MainState) {
|
||
if (WindowObj) {
|
||
ItemInfoDrawS = null;
|
||
DrawMain(obj);
|
||
DrawSuspensionLayer(obj);
|
||
DrawItemInfo(obj);
|
||
WindowObj.Show(obj);
|
||
X = WindowObj.X;
|
||
Y = WindowObj.Y;
|
||
} else {
|
||
WindowObj = LenheartWindow(X, Y, 558, 470, 15); //坐标 大小 标题栏高度
|
||
// WindowObj.DeBugMode = true;
|
||
}
|
||
} else {
|
||
if (WindowObj && WindowObj.YMouseSw == false) {
|
||
IMouse.ReleaseMouseClick();
|
||
WindowObj.YMouseSw = true;
|
||
WindowObj = null;
|
||
}
|
||
}
|
||
}
|
||
|
||
//逻辑入口
|
||
function Proc(obj) {
|
||
if (IMouse.IsWheelUp()) {
|
||
if (QuestWheelNow > 0) QuestWheelNow--;
|
||
if (LevelPage > 0) LevelPage--;
|
||
}
|
||
if (IMouse.IsWheelDown()) {
|
||
if (QuestWheelNow< QuestWheelMax - 6) QuestWheelNow++;
|
||
if (LevelPage< 4) LevelPage++;
|
||
}
|
||
|
||
if (KeyPressNB.isKeyPress(48, "AradPassCloseKey")) {
|
||
MainState = false;
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
function AradPass(obj) {
|
||
local RootTab = getroottable();
|
||
if (!RootTab.rawin("AradPassCObj")) {
|
||
local Cobj = AradPassC();
|
||
RootTab.rawset("AradPassCObj", Cobj);
|
||
EventIcon("阿拉德探险记", 43, 43, Cobj);
|
||
} else {
|
||
RootTab["AradPassCObj"].Proc(obj);
|
||
RootTab["AradPassCObj"].Draw(obj);
|
||
}
|
||
}
|
||
|
||
if (getroottable().rawin("LenheartFuncTab")) {
|
||
getroottable()["LenheartFuncTab"].rawset("AradPassFunc", AradPass);
|
||
} else {
|
||
local T = {};
|
||
T.rawset("AradPassFunc", AradPass);
|
||
getroottable().rawset("LenheartFuncTab", T);
|
||
} |