/* 文件名:Exchange_auc.nut 路径:Project/Exchange/Exchange_auc.nut 创建日期:2025-07-23 13:13 文件用途:交易所拍卖行 */ class Exchange_aucC extends LenheartNewUI_Windows { //调试模式 // DeBugMode = true; //不是窗口 // NoWindow = true; //是否可见 Visible = false; Img = null; //标题按钮集合 TitleButtonList = null; //页面 Page = 0; //子页面 SubPage = 0; //总条数 Total = 0; //拍卖信息 AuctionInfo = null; //选中拍品 SelectAuction = null; function QueryExchange() { AuctionInfo = []; SendPackEx({ op = 21001003, type = Page + 1, offset = SubPage * 7 }) } constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { Childrens = []; TitleButtonList = []; AuctionInfo = []; //注册控件 RegisterWidget(); LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH); Img = {}; Img["main"] <- Rindro_Image("interface2/yosin/exchange.img"); //查询拍卖信息回包 RegisterPack(21001004, function(Chunk) { local Jso = Json.Decode(Chunk); Total = Jso.total; foreach(infoobj in Jso.info) { infoobj.itemName <- NativePointer(L_sq_I2P(L_sq_RA(L_sq_GetItem(infoobj.itemId) + 0x20))).readUnicodeString() local buf = Exchange_aucC_Item(this, infoobj); AuctionInfo.append(buf); } }.bindenv(this)); } function RegisterWidget() { //关闭按钮 local CloseButton = LenheartNewUI_BaseButton(388, 2, 11, 12, "interface/lenheartwindowcommon.img", 276); CloseButton.OnClick = function() { this.Visible = false; }.bindenv(this); Childrens.append(CloseButton); local LogicFunc = function(Btn) { foreach(Pos, obj in TitleButtonList) { if (obj != Btn) obj.State = 0; else { obj.State = 1; Page = Pos; } } QueryExchange(); }; local UpdateLogic = function(Btn) { if (SelectAuction) Btn.Visible = false; else Btn.Visible = true; } local FuncTabbar1 = LenheartNewUI_TabbarsText(4, 20, "装备"); FuncTabbar1.State = 1; FuncTabbar1.SetTextOffset(20, 4); AddChild(FuncTabbar1); FuncTabbar1.OnClickEx = LogicFunc.bindenv(this); TitleButtonList.append(FuncTabbar1); // local FuncTabbar2 = LenheartNewUI_TabbarsText(65, 20, "消耗品"); // FuncTabbar2.SetTextOffset(13, 3); // AddChild(FuncTabbar2); // FuncTabbar2.OnClickEx = LogicFunc.bindenv(this); // TitleButtonList.append(FuncTabbar2); // local FuncTabbar3 = LenheartNewUI_TabbarsText(126, 20, "材料"); // FuncTabbar3.SetTextOffset(20, 3); // AddChild(FuncTabbar3); // FuncTabbar3.OnClickEx = LogicFunc.bindenv(this); // TitleButtonList.append(FuncTabbar3); // local FuncTabbar4 = LenheartNewUI_TabbarsText(187, 20, "副职业"); // FuncTabbar4.SetTextOffset(13, 3); // AddChild(FuncTabbar4); // FuncTabbar4.OnClickEx = LogicFunc.bindenv(this); // TitleButtonList.append(FuncTabbar4); // local FuncTabbar5 = LenheartNewUI_TabbarsText(248, 20, "任务"); // FuncTabbar5.SetTextOffset(20, 3); // AddChild(FuncTabbar5); // FuncTabbar5.OnClickEx = LogicFunc.bindenv(this); // TitleButtonList.append(FuncTabbar5); local FuncTabbar6 = LenheartNewUI_TabbarsText(340, 20, "我的"); FuncTabbar6.SetTextOffset(20, 3); AddChild(FuncTabbar6); FuncTabbar6.OnClickEx = LogicFunc.bindenv(this); TitleButtonList.append(FuncTabbar6); //左翻页按钮 local LeftButton = LenheartNewUI_BaseButton(320, 350, 15, 15, "interface/lenheartwindowcommon.img", 34); LeftButton.OnClick = function() { if (SubPage > 0) SubPage--; QueryExchange(); }.bindenv(this); LeftButton.SetCallBackFunc(UpdateLogic.bindenv(this)); AddChild(LeftButton); //右翻页按钮 local RightButton = LenheartNewUI_BaseButton(380, 350, 15, 15, "interface/lenheartwindowcommon.img", 38); RightButton.OnClick = function() { if (SubPage + 1<((Total / 7) + 1)) SubPage++; QueryExchange(); }.bindenv(this); RightButton.SetCallBackFunc(UpdateLogic.bindenv(this)); AddChild(RightButton); local ByCallLogic = function(Btn) { if (!SelectAuction) Btn.Visible = false; else Btn.Visible = true; } local BuyButton = LenheartNewUI_ButtonText(120, 340, 5, "购买"); BuyButton.SetTextOffset(0, 1); BuyButton.OnClickEx = function(Btn) { if (Btn.Visible) { local T = { op = 21001005, uuid = SelectAuction.Info.uid } SendPackEx(T); SelectAuction = null; QueryExchange(); } }.bindenv(this); BuyButton.SetCallBackFunc(ByCallLogic.bindenv(this)); AddChild(BuyButton); local CancelButton = LenheartNewUI_ButtonText(230, 340, 5, "取消"); CancelButton.SetTextOffset(0, 1); CancelButton.OnClick = function() { SelectAuction = null; }.bindenv(this); CancelButton.SetCallBackFunc(ByCallLogic.bindenv(this)); AddChild(CancelButton); } //绘制主界面 function DrawMain(obj) { DrawNineBox(X, Y + 2, 405, 372, "interface/lenheartwindowcommon.img", 213); //背景框 Img["main"].DrawPng(2, X + 1, Y); DrawNineBox(X + 2, Y + 39, 400, 332, "interface/lenheartwindowcommon.img", 213); //背景框 // SelectAuction = Exchange_aucC_Item(this, { // //唯一id // uid = "1231", // itemId = 2243114, // itemName = "御影法杖", // count = 1, // price = 1000, // name = "Kina" // }); if (!SelectAuction) { //绘制交易物品 if (Page >= 0 && Page< 5) { if (AuctionInfo) { foreach(Pos, Object in AuctionInfo) { Object.Show(X + 4, Y + 44 + Pos * 44); } } } //绘制页数 local SubPageStr = (SubPage + 1).tostring() + "/" + ((Total / 7) + 1).tostring(); L_sq_DrawCode(SubPageStr, X + 359 - LenheartTextClass.GetStringLength(SubPageStr) / 2, Y + 352, sq_RGBA(230, 200, 155, 255), 0, 1); } else { //绘制交易唯一ID L_sq_DrawCode("交易码: " + SelectAuction.Info.uid, X + 8, Y + 60, sq_RGBA(230, 200, 155, 255), 0, 1); DrawItemBase(X + 8, Y + 80, SelectAuction.Info.itemId, SelectAuction.Info.count); //绘制名称 L_sq_DrawCode(SelectAuction.Info.itemName + "x" + SelectAuction.Info.count, X + 48, Y + 88, sq_RGBA(230, 200, 155, 255), 0, 1); //绘制价格 local Pstr = "售价: " + SelectAuction.Info.price + " 单价: " + (SelectAuction.Info.price / SelectAuction.Info.count + "/件"); L_sq_DrawCode(Pstr, X + 8, Y + 120, sq_RGBA(140, 255, 113, 255), 0, 1); //绘制卖家名称 L_sq_DrawCode("卖家: " + SelectAuction.Info.name, X + 8, Y + 140, sq_RGBA(230, 200, 155, 255), 0, 1); } } function Show(obj) { DrawMain(obj); LenheartNewUI_Windows.Show(obj); } function TopShow(obj) { LenheartNewUI_Windows.TopShow(obj); local MousePos_X = IMouse.GetXPos(); local MousePos_Y = IMouse.GetYPos(); if (Page >= 0 && Page< 5 && !SelectAuction) { if (AuctionInfo) { foreach(Pos, Object in AuctionInfo) { if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X + 4, Y + 44 + Pos * 44, 392, 39)) { Object.HoverShow(X + 4, Y + 44 + Pos * 44); } } } } } //鼠标左键按下回调 function OnMouseLbDown(MousePos_X, MousePos_Y) { LenheartNewUI_BaseWindow.OnMouseLbDown(MousePos_X, MousePos_Y); if (Page >= 0 && Page< 5 && !SelectAuction) { if (AuctionInfo) { foreach(Pos, Object in AuctionInfo) { if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X + 4, Y + 44 + Pos * 44, 392, 39)) { Object.OnMouseLbDown(X + 4, Y + 44 + Pos * 44); } } } } } //逻辑入口 function Proc(obj) { LenheartNewUI_Windows.SyncPos(X, Y); } function OpenCallBack() { Visible = true; QueryExchange(); } } function Lenheart_Exchange_auc_Fun(obj) { local RootTab = getroottable(); if (!RootTab.rawin("Exchange_auc_Obj")) { RootTab.rawset("Exchange_auc_Obj", true); local Win = LenheartNewUI_CreateWindow(Exchange_aucC, "交易所拍卖行窗口", ((getroottable().Rindro_Scr_Width - 405) / 2).tointeger(), 100, 405, 372, 28); EventList_Obj.AddEvent("点券交易所", 43, Win); } } getroottable()["LenheartFuncTab"].rawset("Exchange_aucFuncN", Lenheart_Exchange_auc_Fun); class Exchange_aucC_Item { //Img Img = null; //父对象 Parent = null; //信息 Info = null; constructor(Window, Info) { Parent = Window; Img = Window.Img["main"]; this.Info = Info; } function Show(X, Y) { Img.DrawPng(3, X, Y); local Xpos = X; local Ypos = Y; //绘制交易唯一ID L_sq_DrawCode("交易码: " + Info.uid, Xpos + 8, Ypos + 14, sq_RGBA(230, 200, 155, 255), 0, 1); //绘制道具 Parent.DrawItemBase(Xpos + 100, Ypos + 5, Info.itemId, Info.count); //绘制名称 L_sq_DrawCode(Info.itemName + "x" + Info.count, Xpos + 137, Ypos + 14, sq_RGBA(230, 200, 155, 255), 0, 1); //绘制价格 local Pstr = "售价: " + Info.price + " 单价: " + (Info.price / Info.count + "/件"); L_sq_DrawCode(Pstr, Xpos + 315 - LenheartTextClass.GetStringLength(Pstr) / 2, Ypos + 14, sq_RGBA(140, 255, 113, 255), 0, 1); } function HoverShow(X, Y) { Img.DrawPng(4, X, Y); } function OnMouseLbDown(X, Y) { Parent.SelectAuction = this; } } // L_Windows_List <- []; // getroottable().rawdelete("LenheartPluginsInitFlag"); // getroottable().rawdelete("EventList_Obj") // getroottable().rawdelete("Exchange_auc_Obj");