191 lines
7.2 KiB
Lua
191 lines
7.2 KiB
Lua
|
|
||
|
local XUiGridRegressionGift = XClass(nil, "XUiGridRegressionGift")
|
||
|
local Application = CS.UnityEngine.Application
|
||
|
local Platform = Application.platform
|
||
|
local RuntimePlatform = CS.UnityEngine.RuntimePlatform
|
||
|
|
||
|
function XUiGridRegressionGift:Ctor(ui)
|
||
|
XTool.InitUiObjectByUi(self, ui)
|
||
|
|
||
|
XUiHelper.RegisterClickEvent(self, self.BtnBuy, self.OnBtnBuyClick)
|
||
|
end
|
||
|
|
||
|
function XUiGridRegressionGift:Init(onBuy)
|
||
|
self.OnBuyCb = onBuy
|
||
|
end
|
||
|
|
||
|
function XUiGridRegressionGift:Refresh(data)
|
||
|
self.Data = data
|
||
|
self:RefreshGoods()
|
||
|
self:RefreshPrices()
|
||
|
self:RefreshSellOut()
|
||
|
end
|
||
|
|
||
|
function XUiGridRegressionGift:RefreshGoods()
|
||
|
local data = self.Data
|
||
|
self.TxtTittle.text = data.Name
|
||
|
local assetPath = XPurchaseConfigs.GetIconPathByIconName(data.Icon)
|
||
|
if assetPath and assetPath.AssetPath then
|
||
|
self.RImgIcon:SetRawImage(assetPath.AssetPath)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function XUiGridRegressionGift:RefreshPrices()
|
||
|
local data = self.Data
|
||
|
local consumeId = data.ConsumeId
|
||
|
local showIcon = XTool.IsNumberValid(consumeId)
|
||
|
if showIcon then
|
||
|
local icon = XDataCenter.ItemManager.GetItemIcon(consumeId)
|
||
|
self.RImgPrice1:SetRawImage(icon)
|
||
|
end
|
||
|
self.RImgPrice1.gameObject:SetActiveEx(showIcon)
|
||
|
local originPrice = data.ConsumeCount or 0
|
||
|
local tag = data.Tag
|
||
|
local showTag = tag > 0
|
||
|
local isDiscount = data.ConvertSwitch > 0 and data.ConvertSwitch < originPrice
|
||
|
if showTag then
|
||
|
local tagText = XPurchaseConfigs.GetTagDes(tag)
|
||
|
if XPurchaseConfigs.GetTagType(tag) == XPurchaseConfigs.PurchaseTagType.Discount then
|
||
|
local discountValue = XDataCenter.PurchaseManager.GetLBDiscountValue(data)
|
||
|
if discountValue < 1 then
|
||
|
local discountStr = string.format("%.1f", discountValue * 10)
|
||
|
if not string.IsNilOrEmpty(data.DiscountShowStr) then
|
||
|
discountStr = data.DiscountShowStr
|
||
|
end
|
||
|
isDiscount = true
|
||
|
tagText = discountStr .. tagText
|
||
|
else
|
||
|
showTag = false
|
||
|
end
|
||
|
end
|
||
|
self.TxtSaleRate.text = tagText
|
||
|
end
|
||
|
self.PanelDiscount.gameObject:SetActiveEx(showTag)
|
||
|
local price = originPrice
|
||
|
if isDiscount then
|
||
|
if data.ConvertSwitch > 0 and data.ConvertSwitch < originPrice then
|
||
|
price = data.ConvertSwitch
|
||
|
else
|
||
|
local discountValue = XDataCenter.PurchaseManager.GetLBDiscountValue(data)
|
||
|
price = math.modf(discountValue * price) or 0
|
||
|
end
|
||
|
end
|
||
|
self.Price = price
|
||
|
self.TxtNewPrice1.text = price ~=0 and price or CsXTextManagerGetText("PurchaseFreeText")
|
||
|
-- 上文与国服保持一致, 下文是日韩服
|
||
|
-- if self.Data.PayKeySuffix then
|
||
|
-- self.TxtNewPrice1.text = self:GetPrice(self.Data.PayKeySuffix)
|
||
|
-- local path = CS.XGame.ClientConfig:GetString("PurchaseBuyRiYuanIconPath")
|
||
|
-- self.RImgPrice1.gameObject:SetActiveEx(true)
|
||
|
-- self.RImgPrice1:SetRawImage(path, function() self.RImgPrice1:SetNativeSize() end)
|
||
|
-- self.RImgPrice1.color = CS.UnityEngine.Color.black
|
||
|
-- self.RImgPrice1.transform.localScale = CS.UnityEngine.Vector3(0.9, 0.9, 0.9)
|
||
|
-- self.TxtSaleRate.text = "お得"
|
||
|
-- else
|
||
|
-- self.RImgPrice1.gameObject:SetActiveEx(false)
|
||
|
-- self.TxtNewPrice1.text = CsXTextManagerGetText("PurchaseFreeText")
|
||
|
-- self.TxtSaleRate.text = "無料"
|
||
|
-- end
|
||
|
end
|
||
|
|
||
|
function XUiGridRegressionGift:GetPrice(PayKeySuffix) --获取直购价格
|
||
|
local key
|
||
|
if Platform == RuntimePlatform.Android then
|
||
|
key = string.format("%s%s", XPayConfigs.GetPlatformConfig(1), PayKeySuffix)
|
||
|
else
|
||
|
key = string.format("%s%s", XPayConfigs.GetPlatformConfig(2), PayKeySuffix)
|
||
|
end
|
||
|
local payConfig = XPayConfigs.GetPayTemplate(key)
|
||
|
return payConfig.Amount
|
||
|
end
|
||
|
|
||
|
function XUiGridRegressionGift:RefreshSellOut()
|
||
|
local data = self.Data
|
||
|
local sellOut = data.BuyLimitTimes and data.BuyLimitTimes > 0 and data.BuyTimes >= data.BuyLimitTimes
|
||
|
self.ImgSellOut.gameObject:SetActiveEx(sellOut)
|
||
|
self.TxtLimit.text = CsXTextManagerGetText("PurchaseLimitBuy", data.BuyTimes, data.BuyLimitTimes)
|
||
|
--self.BtnBuy.gameObject:SetActiveEx(not sellOut)
|
||
|
end
|
||
|
|
||
|
function XUiGridRegressionGift:OnBtnBuyClick()
|
||
|
local data = self.Data
|
||
|
local id = data.Id
|
||
|
local price = data.ConsumeCount
|
||
|
if price <= 0 and not self.Data.PayKeySuffix then
|
||
|
XDataCenter.PurchaseManager.PurchaseRequest(id, self.OnBuyCb)
|
||
|
return
|
||
|
end
|
||
|
local check = function(count, discountCouponIndex)
|
||
|
return self:OnCheckBeforeBuy(count, discountCouponIndex)
|
||
|
end
|
||
|
XLuaUiManager.Open("UiPurchaseBuyTips", data, check, self.OnBuyCb, nil, XPurchaseConfigs.GetLBUiTypesList())
|
||
|
end
|
||
|
|
||
|
function XUiGridRegressionGift:OnCheckBeforeBuy(count, discountCouponIndex)
|
||
|
local data = self.Data
|
||
|
count = count or 1
|
||
|
discountCouponIndex = discountCouponIndex or 0
|
||
|
local price = data.ConsumeCount
|
||
|
--告罄
|
||
|
if data.BuyLimitTimes > 0 and data.BuyTimes >= data.BuyLimitTimes then
|
||
|
XUiManager.TipText("PurchaseLiSellOut")
|
||
|
return 0
|
||
|
end
|
||
|
|
||
|
--未上架
|
||
|
if data.TimeToShelve > 0 and data.TimeToShelve > XTime.GetServerNowTimestamp() then
|
||
|
XUiManager.TipText("PurchaseBuyNotSet")
|
||
|
return 0
|
||
|
end
|
||
|
|
||
|
--已下架
|
||
|
if data.TimeToUnShelve > 0 and data.TimeToUnShelve < XTime.GetServerNowTimestamp() then
|
||
|
XUiManager.TipText("PurchaseSettOff")
|
||
|
return 0
|
||
|
end
|
||
|
|
||
|
--已失效
|
||
|
if data.TimeToInvalid > 0 and data.TimeToInvalid < XTime.GetServerNowTimestamp() then
|
||
|
XUiManager.TipText("PurchaseSettOff")
|
||
|
return 0
|
||
|
end
|
||
|
|
||
|
--礼包内容全部拥有
|
||
|
if price > 0 and data.ConvertSwitch <= 0 then
|
||
|
XUiManager.TipText("PurchaseRewardAllHaveErrorTips")
|
||
|
return 0
|
||
|
end
|
||
|
|
||
|
if XTool.IsNumberValid(discountCouponIndex) then
|
||
|
local discountValue = XDataCenter.PurchaseManager.GetLBCouponDiscountValue(data, discountCouponIndex)
|
||
|
price = math.floor(discountValue * price)
|
||
|
else
|
||
|
if data.ConvertSwitch > 0 and price > data.ConvertSwitch then
|
||
|
price = data.ConvertSwitch
|
||
|
end
|
||
|
|
||
|
if XPurchaseConfigs.GetTagType(data.Tag) == XPurchaseConfigs.PurchaseTagType.Discount then
|
||
|
local discountValue = XDataCenter.PurchaseManager.GetLBDiscountValue(data)
|
||
|
price = math.floor(discountValue * price)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
if price > 0 and price > XDataCenter.ItemManager.GetCount(data.ConsumeId) then
|
||
|
-- local name = XDataCenter.ItemManager.GetItemName(data.ConsumeId) or ""
|
||
|
-- XUiManager.TipMsg(XUiHelper.GetText("PurchaseBuyKaCountTips", name))
|
||
|
if XUiHelper.CanBuyInOtherPlatformHongKa(price) then
|
||
|
return 2
|
||
|
end
|
||
|
local tips = XUiHelper.GetCountNotEnoughTips(data.ConsumeId)
|
||
|
XUiManager.TipMsg(tips)
|
||
|
if data.ConsumeId == XDataCenter.ItemManager.ItemId.PaidGem then
|
||
|
XLuaUiManager.Open("UiPurchase", XPurchaseConfigs.TabsConfig.HK, false)
|
||
|
elseif data.ConsumeId == XDataCenter.ItemManager.ItemId.HongKa then
|
||
|
XLuaUiManager.Open("UiPurchase", XPurchaseConfigs.TabsConfig.Pay, false)
|
||
|
end
|
||
|
return 0
|
||
|
end
|
||
|
return 1
|
||
|
end
|
||
|
|
||
|
return XUiGridRegressionGift
|