bayuMIR/client/dev/GUILayout/game/A/YueKaOBJ.lua

149 lines
4.2 KiB
Lua

YueKaOBJ = Up_BaseClassOBJ:new()
YueKaOBJ.__cname = "YueKaOBJ"
YueKaOBJ.cfg = {
price = 680,
days = 30,
}
function YueKaOBJ:main(arg1, arg2, arg3, data)
local parent = GUI:Win_Create(self.__cname, 0, 0, 0, 0, false, false, true, false)
if data and data.npcid then
GUI:Win_BindNPC(parent, data.npcid)
end
GUI:LoadExport(parent, "game/A/YueKaUI")
self._parent = parent
self.ui = GUI:ui_delegate(parent)
ssrUIManager:OpenAlgin(self)
GUI:addOnClickEvent(self.ui.bg_close, function()
GUI:Win_Close(self._parent)
end)
GUI:addOnClickEvent(self.ui.btn_close, function()
GUI:Win_Close(self._parent)
end)
if data and data.cfg then
self.cfg = data.cfg
end
self.expireTime = self:getExpireTime(data)
self:EventBind()
self:updata()
end
function YueKaOBJ:getExpireTime(data)
if data then
local value = data.expireTime or data.endTime or data.time
if value then
return tonumber(value) or 0
end
end
local serverValue = nil
serverValue = SL:GetMetaValue("SERVER_VALUE", "HUMAN(INT_月卡)")
return tonumber(serverValue) or 0
end
function YueKaOBJ:getRemainDays()
local expireTime = tonumber(self.expireTime or 0) or 0
local nowTime = os.time()
if expireTime <= nowTime then
return 0
end
return math.ceil((expireTime - nowTime) / 86400)
end
function YueKaOBJ:updata()
local remainDays = self:getRemainDays()
local isOpen = remainDays > 0
GUI:Text_setString(self.ui.status_text, string.format("%d天", remainDays))
-- GUI:setVisible(self.ui.tag_open, isOpen)
if GUI:Win_IsNotNull(self.ui.CostItem_1) then
GUI:removeFromParent(self.ui.CostItem_1)
end
self.ui.CostItem_1 = GUI:CostItem_Create(self.ui.img_bg, "CostItem_1", 460, 118,
{ itemId = 2, itemCount = self.cfg.price, itemScale = 0.6, titleText = "元宝", fontSize = 16, simplenum = 1 })
GUI:setAnchorPoint(self.ui.CostItem_1, 0.00, 0.50)
GUI:setTouchEnabled(self.ui.CostItem_1, true)
GUI:addOnClickEvent(self.ui.buy_btn, function()
ssrMessage:SubLink("YueKaOBJ_buy")
end)
RedDotMgr.detachDot(self.ui.buy_btn)
local yuanbaoNum = tonumber(SL:Get_MONEY(ssrConstCfg.Money["元宝"])) or 0
if not isOpen and yuanbaoNum >= (tonumber(self.cfg.price) or 680) then
RedDotMgr.attachDot(self.ui.buy_btn, { x = 80, y = 38 })
end
end
function YueKaOBJ:EventBind()
local function YueKaOBJ_Var_Change(data)
if GUI:Win_IsNotNull(self._parent) then
if data and data.key == "HUMAN(INT_月卡)" then
self.expireTime = self:getExpireTime()
self:updata()
end
end
end
SL:RegisterLUAEvent(LUA_EVENT_SERVER_VALUE_CHANGE, self.__cname, YueKaOBJ_Var_Change)
SL:RegisterLUAEvent(LUA_EVENT_MONEY_CHANGE, self.__cname, function()
if GUI:Win_IsNotNull(self._parent) then
self:updata()
end
end)
SL:RegisterLUAEvent(LUA_EVENT_CLOSEWIN, self.__cname, function(widgetName)
self:OnClose(widgetName)
end)
end
function YueKaOBJ:OnClose(widgetName)
if widgetName == self.__cname then
self:UnRegisterEvent()
end
end
function YueKaOBJ:UnRegisterEvent()
SL:UnRegisterLUAEvent(LUA_EVENT_SERVER_VALUE_CHANGE, self.__cname)
SL:UnRegisterLUAEvent(LUA_EVENT_MONEY_CHANGE, self.__cname)
SL:UnRegisterLUAEvent(LUA_EVENT_CLOSEWIN, self.__cname)
end
if RedDotMgr and RedDotMgr.register then
RedDotMgr:register("YueKa_Open", {
owner = "YueKaOBJ",
parent = "TopIcon_YueKa",
target = function()
return nil
end,
watchKeys = { "HUMAN(INT_月卡)" },
watchMoney = true,
check = function()
local expireTime = 0
if SL and SL.GetMetaValue then
expireTime = tonumber(SL:GetMetaValue("SERVER_VALUE", "HUMAN(INT_月卡)")) or 0
end
if expireTime > os.time() then
return false
end
local yuanbaoNum = tonumber(SL:Get_MONEY(ssrConstCfg.Money["元宝"])) or 0
return yuanbaoNum >= 680
end,
})
end
return YueKaOBJ