380 lines
12 KiB
Plaintext
380 lines
12 KiB
Plaintext
|
|
/*
|
||
|
|
文件名:MidsummerParty.nut
|
||
|
|
路径:Plugins/MidsummerParty/MidsummerParty.nut
|
||
|
|
创建日期:2023-10-28 17:40
|
||
|
|
文件用途:
|
||
|
|
*/
|
||
|
|
|
||
|
|
class MidsummerPartyC extends BasicsDrawTool {
|
||
|
|
WindowObj = null; //窗口对象
|
||
|
|
MainState = false; //主状态
|
||
|
|
X = 0;
|
||
|
|
Y = 0;
|
||
|
|
|
||
|
|
InitState = false;
|
||
|
|
|
||
|
|
ItemInfoObject = null;
|
||
|
|
RewardItemObject = null;
|
||
|
|
UseItemInfo = null;
|
||
|
|
ExRewardSchedule = null;
|
||
|
|
|
||
|
|
function GetInfoCallBack(Chunk) {
|
||
|
|
// Sout("收到包 : \n %L", Chunk);
|
||
|
|
local Jso = Json.Decode(Chunk);
|
||
|
|
foreach(Value in Jso.items) {
|
||
|
|
if (Value.Name2.len() == 0)
|
||
|
|
Value.Name2 = "Rindro-Team";
|
||
|
|
ItemInfoObject[Value.Id] <- Value;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function GetInfo() {
|
||
|
|
local T = {
|
||
|
|
op = 20061001
|
||
|
|
}
|
||
|
|
SendPack(T);
|
||
|
|
}
|
||
|
|
|
||
|
|
EndRewardFlag = false;
|
||
|
|
|
||
|
|
function GetRewardInfoCallBack(Chunk) {
|
||
|
|
// Sout("收到包 : \n %L", Chunk);
|
||
|
|
local Jso = Json.Decode(Chunk);
|
||
|
|
//常规奖励
|
||
|
|
foreach(Value in Jso.items) {
|
||
|
|
RewardItemObject[Value.index] <- Value;
|
||
|
|
// if (Value.ifhas == 0) EndRewardFlag = false;
|
||
|
|
}
|
||
|
|
//最终奖励
|
||
|
|
RewardItemObject["ExReward"] <- Jso.endItem;
|
||
|
|
//是否已经集齐
|
||
|
|
EndRewardFlag = Jso.endani;
|
||
|
|
//消耗道具
|
||
|
|
UseItemInfo.Id <- Jso.useItem;
|
||
|
|
//消耗道具数量
|
||
|
|
UseItemInfo.Count <- Jso.usrItemNum;
|
||
|
|
if (UseItemInfo.Count > 16) UseItemInfo.Count = 16;
|
||
|
|
//特殊奖励均衡器
|
||
|
|
ExRewardSchedule = Jso.plusNum;
|
||
|
|
local obj = sq_GetMyMasterCharacter();
|
||
|
|
switch (ExRewardSchedule) {
|
||
|
|
case 0:
|
||
|
|
break;
|
||
|
|
case 1:
|
||
|
|
obj.sq_PlaySound("SUMMERLISTEN_PLAY_01");
|
||
|
|
break;
|
||
|
|
case 2:
|
||
|
|
obj.sq_PlaySound("SUMMERLISTEN_PLAY_02");
|
||
|
|
break;
|
||
|
|
case 3:
|
||
|
|
obj.sq_PlaySound("SUMMERLISTEN_PLAY_03");
|
||
|
|
break;
|
||
|
|
case 4:
|
||
|
|
obj.sq_PlaySound("SUMMERLISTEN_PLAY_04");
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
|
||
|
|
InitState = true;
|
||
|
|
}
|
||
|
|
|
||
|
|
function GetRewardInfo() {
|
||
|
|
local T = {
|
||
|
|
op = 20061003
|
||
|
|
}
|
||
|
|
SendPack(T);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
AnimotionState = 0;
|
||
|
|
AnimotionEndFlag = 0;
|
||
|
|
NowReawrdObject = null;
|
||
|
|
|
||
|
|
function LotteryPackCallBack(Chunk) {
|
||
|
|
// Sout("收到包 : \n %L", Chunk);
|
||
|
|
local Jso = Json.Decode(Chunk);
|
||
|
|
NowReawrdObject = Jso.item;
|
||
|
|
AnimotionState = 1;
|
||
|
|
AnimotionEndFlag = Jso.endani;
|
||
|
|
local obj = sq_GetMyMasterCharacter();
|
||
|
|
obj.sq_PlaySound("SUMMERLISTEN_START");
|
||
|
|
}
|
||
|
|
|
||
|
|
//抽奖包
|
||
|
|
function LotteryPack() {
|
||
|
|
local T = {
|
||
|
|
op = 20061005
|
||
|
|
}
|
||
|
|
SendPack(T);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
function EndRewardPackCallBack(Chunk) {
|
||
|
|
GetRewardInfo();
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
//最终奖励包
|
||
|
|
function EndRewardPack() {
|
||
|
|
local T = {
|
||
|
|
op = 20061009
|
||
|
|
}
|
||
|
|
SendPack(T);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
constructor() {
|
||
|
|
ItemInfoObject = {};
|
||
|
|
RewardItemObject = {};
|
||
|
|
UseItemInfo = {};
|
||
|
|
|
||
|
|
//获取基础配置回调包
|
||
|
|
Pack_Control.rawset(20061002, GetInfoCallBack.bindenv(this));
|
||
|
|
//获取奖励配置回调包
|
||
|
|
Pack_Control.rawset(20061004, GetRewardInfoCallBack.bindenv(this));
|
||
|
|
//抽奖回调包
|
||
|
|
Pack_Control.rawset(20061008, LotteryPackCallBack.bindenv(this));
|
||
|
|
//最终奖励回包
|
||
|
|
Pack_Control.rawset(20061010, EndRewardPackCallBack.bindenv(this));
|
||
|
|
|
||
|
|
//获取基础配置
|
||
|
|
GetInfo();
|
||
|
|
//获取奖励配置
|
||
|
|
GetRewardInfo();
|
||
|
|
}
|
||
|
|
|
||
|
|
function DrawRewardAnimotion(obj) {
|
||
|
|
if (AnimotionState == 1) {
|
||
|
|
local Ani = T_DrawDynamicAni(obj, "common/midsummerpartypackage/main_play.ani", X, Y, "MidsummerPartyCR1Effect");
|
||
|
|
if (sq_IsEnd(Ani)) {
|
||
|
|
sq_Rewind(Ani);
|
||
|
|
AnimotionState = 2;
|
||
|
|
local obj = sq_GetMyMasterCharacter();
|
||
|
|
obj.sq_PlaySound("SUMMERLISTEN_RESULT");
|
||
|
|
}
|
||
|
|
} else if (AnimotionState == 2) {
|
||
|
|
local Ani = T_DrawDynamicAni(obj, "common/midsummerpartypackage/main_slotchange.ani", X + 81 + ((NowReawrdObject.index % 4) * 132), Y + 102 + ((NowReawrdObject.index / 4) * 70), "MidsummerPartyCR2Effect");
|
||
|
|
if (sq_IsEnd(Ani)) {
|
||
|
|
sq_Rewind(Ani);
|
||
|
|
AnimotionState = 3;
|
||
|
|
}
|
||
|
|
} else if (AnimotionState == 3) {
|
||
|
|
local path = "normal";
|
||
|
|
if (NowReawrdObject.typ == 1) path = "special";
|
||
|
|
local Ani = T_DrawDynamicAni(obj, "common/midsummerpartypackage/reward_" + path + "_00.ani", X, Y, "MidsummerPartyCREffect" + NowReawrdObject.typ);
|
||
|
|
//特殊奖励
|
||
|
|
DrawItemEx(X + 382, Y + 285, NowReawrdObject.itemid, NowReawrdObject.num);
|
||
|
|
|
||
|
|
local OkButton = LenheartBaseButton(X + 362, Y + 344, 68, 35, "interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 11);
|
||
|
|
OkButton.Show();
|
||
|
|
if (OkButton.isLBActive()) {
|
||
|
|
local obj = sq_GetMyMasterCharacter();
|
||
|
|
obj.sq_PlaySound("SUMMERLISTEN_CLICK");
|
||
|
|
|
||
|
|
if (AnimotionEndFlag) {
|
||
|
|
AnimotionState = 4;
|
||
|
|
local obj = sq_GetMyMasterCharacter();
|
||
|
|
obj.sq_PlaySound("SUMMERLISTEN_RESULT_02");
|
||
|
|
} else {
|
||
|
|
AnimotionState = 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
GetRewardInfo();
|
||
|
|
}
|
||
|
|
} else if (AnimotionState == 4) {
|
||
|
|
local Ani = T_DrawDynamicAni(obj, "common/midsummerpartypackage/main_slotchange_all.ani", X, Y, "MidsummerPartyCR6Effect");
|
||
|
|
if (sq_IsEnd(Ani)) {
|
||
|
|
sq_Rewind(Ani);
|
||
|
|
AnimotionState = 0;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
//绘制主界面
|
||
|
|
function DrawMain(obj) {
|
||
|
|
if (!InitState) return;
|
||
|
|
//绘制主界面
|
||
|
|
L_sq_DrawImg("interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 0, X, Y);
|
||
|
|
L_sq_SetDrawImgModel(2, 0);
|
||
|
|
L_sq_DrawImg("interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 44, X + 242, Y + 22, 0, sq_RGBA(255, 255, 255, 250), 1.0, 1.0, 1);
|
||
|
|
L_sq_ReleaseDrawImgModel();
|
||
|
|
T_DrawDynamicAni(obj, "common/midsummerpartypackage/main_loop.ani", X, Y, "MidsummerPartyCMainEffect");
|
||
|
|
|
||
|
|
if (EndRewardFlag) {
|
||
|
|
L_sq_DrawImg("interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 39, X + 92, Y + 114);
|
||
|
|
|
||
|
|
local OkButton = LenheartBaseButton(X + 652, Y + 239, 68, 35, "interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 11);
|
||
|
|
OkButton.Show();
|
||
|
|
if (OkButton.isLBActive()) {
|
||
|
|
local obj = sq_GetMyMasterCharacter();
|
||
|
|
obj.sq_PlaySound("SUMMERLISTEN_CLICK");
|
||
|
|
EndRewardPack();
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
//常规奖励
|
||
|
|
foreach(Value in RewardItemObject) {
|
||
|
|
if ("index" in Value) {
|
||
|
|
if (Value.ifhas) {
|
||
|
|
L_sq_DrawImg("interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 23 + Value.index, X + 81 + ((Value.index % 4) * 132), Y + 102 + ((Value.index / 4) * 70));
|
||
|
|
} else {
|
||
|
|
DrawItemEx(X + 142 + ((Value.index % 4) * 132), Y + 134 + ((Value.index / 4) * 70), Value.itemid, Value.num);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//特殊奖励
|
||
|
|
DrawItemEx(X + 672, Y + 204, RewardItemObject.ExReward, 1);
|
||
|
|
|
||
|
|
//消耗道具信息绘制
|
||
|
|
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + 271, Y + 448, 24, 24)) {
|
||
|
|
ItemInfoDrawS = {};
|
||
|
|
ItemInfoDrawS.X <- X + 271;
|
||
|
|
ItemInfoDrawS.Y <- Y + 448;
|
||
|
|
ItemInfoDrawS.ItemId <- UseItemInfo.Id;
|
||
|
|
}
|
||
|
|
|
||
|
|
//消耗道具数量绘制
|
||
|
|
L_sq_DrawImg("interface2/cs_shop/cs_packageevent/2021_summer/num_blue.img", 10, X + 258, Y + 465);
|
||
|
|
DrawSmallNumber(UseItemInfo.Count);
|
||
|
|
|
||
|
|
//特殊奖励均衡器
|
||
|
|
L_sq_DrawImg("interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 5 + ExRewardSchedule, X + 459, Y + 431);
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
//启动按钮
|
||
|
|
local PlayButton = LenheartBaseButton(X + 338, Y + 410, 121, 86, "interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 1);
|
||
|
|
PlayButton.Show();
|
||
|
|
if (PlayButton.isLBActive()) {
|
||
|
|
local obj = sq_GetMyMasterCharacter();
|
||
|
|
obj.sq_PlaySound("SUMMERLISTEN_TAG");
|
||
|
|
LotteryPack();
|
||
|
|
}
|
||
|
|
|
||
|
|
//购买按钮
|
||
|
|
local ShopButton = LenheartBaseButton(X + 352, Y + 500, 121, 86, "interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 40);
|
||
|
|
ShopButton.Show();
|
||
|
|
if (ShopButton.isLBActive()) {
|
||
|
|
local obj = sq_GetMyMasterCharacter();
|
||
|
|
obj.sq_PlaySound("SUMMERLISTEN_CLICK");
|
||
|
|
L_sq_UseSkill(DIK_F5);
|
||
|
|
MainState = false;
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
//开启界面回调
|
||
|
|
function OpenClassCallBack() {
|
||
|
|
|
||
|
|
L_NewWindows("Lenheart", 170, 0x65535);
|
||
|
|
local W = sq_GetPopupWindowMainCotrol(170);
|
||
|
|
W.SetVisible(false);
|
||
|
|
W.SetEnable(false);
|
||
|
|
|
||
|
|
|
||
|
|
//获取奖励配置
|
||
|
|
GetRewardInfo();
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
//绘制道具相信信息
|
||
|
|
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;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
ItemInfoDrawS = null;
|
||
|
|
//绘制入口
|
||
|
|
function Draw(obj) {
|
||
|
|
ItemInfoDrawS = null;
|
||
|
|
|
||
|
|
if (MainState) {
|
||
|
|
if (WindowObj) {
|
||
|
|
DrawMain(obj);
|
||
|
|
DrawRewardAnimotion(obj);
|
||
|
|
WindowObj.Show(obj);
|
||
|
|
X = WindowObj.X;
|
||
|
|
Y = WindowObj.Y;
|
||
|
|
|
||
|
|
DrawItemInfo(obj);
|
||
|
|
} else {
|
||
|
|
WindowObj = LenheartWindow(X, Y, 800, 600, 28); //坐标 大小 标题栏高度
|
||
|
|
// WindowObj.DeBugMode = true;
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
if (WindowObj && WindowObj.YMouseSw == false) {
|
||
|
|
IMouse.ReleaseMouseClick();
|
||
|
|
WindowObj.YMouseSw = true;
|
||
|
|
WindowObj = null;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//逻辑入口
|
||
|
|
function Proc(obj) {
|
||
|
|
if (KeyPressNB.isKeyPress(48, "MidsummerPartyCloseKey")) {
|
||
|
|
MainState = false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
//绘制道具带道具信息
|
||
|
|
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;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
//绘制等级数字
|
||
|
|
function DrawSmallNumber(num) {
|
||
|
|
num = num.tostring();
|
||
|
|
local x = X + 284;
|
||
|
|
local y = Y + 465;
|
||
|
|
if (num.len() == 2) x = X + 276;
|
||
|
|
for (local i = 0; i< num.len(); i++) {
|
||
|
|
local n = num.slice(i, i + 1);
|
||
|
|
n = n.tointeger();
|
||
|
|
local Img = "interface2/cs_shop/cs_packageevent/2021_summer/num_blue.img";
|
||
|
|
L_sq_DrawImg(Img, n, x + (i * 9), y);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function MidsummerParty(obj) {
|
||
|
|
local RootTab = getroottable();
|
||
|
|
if (!RootTab.rawin("MidsummerPartyCObj")) {
|
||
|
|
local Cobj = MidsummerPartyC();
|
||
|
|
RootTab.rawset("MidsummerPartyCObj", Cobj);
|
||
|
|
EventIcon("希曼音乐会", 133, 133, Cobj);
|
||
|
|
} else {
|
||
|
|
RootTab["MidsummerPartyCObj"].Proc(obj);
|
||
|
|
RootTab["MidsummerPartyCObj"].Draw(obj);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (getroottable().rawin("LenheartFuncTab")) {
|
||
|
|
getroottable()["LenheartFuncTab"].rawset("MidsummerParty_LenheartFunc", MidsummerParty);
|
||
|
|
} else {
|
||
|
|
local T = {};
|
||
|
|
T.rawset("MidsummerParty_LenheartFunc", MidsummerParty);
|
||
|
|
getroottable().rawset("LenheartFuncTab", T);
|
||
|
|
}
|