Initial version - 1.2.0.60
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
local MallPackageItemCtrl = class("MallPackageItemCtrl", BaseCtrl)
|
||||
local LayoutRebuilder = CS.UnityEngine.UI.LayoutRebuilder
|
||||
MallPackageItemCtrl._mapNodeConfig = {
|
||||
txtName = {sComponentName = "TMP_Text"},
|
||||
imgIcon = {sComponentName = "Image"},
|
||||
imgBg = {sComponentName = "Image"},
|
||||
txtPrice = {sComponentName = "TMP_Text"},
|
||||
txtLimit = {sComponentName = "TMP_Text"},
|
||||
imgCurrency = {sComponentName = "Image"},
|
||||
goCurrency = {},
|
||||
goTime = {},
|
||||
goCondition = {},
|
||||
goSoldOut = {},
|
||||
imgSoldOut = {nCount = 2},
|
||||
imgLimit = {nCount = 2},
|
||||
txtRefreshTime = {sComponentName = "TMP_Text"},
|
||||
txtTime = {sComponentName = "TMP_Text"},
|
||||
txtSoldOut = {
|
||||
nCount = 2,
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Mall_Package_SoldOut"
|
||||
},
|
||||
txtCondition = {sComponentName = "TMP_Text"},
|
||||
goSaleRate = {
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
txtSaleRate = {sComponentName = "TMP_Text"},
|
||||
imgMask = {},
|
||||
reddotPkg = {}
|
||||
}
|
||||
MallPackageItemCtrl._mapEventConfig = {}
|
||||
function MallPackageItemCtrl:Refresh(mapData)
|
||||
local mapCfg = ConfigTable.GetData("MallPackage", mapData.sId)
|
||||
self.sId = mapData.sId
|
||||
self:RefreshInfo(mapCfg)
|
||||
self:RefreshPrice(mapCfg)
|
||||
self:RefreshLimit(mapCfg, mapData)
|
||||
self:RefreshCond(mapCfg, mapData)
|
||||
self:RefreshTime(mapCfg, mapData)
|
||||
self:RegisterRedDot()
|
||||
end
|
||||
function MallPackageItemCtrl:RefreshPrice(mapCfg)
|
||||
if mapCfg.CurrencyType == GameEnum.currencyType.Cash then
|
||||
self._mapNode.goCurrency:SetActive(false)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtPrice, tostring(mapCfg.CurrencyShowPrice))
|
||||
elseif mapCfg.CurrencyType == GameEnum.currencyType.Item then
|
||||
self._mapNode.goCurrency:SetActive(true)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtPrice, mapCfg.CurrencyItemQty)
|
||||
self:SetPngSprite(self._mapNode.imgCurrency, ConfigTable.GetData_Item(mapCfg.CurrencyItemId).Icon2)
|
||||
elseif mapCfg.CurrencyType == GameEnum.currencyType.Free then
|
||||
self._mapNode.goCurrency:SetActive(false)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtPrice, ConfigTable.GetUIText("Mall_Package_Free"))
|
||||
end
|
||||
end
|
||||
function MallPackageItemCtrl:RefreshLimit(mapCfg, mapData)
|
||||
self._mapNode.imgLimit[1]:SetActive(mapData.nNextRefreshTime > 0 and mapCfg.RefreshType == GameEnum.mallPackageRefreshType.None)
|
||||
self._mapNode.imgLimit[2]:SetActive(mapData.nNextRefreshTime > 0 and mapCfg.RefreshType ~= GameEnum.mallPackageRefreshType.None)
|
||||
if mapCfg.RefreshType == GameEnum.mallPackageRefreshType.None then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtLimit, orderedFormat(ConfigTable.GetUIText("Mall_Package_Limit") or "", mapData.nCurStock, mapCfg.Stock))
|
||||
elseif mapCfg.RefreshType == GameEnum.mallPackageRefreshType.Day then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtLimit, orderedFormat(ConfigTable.GetUIText("Mall_Package_DayLimit") or "", mapData.nCurStock, mapCfg.Stock))
|
||||
elseif mapCfg.RefreshType == GameEnum.mallPackageRefreshType.Week then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtLimit, orderedFormat(ConfigTable.GetUIText("Mall_Package_WeekLimit") or "", mapData.nCurStock, mapCfg.Stock))
|
||||
elseif mapCfg.RefreshType == GameEnum.mallPackageRefreshType.Month then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtLimit, orderedFormat(ConfigTable.GetUIText("Mall_Package_MonthLimit") or "", mapData.nCurStock, mapCfg.Stock))
|
||||
end
|
||||
end
|
||||
function MallPackageItemCtrl:RefreshInfo(mapCfg)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtName, mapCfg.Name)
|
||||
self:SetPngSprite(self._mapNode.imgIcon, mapCfg.Icon)
|
||||
self:SetPngSprite(self._mapNode.imgBg, mapCfg.IconBg)
|
||||
self._mapNode.goSaleRate.gameObject:SetActive(mapCfg.SaleRate ~= 0)
|
||||
if mapCfg.SaleRate ~= 0 then
|
||||
if mapCfg.SaleRate == -1 then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtSaleRate, ConfigTable.GetUIText("Mall_Package_Recommend"))
|
||||
else
|
||||
NovaAPI.SetTMPText(self._mapNode.txtSaleRate, string.format("%s%%", mapCfg.SaleRate))
|
||||
end
|
||||
LayoutRebuilder.ForceRebuildLayoutImmediate(self._mapNode.goSaleRate)
|
||||
end
|
||||
end
|
||||
function MallPackageItemCtrl:RefreshTime(mapCfg, mapData)
|
||||
local bDisposable = mapCfg.RefreshType == GameEnum.mallPackageRefreshType.None
|
||||
self._mapNode.goTime.gameObject:SetActive(mapData.nNextRefreshTime > 0 and bDisposable)
|
||||
if mapData.nNextRefreshTime > 0 and bDisposable then
|
||||
local sSuffix = mapData.bPrioritizeDeList and ConfigTable.GetUIText("Mall_Package_Delist") or ConfigTable.GetUIText("Mall_Package_Refresh")
|
||||
local sPrefix
|
||||
local nRemaining = mapData.nNextRefreshTime - CS.ClientManager.Instance.serverTimeStamp
|
||||
if nRemaining <= 3600 then
|
||||
sPrefix = ConfigTable.GetUIText("Mall_Package_WithinHour")
|
||||
elseif 3600 < nRemaining and nRemaining <= 86400 then
|
||||
sPrefix = orderedFormat(ConfigTable.GetUIText("Mall_Package_Hour") or "", math.floor(nRemaining / 3600))
|
||||
elseif 86400 < nRemaining then
|
||||
sPrefix = orderedFormat(ConfigTable.GetUIText("Mall_Package_Day") or "", math.floor(nRemaining / 86400))
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.txtTime, sPrefix .. sSuffix)
|
||||
end
|
||||
end
|
||||
function MallPackageItemCtrl:RefreshCond(mapCfg, mapData)
|
||||
local tbCond = decodeJson(mapCfg.OrderCondParams)
|
||||
local bPurchaseAble = PlayerData.Shop:CheckShopCond(mapCfg.OrderCondType, tbCond)
|
||||
self._mapNode.imgMask:SetActive(mapData.nCurStock == 0 or not bPurchaseAble)
|
||||
self._mapNode.goCondition:SetActive(not bPurchaseAble)
|
||||
self._mapNode.goSoldOut:SetActive(mapData.nCurStock == 0)
|
||||
if not bPurchaseAble then
|
||||
local sCond = ""
|
||||
if mapCfg.OrderCondType == GameEnum.shopCond.WorldClassSpecific then
|
||||
sCond = orderedFormat(ConfigTable.GetUIText("Mall_Cond_WorldClass") or "", tbCond[1])
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.txtCondition, sCond)
|
||||
end
|
||||
if mapData.nCurStock == 0 then
|
||||
local bDisposable = mapCfg.RefreshType == GameEnum.mallPackageRefreshType.None
|
||||
local bTime = 0 < mapData.nNextRefreshTime and not bDisposable
|
||||
self._mapNode.imgSoldOut[1]:SetActive(not bTime)
|
||||
self._mapNode.imgSoldOut[2]:SetActive(bTime)
|
||||
if 0 < mapData.nNextRefreshTime then
|
||||
local sPrefix
|
||||
local nRemaining = mapData.nNextRefreshTime - CS.ClientManager.Instance.serverTimeStamp
|
||||
if nRemaining <= 3600 then
|
||||
sPrefix = ConfigTable.GetUIText("Mall_Package_WithinHourRefresh")
|
||||
elseif 3600 < nRemaining and nRemaining <= 86400 then
|
||||
sPrefix = orderedFormat(ConfigTable.GetUIText("Mall_Package_HourRefresh") or "", math.floor(nRemaining / 3600))
|
||||
elseif 86400 < nRemaining then
|
||||
sPrefix = orderedFormat(ConfigTable.GetUIText("Mall_Package_DayRefresh") or "", math.floor(nRemaining / 86400))
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.txtRefreshTime, sPrefix)
|
||||
end
|
||||
end
|
||||
end
|
||||
function MallPackageItemCtrl:RegisterRedDot()
|
||||
RedDotManager.RegisterNode(RedDotDefine.FreePackage, self.sId, self._mapNode.reddotPkg)
|
||||
end
|
||||
function MallPackageItemCtrl:Awake()
|
||||
end
|
||||
function MallPackageItemCtrl:OnEnable()
|
||||
end
|
||||
function MallPackageItemCtrl:OnDisable()
|
||||
end
|
||||
function MallPackageItemCtrl:OnDestroy()
|
||||
end
|
||||
return MallPackageItemCtrl
|
||||
Reference in New Issue
Block a user