11111
This commit is contained in:
182
Project/EventShop/EventShop.nut
Normal file
182
Project/EventShop/EventShop.nut
Normal file
@@ -0,0 +1,182 @@
|
||||
/*
|
||||
文件名:EventShop.nut
|
||||
路径:Project/EventShop/EventShop.nut
|
||||
创建日期:2025-01-11 13:59
|
||||
文件用途:活动商店
|
||||
*/
|
||||
class EventShopC extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
|
||||
//不是窗口
|
||||
// NoWindow = true;
|
||||
|
||||
//是否可见
|
||||
Visible = false;
|
||||
|
||||
//商品列表
|
||||
GoodsList = null;
|
||||
//当前商店归属NPC
|
||||
NPC_Index = -1;
|
||||
//活动币数量
|
||||
ActivityCoin = 99999;
|
||||
|
||||
WindowImg = Rindro_Image("eventshop/main.img");
|
||||
|
||||
//配置包
|
||||
function BaseConfig(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
//注册NPC功能
|
||||
RegisterNpc(Jso.npc);
|
||||
foreach(npc_id in Jso.npc) {
|
||||
RegisterNpc(npc_id);
|
||||
}
|
||||
}
|
||||
|
||||
//请求商品列表
|
||||
function RequestGoodsList(Index) {
|
||||
local T = {
|
||||
op = 20088001,
|
||||
npc = Index
|
||||
}
|
||||
SendPackEx(T);
|
||||
}
|
||||
|
||||
//请求商品列表回调
|
||||
function RequestGoodsListCallBack(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
GoodsList = Jso.itemShops;
|
||||
ActivityCoin = Jso.count;
|
||||
NPC_Index = Jso.npc;
|
||||
//初始化商店
|
||||
InitGoodsList();
|
||||
}
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
|
||||
Pack_Control.rawset(20088004, BaseConfig.bindenv(this));
|
||||
Pack_Control.rawset(20088002, RequestGoodsListCallBack.bindenv(this));
|
||||
|
||||
RequestGoodsList(2);
|
||||
}
|
||||
|
||||
function RegisterNpc(id) {
|
||||
local EachManager = getroottable()["L_Each_Obj"];
|
||||
//先清空注册
|
||||
EachManager.RemoveEachForNpc(id);
|
||||
|
||||
EachManager.AddEachForNpc(id, function(SThis) {
|
||||
//关闭按钮
|
||||
local ApplyEngagementButton = LenheartNewUI_Each_BaseButton(0, 0, 100, 21, "interface2/popup_menu/popup_back.img", 3);
|
||||
ApplyEngagementButton.Icon = "interface2/popup_menu/popup_icon_cn.img";
|
||||
ApplyEngagementButton.IconIdx = 7;
|
||||
ApplyEngagementButton.Str = "活动商店";
|
||||
ApplyEngagementButton.OnClick = function(Button) {
|
||||
Button.Parent.CloseAllEach();
|
||||
Button.Parent.CloseWindow();
|
||||
RequestGoodsList(Button.Parent.NPC_Index);
|
||||
Visible = true;
|
||||
ResetFocus();
|
||||
}.bindenv(this);
|
||||
ApplyEngagementButton.SetCallBackFunc(function(Button) {})
|
||||
SThis.AddChild(ApplyEngagementButton);
|
||||
}.bindenv(this));
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
}
|
||||
|
||||
//初始化商店
|
||||
function InitGoodsList() {
|
||||
|
||||
}
|
||||
|
||||
//绘制项目
|
||||
function DrawItemCur(Object, XPos, Ypos) {
|
||||
DrawItemBase(XPos, Ypos, Object.itemId, Object.num);
|
||||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, XPos, Ypos, 24, 24)) {
|
||||
WindowImg.DrawPng(1, XPos, Ypos);
|
||||
L_sq_DrawCode("所需活动币: " + Object.reItemNum, X + 26, Y + 288, sq_RGBA(189, 159, 126, 255), 0, 1);
|
||||
if (MouseClickFlag) {
|
||||
local T = {
|
||||
op = 20088005,
|
||||
npc = NPC_Index,
|
||||
itemId = Object.itemId,
|
||||
itemNum = 1
|
||||
}
|
||||
SendPackEx(T);
|
||||
}
|
||||
} else {
|
||||
// if (Info.vis) {
|
||||
// //关闭道具信息窗口
|
||||
// L_Sq_CallFunc(0xE6B2B0, "int", FFI_THISCALL, ["int", "int", "int", "char"], 0x1ADE090, 0x113, 0xFFFFFFFF, 0x0);
|
||||
// Info.vis = false;
|
||||
// DrawItemCurObject = null;
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
MouseClickFlag = false;
|
||||
//鼠标左键弹起回调
|
||||
function OnMouseLbUp(MousePos_X, MousePos_Y) {
|
||||
MouseClickFlag = true;
|
||||
LenheartNewUI_Windows.OnMouseLbUp(MousePos_X, MousePos_Y);
|
||||
}
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
if (!GoodsList) return;
|
||||
WindowImg.DrawPng(0, X + 0, Y + 0);
|
||||
|
||||
foreach(Pos, Object in GoodsList) {
|
||||
DrawItemCur(Object, X + 24 + ((Pos % 7) * 30), Y + 64 + ((Pos / 7) * 30));
|
||||
}
|
||||
|
||||
//绘制活动币数量
|
||||
L_sq_DrawCode(ActivityCoin.tostring(), X + 188 - LenheartTextClass.GetStringLength(ActivityCoin.tostring()) / 2, Y + 288, sq_RGBA(189, 159, 126, 255), 0, 1);
|
||||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + 124, Y + 284, 21, 21)) {
|
||||
L_sq_DrawWindow(X + 40, Y - 100 + 350, 224, 30, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||
local QuestTipsStr = "拥有的活动币数量,活动币可在游戏中获得,请留意有以内的各种玩法!";
|
||||
local QuestTipsArray = L_sq_GetStringDrawArray(QuestTipsStr, 251);
|
||||
foreach(Pos, va in QuestTipsArray) {
|
||||
// Sout("文本内容嗯: %L", va);
|
||||
L_sq_DrawCode(va, X + 40 + 7, Y - 100 + 7 + 350 + (Pos * 16), 0xFFFFFFFF, 1, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
MouseClickFlag = false;
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
|
||||
}
|
||||
getroottable().rawdelete("EventShop_Obj");
|
||||
|
||||
function Lenheart_EventShop_Fun(obj) {
|
||||
local RootTab = getroottable();
|
||||
if (!RootTab.rawin("EventShop_Obj")) {
|
||||
RootTab.rawset("EventShop_Obj", true);
|
||||
LenheartNewUI_CreateWindow(EventShopC, "活动商店窗口", 60, 120, 260, 318, 32);
|
||||
}
|
||||
}
|
||||
|
||||
getroottable()["LenheartFuncTab"].rawset("EventShopFuncN", Lenheart_EventShop_Fun);
|
||||
Reference in New Issue
Block a user