ro-webgl/Assets/Lua/UI/UIShop/UIShopBuyTipsCtr.lua
2021-12-21 09:40:39 +08:00

125 lines
2.9 KiB
Lua

local UIShopBuyTipsCtr = class("UIShopBuyTipsCtr", require("UICtrBase"))
function UIShopBuyTipsCtr:Init(view)
self.view = view
end
function UIShopBuyTipsCtr:SetData(data)
self.asyncIdx = 0
self.data = data
self:InitData()
end
function UIShopBuyTipsCtr:GetAsyncIdx()
self.asyncIdx = self.asyncIdx + 1
return self.asyncIdx
end
function UIShopBuyTipsCtr:GetData()
return self.data
end
function UIShopBuyTipsCtr:OnDispose()
self.data = nil
self.view = nil
self.curShopData = nil
self.curGoodsData = nil
self.maxBuyNumOnce = nil
self.buyNum = nil
end
function UIShopBuyTipsCtr:InitData()
local shopId = self.data[1]
local goodId = self.data[2]
self.curShopData = ManagerContainer.DataMgr.ShopDataMgr:GetShopData(shopId)
if self.curShopData then
self.curGoodsData = self.curShopData:GetGoodsDataById(goodId)
else
self.curGoodsData = nil
end
self.maxBuyNumOnce = GlobalConfig.Instance:GetConfigIntValue(120)
self:SetBuyNum(1)
end
function UIShopBuyTipsCtr:GetCurShopData()
return self.curShopData
end
function UIShopBuyTipsCtr:GetCurGoodsData()
return self.curGoodsData
end
function UIShopBuyTipsCtr:GetCurPrice()
return self.curGoodsData.curPrice
end
function UIShopBuyTipsCtr:GetMaxBuyNumOnce()
return self.maxBuyNumOnce
end
function UIShopBuyTipsCtr:GetBuyNum()
return self.buyNum
end
function UIShopBuyTipsCtr:SetBuyNum(buyNum)
if not self:IsValidData() then
return false
end
local remainBuyNum = self.curGoodsData:GetRemainBuyNum()
if remainBuyNum >= 0 then
if buyNum > remainBuyNum then
buyNum = remainBuyNum
end
end
local price = self.curGoodsData.curPrice
local goodsCfgData = self.curGoodsData:GetGoodsCfgData()
local ownCount = self:GetOwnResCountByItemId(goodsCfgData.PayForType)
remainBuyNum = Mathf.Floor(ownCount / price)
if buyNum > remainBuyNum then
buyNum = remainBuyNum
end
buyNum = Mathf.Clamp(buyNum, 1, self.maxBuyNumOnce)
if self.buyNum == buyNum then
return false
end
self.buyNum = buyNum
return true
end
function UIShopBuyTipsCtr:ChangeDeltaBuyNum(deltaBuyNum)
local buyNum = self.buyNum + deltaBuyNum
return self:SetBuyNum(buyNum)
end
function UIShopBuyTipsCtr:GetOwnResCountByItemId(itemCfgId)
return CommonUtil.GetOwnResCountByItemId(itemCfgId)
end
function UIShopBuyTipsCtr:IsValidData()
return self.curShopData and self.curGoodsData
end
function UIShopBuyTipsCtr:SendShopBuyItemReq()
if not self:IsValidData() then
return 390
end
local price = self.curGoodsData.curPrice
local goodsCfgData = self.curGoodsData:GetGoodsCfgData()
local ownCount = self:GetOwnResCountByItemId(goodsCfgData.PayForType)
if ownCount < (price * self.buyNum) then
return 391, goodsCfgData.PayForType
end
if not ManagerContainer.DataMgr.ShopDataMgr:SendShopBuyItemReq(self.curShopData.shopId, self.curGoodsData.id, self.buyNum) then
return 100007
end
return 0
end
return UIShopBuyTipsCtr