2025-06-04 05:12:01 +08:00

154 lines
3.6 KiB
Plaintext

autoImport("ShopItemData")
QuickBuyItemData = class("QuickBuyItemData")
function QuickBuyItemData:ctor(data)
self:SetData(data)
end
function QuickBuyItemData:SetData(data)
if data then
self.id = data.id
self.needCount = data.count --需要的數量
self.price = 0
self.totalCount = 0 --交易所目前在售的數量
self.canChoose = false
self.isChoose = false
end
end
function QuickBuyItemData:SetNeedCount(needCount)
self.needCount = needCount
end
function QuickBuyItemData:SetExchangeInfo(data)
if data then
if self.needCount <= data.count then
self.origin = QuickBuyOrigin.Exchange
self.moneyType = QuickBuyMoney.Zeny
end
self.price = data.price
self.totalCount = data.count
self.orderId = data.order_id
self.publicityId = data.publicity_id
local itemData = data.item_data
if itemData and itemData.base and itemData.base.id ~= 0 then
self.itemData = ItemData.new(itemData.base.guid , itemData.base.id)
self.itemData:ParseFromServerData(itemData)
self.itemData.num = 1
end
end
end
function QuickBuyItemData:SetShopInfo(data)
if data then
self.origin = QuickBuyOrigin.Shop
self.shopItemData = ShopItemData.new(data)
local goodsCount = self.shopItemData.goodsCount
if goodsCount ~= nil and goodsCount > 1 then
self.needCount = math.ceil(self.needCount / goodsCount) * goodsCount
end
self.totalCount = self.needCount
self.price = self.shopItemData:GetBuyFinalPrice(data.moneycount, 1)
self.moneyType = data.moneyid
self.haveShopBuyCount = 0
end
end
function QuickBuyItemData:SetBuyResult(data)
if data then
self.buyResult = data
end
end
function QuickBuyItemData:SetReason()
if self.totalCount == 0 then
self.reason = QuickBuyReason.NotExist
elseif self.publicityId and self.publicityId ~= 0 then
self.reason = QuickBuyReason.Publicity
elseif self.needCount > self.totalCount then
self.reason = QuickBuyReason.NotEnough
else
if self.shopItemData ~= nil and self.shopItemData:GetLock() then
else
self.canChoose = true
self.isChoose = true
end
end
end
function QuickBuyItemData:SetChoose()
self.isChoose = not self.isChoose
end
function QuickBuyItemData:SetCompareEquipPrice(price)
if self.isCompareEquip then
if self.price > price then
self.reason = QuickBuyReason.PriceHigher
elseif self.price < price then
self.reason = QuickBuyReason.PriceLower
end
end
end
function QuickBuyItemData:SetShopBuyCount(count)
if count ~= nil then
self.haveShopBuyCount = self.haveShopBuyCount + count
end
end
function QuickBuyItemData:GetItemData()
if self.itemData == nil then
self.itemData = ItemData.new("QuickBuy", self.id)
self.itemData.num = self.needCount
end
return self.itemData
end
function QuickBuyItemData:GetTotalCost()
return self.price * self:GetNeedCount()
end
function QuickBuyItemData:GetCompareEquipPrice()
if self.canChoose then
if ItemData.CheckItemCanTrade(self.id) then
local site = RoleEquipBagData.GetEquipSiteByItemid(self.id)
local siteEquip = BagProxy.Instance.roleEquip:GetEquipBySite(site)
if siteEquip ~= nil and siteEquip.staticData.id == self.id then
self.isCompareEquip = true
return siteEquip
end
end
end
return nil
end
function QuickBuyItemData:GetNeedCount()
if self.shopItemData ~= nil then
local goodsCount = self.shopItemData.goodsCount
if goodsCount ~= nil and goodsCount > 1 then
return self.needCount / goodsCount
end
end
return self.needCount
end
function QuickBuyItemData:GetShopBuyCount()
local count = self:GetNeedCount() - self.haveShopBuyCount
if count > 999 then
count = 999
end
return count
end
function QuickBuyItemData:IsBuySuccess()
return self.buyResult == true
end