111
This commit is contained in:
330
Project/ServerAuction/ServerAuction.nut
Normal file
330
Project/ServerAuction/ServerAuction.nut
Normal file
@@ -0,0 +1,330 @@
|
||||
/*
|
||||
文件名:ServerAuction.nut
|
||||
路径:Project/ServerAuction/ServerAuction.nut
|
||||
创建日期:2024-08-20 10:02
|
||||
文件用途:全服竞拍
|
||||
*/
|
||||
class ServerAuctionC extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
|
||||
//不是窗口
|
||||
// NoWindow = true;
|
||||
|
||||
//是否可见
|
||||
Visible = false;
|
||||
|
||||
//竞拍是否开启状态
|
||||
AuctionState = false;
|
||||
//竞拍项目列表
|
||||
AuctionItemList = null;
|
||||
//竞拍名字
|
||||
AuctionName = "暂无竞拍开启";
|
||||
//当前竞拍信息
|
||||
AuctionRealInfo = null;
|
||||
|
||||
//刷新包时间
|
||||
PackTimer = 0;
|
||||
|
||||
//是否Gm
|
||||
IsGm = false;
|
||||
//Gm可开启竞拍列表
|
||||
AuctionList = null;
|
||||
//Gm选择的开启竞拍Item
|
||||
SelectAuctionItem = null;
|
||||
|
||||
//展示时间
|
||||
InitTime = 0;
|
||||
//竞拍时间
|
||||
ContinuityTime = 0;
|
||||
|
||||
function GetConfigCallBack(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
AuctionState = true;
|
||||
AuctionItemList = Jso.lots;
|
||||
AuctionName = Jso.name;
|
||||
//展示时间
|
||||
InitTime = Jso.initTime;
|
||||
//竞拍时间
|
||||
ContinuityTime = Jso.continuityTime;
|
||||
}
|
||||
|
||||
function GetConfig() {
|
||||
local T = {
|
||||
op = 20067001
|
||||
}
|
||||
SendPackEx(T);
|
||||
}
|
||||
|
||||
function GmCallBack(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
IsGm = true;
|
||||
AuctionList = Jso.nameS;
|
||||
}
|
||||
|
||||
function AuctionRealInfoCallBack(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
AuctionRealInfo = Jso;
|
||||
PackTimer = Clock();
|
||||
}
|
||||
|
||||
function CloseAuctionCallBack(Chunk) {
|
||||
//竞拍是否开启状态
|
||||
AuctionState = false;
|
||||
//竞拍项目列表
|
||||
AuctionItemList = null;
|
||||
//竞拍名字
|
||||
AuctionName = "暂无竞拍开启";
|
||||
//当前竞拍信息
|
||||
AuctionRealInfo = null;
|
||||
|
||||
//刷新包时间
|
||||
PackTimer = 0;
|
||||
|
||||
//是否Gm
|
||||
IsGm = false;
|
||||
//Gm可开启竞拍列表
|
||||
AuctionList = null;
|
||||
//Gm选择的开启竞拍Item
|
||||
SelectAuctionItem = null;
|
||||
|
||||
//展示时间
|
||||
InitTime = 0;
|
||||
//竞拍时间
|
||||
ContinuityTime = 0;
|
||||
CloseWindow();
|
||||
}
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
AuctionList = [];
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
|
||||
|
||||
//获取竞拍配置
|
||||
Pack_Control.rawset(20067010, GetConfigCallBack.bindenv(this));
|
||||
//Gm回调包
|
||||
Pack_Control.rawset(20067020, GmCallBack.bindenv(this));
|
||||
//拍卖实时信息包
|
||||
Pack_Control.rawset(20067012, AuctionRealInfoCallBack.bindenv(this));
|
||||
//竞拍结束包
|
||||
Pack_Control.rawset(20067014, CloseAuctionCallBack.bindenv(this));
|
||||
GetConfig();
|
||||
}
|
||||
|
||||
//输入框
|
||||
InputObject = null;
|
||||
|
||||
function RegisterWidget() {
|
||||
//关闭按钮
|
||||
local CloseButton = LenheartNewUI_BaseButton(308, 4, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||||
CloseButton.OnClick = function() {
|
||||
this.Visible = false;
|
||||
}.bindenv(this);
|
||||
CloseButton.SetCallBackFunc(function(win) {
|
||||
if (AuctionState) {
|
||||
win.Localtion_X = 308;
|
||||
win.Localtion_Y = 4;
|
||||
} else {
|
||||
win.Localtion_X = 252;
|
||||
win.Localtion_Y = 2;
|
||||
}
|
||||
}.bindenv(this))
|
||||
Childrens.append(CloseButton);
|
||||
|
||||
|
||||
InputObject = LenheartNewUI_BaseInput(26, 340, 130, 20);
|
||||
InputObject.SetCallBackFunc(function(win) {
|
||||
if (AuctionState) win.Localtion_X = 26;
|
||||
else win.Localtion_X = -826;
|
||||
}.bindenv(this))
|
||||
AddChild(InputObject);
|
||||
|
||||
local PostButton = LenheartNewUI_ButtonText(220, 338, 5, "提交竞拍");
|
||||
PostButton.DWidth = 30;
|
||||
PostButton.Width = 86;
|
||||
PostButton.SetTextOffset(1, 1);
|
||||
PostButton.OnClick = function() {
|
||||
if (InputObject.str.len() > 0 && AuctionRealInfo) {
|
||||
local Jso = {
|
||||
op = 20067005,
|
||||
count = InputObject.str.tointeger(),
|
||||
}
|
||||
print(Jso.count);
|
||||
SendPackEx(Jso);
|
||||
}
|
||||
}.bindenv(this);
|
||||
PostButton.SetCallBackFunc(function(win) {
|
||||
if (AuctionState) win.Localtion_X = 220;
|
||||
else win.Localtion_X = -826;
|
||||
//物品展示阶段
|
||||
if (AuctionRealInfo && AuctionRealInfo.state == 0) {
|
||||
win.State = 8;
|
||||
win.TextStr = "展示阶段";
|
||||
} else {
|
||||
win.State = 0;
|
||||
win.TextStr = "提交竞拍";
|
||||
}
|
||||
}.bindenv(this))
|
||||
AddChild(PostButton);
|
||||
|
||||
local OpenAuctionButton = LenheartNewUI_ButtonText(220, 393, 5, "开启竞拍");
|
||||
OpenAuctionButton.DWidth = 30;
|
||||
OpenAuctionButton.Width = 86;
|
||||
OpenAuctionButton.SetTextOffset(1, 1);
|
||||
OpenAuctionButton.OnClick = function() {
|
||||
if (SelectAuctionItem != null) {
|
||||
local Jso = {
|
||||
op = 20067021,
|
||||
id = AuctionList[SelectAuctionItem][1]
|
||||
}
|
||||
SendPackEx(Jso);
|
||||
CloseWindow();
|
||||
}
|
||||
}.bindenv(this);
|
||||
OpenAuctionButton.SetCallBackFunc(function(win) {
|
||||
if (!AuctionState && IsGm) win.Localtion_X = 95;
|
||||
else win.Localtion_X = -826;
|
||||
}.bindenv(this))
|
||||
AddChild(OpenAuctionButton);
|
||||
}
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
|
||||
if (AuctionState && AuctionRealInfo) {
|
||||
//绘制背景
|
||||
L_sq_DrawImg("interface2/yosin/qfjp.img", 4, X, Y);
|
||||
//绘制标题
|
||||
L_sq_DrawCode(AuctionName, X + 196 - LenheartTextClass.GetStringLength(AuctionName), Y + 6, sq_RGBA(227, 212, 154, 250), 0, 1);
|
||||
// foreach(Pos, Value in AuctionItemList) {
|
||||
for (local i = 0; i< 5; i++) {
|
||||
if (i< AuctionItemList.len()) {
|
||||
local Pos = i;
|
||||
local Value = AuctionItemList[i];
|
||||
//当前拍品
|
||||
if (Pos == AuctionRealInfo.idx && AuctionRealInfo.state == 1) {
|
||||
local CostItemId = Value.cost;
|
||||
if (Value.cost == -1) CostItemId = 7906;
|
||||
if (Value.cost == -2) CostItemId = 133;
|
||||
//绘制扣除道具
|
||||
if (Rindro_ItemInfoObject.rawin(CostItemId)) DrawItemEx(X + 40, Y + 284, CostItemId, 1);
|
||||
else L_Sq_DrawItem(X + 40, Y + 284, CostItemId, 1, 0, 0, 0);
|
||||
|
||||
local CostName = "";
|
||||
if (Value.cost == 0) CostName = "金币";
|
||||
else if (Value.cost == -1) CostName = "点券";
|
||||
else if (Value.cost == -2) CostName = "代币券";
|
||||
else CostName = Rindro_ItemInfoObject[CostItemId].Name;
|
||||
//绘制扣除道具名字
|
||||
L_sq_DrawCode(CostName, X + 79, Y + 300, sq_RGBA(227, 212, 154, 250), 0, 1);
|
||||
//绘制竞品名
|
||||
L_sq_DrawCode(Rindro_ItemInfoObject[Value.itemId].Name, X + 120, Y + 207, sq_RGBA(227, 212, 154, 250), 0, 1);
|
||||
//绘制最高竞价者
|
||||
L_sq_DrawCode(AuctionRealInfo.name, X + 120, Y + 230, sq_RGBA(227, 212, 154, 250), 0, 1);
|
||||
//绘制最高竞拍价
|
||||
L_sq_DrawCode(AuctionRealInfo.costcount.tostring(), X + 120, Y + 252, sq_RGBA(227, 212, 154, 250), 0, 1);
|
||||
|
||||
//绘制当前道具显示框
|
||||
L_sq_SetDrawImgModel(2, 0);
|
||||
L_sq_DrawImg("interface2/yosin/qfjp.img", 3, X + 38 + (Pos * 50), Y + 40);
|
||||
L_sq_ReleaseDrawImgModel();
|
||||
L_sq_DrawImg("interface2/yosin/qfjp.img", 7, X + 38 + (Pos * 50), Y + 40);
|
||||
|
||||
//绘制进度条
|
||||
local Rate = (Clock() - PackTimer + AuctionRealInfo.remainder).tofloat() / (ContinuityTime * 1000).tofloat();
|
||||
setClip(X + 29, Y + 119, X + 29 + 272 - (272.0 * Rate).tointeger(), Y + 119 + 12);
|
||||
L_sq_DrawImg("interface2/yosin/qfjp.img", 6, X + 29, Y + 119);
|
||||
releaseClip(); //裁切结束
|
||||
}
|
||||
|
||||
|
||||
//绘制拍卖物品
|
||||
DrawItemBase(X + 51 + (Pos * 50), Y + 54, Value.itemId, Value.count);
|
||||
|
||||
if (Pos< AuctionRealInfo.idx) {
|
||||
//绘制道具遮罩框
|
||||
L_sq_DrawImg("interface2/yosin/qfjp.img", 5, X + 48 + (Pos * 50), Y + 50, 0, sq_RGBA(255, 255, 255, 150), 1.0, 1.0);
|
||||
}
|
||||
} else {
|
||||
// DrawItemBase(X + 51 + (Pos * 50), Y + 54, Value.itemId, Value.count);
|
||||
L_sq_DrawImg("interface/lenheartwindowcommon.img", 606, X + 57 + (i * 50), Y + 58);
|
||||
}
|
||||
}
|
||||
|
||||
//展示时间绘制
|
||||
if (AuctionRealInfo.state == 0) {
|
||||
local Rate = (Clock() - PackTimer + AuctionRealInfo.remainder).tofloat() / (InitTime * 1000).tofloat();
|
||||
setClip(X + 29, Y + 119, X + 29 + 272 - (272.0 * Rate).tointeger(), Y + 119 + 12);
|
||||
L_sq_DrawImg("interface2/yosin/qfjp.img", 8, X + 29, Y + 119);
|
||||
releaseClip(); //裁切结束
|
||||
//绘制物品展示中
|
||||
L_sq_DrawCode("物品展示中", X + 135, Y + 96, sq_RGBA(185, 148, 96, 250), 0, 1);
|
||||
}
|
||||
}
|
||||
//Gm设置页面
|
||||
else if (IsGm) {
|
||||
//绘制窗口底
|
||||
L_sq_DrawWindow(X, Y, 260, 372, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||
L_sq_DrawWindow(X + 14, Y + 18, 251, 366, "interface/windowcommon.img", 204, 4, 14, 4, 14);
|
||||
|
||||
foreach(Pos, Value in AuctionList) {
|
||||
local Rx = X + 23;
|
||||
local Ry = Y + 31 + (Pos * 30);
|
||||
L_sq_DrawImg("interface/lenheartwindowcommon.img", 53, Rx, Ry);
|
||||
L_sq_DrawCode(Value[0], Rx + 6, Ry + 5, 0xff00b1ff, 0, 1);
|
||||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, Rx, Ry, 228, 21)) {
|
||||
L_sq_DrawImg("interface/lenheartwindowcommon.img", 54, Rx, Ry);
|
||||
if (MouseClickFlag) {
|
||||
SelectAuctionItem = Pos;
|
||||
}
|
||||
}
|
||||
if (Pos == SelectAuctionItem) {
|
||||
L_sq_DrawImg("interface/lenheartwindowcommon.img", 54, Rx, Ry);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
|
||||
MouseClickFlag = false;
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
|
||||
|
||||
MouseClickFlag = false;
|
||||
//鼠标左键弹起回调
|
||||
function OnMouseLbUp(MousePos_X, MousePos_Y) {
|
||||
MouseClickFlag = true;
|
||||
LenheartNewUI_Windows.OnMouseLbUp(MousePos_X, MousePos_Y);
|
||||
}
|
||||
|
||||
function OpenCallBack() {
|
||||
GetConfig();
|
||||
this.Visible = true;
|
||||
ResetFocus();
|
||||
}
|
||||
|
||||
}
|
||||
getroottable().rawdelete("ServerAuction_Obj");
|
||||
|
||||
function Lenheart_ServerAuction_Fun(obj) {
|
||||
local RootTab = getroottable();
|
||||
if (!RootTab.rawin("ServerAuction_Obj")) {
|
||||
RootTab.rawset("ServerAuction_Obj", true);
|
||||
local Winobj = LenheartNewUI_CreateWindow(ServerAuctionC, "全服竞拍窗口", ((getroottable().Rindro_Scr_Width - 405) / 2).tointeger(), 64, 405, 372, 28);
|
||||
EventList_Obj.AddEvent("全服竞拍", 157, Winobj, "interface2/yosin/eventsystemlist.img");
|
||||
}
|
||||
}
|
||||
|
||||
getroottable()["LenheartFuncTab"].rawset("ServerAuctionFuncN", Lenheart_ServerAuction_Fun);
|
||||
Reference in New Issue
Block a user