111
This commit is contained in:
326
Project/MidsummerParty/MidsummerParty.nut
Normal file
326
Project/MidsummerParty/MidsummerParty.nut
Normal file
@@ -0,0 +1,326 @@
|
||||
/*
|
||||
文件名:MidsummerParty.nut
|
||||
路径:Project/MidsummerParty/MidsummerParty.nut
|
||||
创建日期:2024-08-20 08:02
|
||||
文件用途:希曼音乐会
|
||||
*/
|
||||
|
||||
class MidsummerPartyC extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
|
||||
//不是窗口
|
||||
// NoWindow = true;
|
||||
|
||||
//是否可见
|
||||
Visible = false;
|
||||
|
||||
InitState = false;
|
||||
|
||||
//最终奖励条件是否达成
|
||||
EndRewardFlag = false;
|
||||
|
||||
//奖励对象
|
||||
RewardItemObject = null;
|
||||
//消耗道具
|
||||
UseItemInfo = null;
|
||||
ExRewardSchedule = null;
|
||||
|
||||
//抽奖完成的Ok按钮
|
||||
OkButtonFlag = 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 GetInfo() {
|
||||
local T = {
|
||||
op = 20061001
|
||||
}
|
||||
SendPackEx(T);
|
||||
}
|
||||
|
||||
function GetRewardInfo() {
|
||||
local T = {
|
||||
op = 20061003
|
||||
}
|
||||
SendPackEx(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 EndRewardPackCallBack(Chunk) {
|
||||
GetRewardInfo();
|
||||
}
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
RewardItemObject = {};
|
||||
UseItemInfo = {};
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
|
||||
|
||||
//获取奖励配置回调包
|
||||
Pack_Control.rawset(20061004, GetRewardInfoCallBack.bindenv(this));
|
||||
//抽奖回调包
|
||||
Pack_Control.rawset(20061008, LotteryPackCallBack.bindenv(this));
|
||||
//最终奖励回包
|
||||
Pack_Control.rawset(20061010, EndRewardPackCallBack.bindenv(this));
|
||||
|
||||
//获取基础配置
|
||||
GetInfo();
|
||||
//获取奖励配置
|
||||
GetRewardInfo();
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
|
||||
//关闭按钮
|
||||
local EndRewardGetButton = LenheartNewUI_BaseButton(652 - 21, 239, 68, 35, "interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 11);
|
||||
EndRewardGetButton.OnClick = function() {
|
||||
local obj = sq_GetMyMasterCharacter();
|
||||
obj.sq_PlaySound("SUMMERLISTEN_CLICK");
|
||||
local T = {
|
||||
op = 20061009
|
||||
}
|
||||
SendPackEx(T);
|
||||
}.bindenv(this);
|
||||
EndRewardGetButton.SetCallBackFunc(function(win) {
|
||||
if (EndRewardFlag) {
|
||||
win.State = 0;
|
||||
} else {
|
||||
win.State = 8;
|
||||
}
|
||||
}.bindenv(this));
|
||||
Childrens.append(EndRewardGetButton);
|
||||
|
||||
|
||||
//启动按钮
|
||||
local PlayButton = LenheartNewUI_BaseButton(317, 410, 121, 86, "interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 1);
|
||||
PlayButton.OnClick = function() {
|
||||
local obj = sq_GetMyMasterCharacter();
|
||||
obj.sq_PlaySound("SUMMERLISTEN_TAG");
|
||||
local T = {
|
||||
op = 20061005
|
||||
}
|
||||
SendPackEx(T);
|
||||
}.bindenv(this);
|
||||
Childrens.append(PlayButton);
|
||||
|
||||
//购买按钮
|
||||
local ShopButton = LenheartNewUI_BaseButton(331, 500, 93, 26, "interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 40);
|
||||
ShopButton.OnClick = function() {
|
||||
local obj = sq_GetMyMasterCharacter();
|
||||
obj.sq_PlaySound("SUMMERLISTEN_CLICK");
|
||||
L_sq_UseSkill(DIK_F5);
|
||||
// CloseWindow();
|
||||
}.bindenv(this);
|
||||
Childrens.append(ShopButton);
|
||||
|
||||
//抽奖完成的Ok按钮
|
||||
local OkButton = LenheartNewUI_BaseButton(341, 344, 68, 35, "interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 11);
|
||||
OkButton.OnClick = function() {
|
||||
OkButtonFlag = false;
|
||||
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;
|
||||
}
|
||||
|
||||
local T = {
|
||||
op = 20061003
|
||||
}
|
||||
SendPackEx(T);
|
||||
}.bindenv(this);
|
||||
OkButton.SetCallBackFunc(function(win) {
|
||||
if (OkButtonFlag) {
|
||||
win.Localtion_X = 341;
|
||||
} else {
|
||||
win.Localtion_X = -50000;
|
||||
}
|
||||
}.bindenv(this));
|
||||
Childrens.append(OkButton);
|
||||
}
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
if (!InitState) return;
|
||||
//绘制主界面
|
||||
L_sq_DrawImg("interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 0, X - 21, Y);
|
||||
L_sq_SetDrawImgModel(2, 0);
|
||||
L_sq_DrawImg("interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 44, X + 242 - 21, Y + 22, 0, sq_RGBA(255, 255, 255, 250), 1.0, 1.0);
|
||||
L_sq_ReleaseDrawImgModel();
|
||||
T_DrawDynamicAni(obj, "common/midsummerpartypackage/main_loop.ani", X - 21, Y, "MidsummerPartyCMainEffect");
|
||||
|
||||
|
||||
if (EndRewardFlag) {
|
||||
L_sq_DrawImg("interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 39, X + 92, Y + 114);
|
||||
} 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 - 21 + 81 + ((Value.index % 4) * 132), Y + 102 + ((Value.index / 4) * 70));
|
||||
} else {
|
||||
DrawItemBase(X - 21 + 142 + ((Value.index % 4) * 132), Y + 134 + ((Value.index / 4) * 70), Value.itemid, Value.num);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//特殊奖励
|
||||
DrawItemBase(X - 21 + 672, Y + 204, RewardItemObject.ExReward, 1);
|
||||
|
||||
//消耗道具数量绘制
|
||||
L_sq_DrawImg("interface2/cs_shop/cs_packageevent/2021_summer/num_blue.img", 10, X - 21 + 258, Y + 465);
|
||||
DrawSmallNumber(UseItemInfo.Count);
|
||||
|
||||
//特殊奖励均衡器
|
||||
L_sq_DrawImg("interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer.img", 5 + ExRewardSchedule, X - 21 + 459, Y + 431);
|
||||
}
|
||||
|
||||
function DrawRewardAnimotion(obj) {
|
||||
if (AnimotionState == 1) {
|
||||
local Ani = T_DrawDynamicAni(obj, "common/midsummerpartypackage/main_play.ani", X - 21, 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 - 21 + 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 - 21, Y, "MidsummerPartyCREffect" + NowReawrdObject.typ);
|
||||
//特殊奖励
|
||||
DrawItemEx(X - 21 + 382, Y + 285, NowReawrdObject.itemid, NowReawrdObject.num);
|
||||
|
||||
OkButtonFlag = true;
|
||||
} else if (AnimotionState == 4) {
|
||||
local Ani = T_DrawDynamicAni(obj, "common/midsummerpartypackage/main_slotchange_all.ani", X - 21, Y, "MidsummerPartyCR6Effect");
|
||||
if (sq_IsEnd(Ani)) {
|
||||
sq_Rewind(Ani);
|
||||
AnimotionState = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//绘制等级数字
|
||||
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 - 21 + (i * 9), y);
|
||||
}
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
DrawRewardAnimotion(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
|
||||
function OpenCallBack() {
|
||||
//获取基础配置
|
||||
GetInfo();
|
||||
//获取奖励配置
|
||||
GetRewardInfo();
|
||||
Visible = true;
|
||||
ResetFocus();
|
||||
}
|
||||
|
||||
}
|
||||
getroottable().rawdelete("MidsummerParty_Obj");
|
||||
|
||||
function Lenheart_MidsummerParty_Fun(obj) {
|
||||
local RootTab = getroottable();
|
||||
if (!RootTab.rawin("MidsummerParty_Obj")) {
|
||||
RootTab.rawset("MidsummerParty_Obj", true);
|
||||
local Winobj = LenheartNewUI_CreateWindow(MidsummerPartyC, "希曼音乐会窗口", ((getroottable().Rindro_Scr_Width - 760) / 2).tointeger(), 12, 760, 571, 100);
|
||||
EventList_Obj.AddEvent("希曼音乐会", 733, Winobj, "interface2/hud/information_button/information_button_cn.img");
|
||||
}
|
||||
}
|
||||
|
||||
getroottable()["LenheartFuncTab"].rawset("MidsummerPartyFuncN", Lenheart_MidsummerParty_Fun);
|
||||
Reference in New Issue
Block a user