e0549005e1
EN: 1.9.0.103 CN: 1.9.0.104 JP: 1.9.0.106 KR: 1.9.0.108
159 lines
5.0 KiB
Lua
159 lines
5.0 KiB
Lua
local TemplateQuantitySelectorCtrl = class("TemplateQuantitySelectorCtrl", BaseCtrl)
|
|
TemplateQuantitySelectorCtrl._mapNodeConfig = {
|
|
btnReduce = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Reduce"
|
|
},
|
|
btnAdd = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Add"
|
|
},
|
|
btnMax = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Max"
|
|
},
|
|
btnMin = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Min"
|
|
},
|
|
btnGrayAdd = {
|
|
nCount = 2,
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_MaxGray"
|
|
},
|
|
btnGrayReduce = {
|
|
nCount = 2,
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_MinGray"
|
|
},
|
|
inputCount = {
|
|
sComponentName = "TMP_InputField"
|
|
},
|
|
Placeholder = {sComponentName = "TMP_Text"}
|
|
}
|
|
TemplateQuantitySelectorCtrl._mapEventConfig = {}
|
|
function TemplateQuantitySelectorCtrl:Init(funcRefresh, nDefaultCount, nMax, bHideSide, bAllowZero, addCallback)
|
|
self.callback = funcRefresh
|
|
self.nMax = nMax
|
|
self.nBuyCount = nDefaultCount
|
|
self.bAble = bAllowZero and 0 <= nDefaultCount or nDefaultCount ~= 0
|
|
self.bHideSide = bHideSide
|
|
self.bAllowZero = bAllowZero
|
|
self.nMin = self.bAllowZero and 0 or 1
|
|
self.addCallback = addCallback
|
|
NovaAPI.SetTMPInputFieldInteractable(self._mapNode.inputCount, self.bAble)
|
|
self:RefreshCount()
|
|
end
|
|
function TemplateQuantitySelectorCtrl:RefreshCount()
|
|
NovaAPI.SetTMPInputFieldText(self._mapNode.inputCount, self.nBuyCount)
|
|
NovaAPI.SetTMPInputFieldPlaceholderText(self._mapNode.inputCount, self.nBuyCount)
|
|
self:RefreshAddButton(self.nBuyCount < self.nMax and self.bAble)
|
|
self:RefreshReduceButton((self.bAllowZero and self.nBuyCount > 0 or self.nBuyCount > 1) and self.bAble)
|
|
end
|
|
function TemplateQuantitySelectorCtrl:RefreshAddButton(bAble)
|
|
self._mapNode.btnGrayAdd[1].gameObject:SetActive(not bAble and not self.bHideSide)
|
|
self._mapNode.btnGrayAdd[2].gameObject:SetActive(not bAble)
|
|
self._mapNode.btnAdd.gameObject:SetActive(bAble)
|
|
self._mapNode.btnMax.gameObject:SetActive(bAble and not self.bHideSide)
|
|
end
|
|
function TemplateQuantitySelectorCtrl:RefreshReduceButton(bAble)
|
|
self._mapNode.btnGrayReduce[1].gameObject:SetActive(not bAble)
|
|
self._mapNode.btnGrayReduce[2].gameObject:SetActive(not bAble and not self.bHideSide)
|
|
self._mapNode.btnReduce.gameObject:SetActive(bAble)
|
|
self._mapNode.btnMin.gameObject:SetActive(bAble and not self.bHideSide)
|
|
end
|
|
function TemplateQuantitySelectorCtrl:Awake()
|
|
end
|
|
function TemplateQuantitySelectorCtrl:OnEnable()
|
|
self.handler = ui_handler(self, self.OnInputEndEdit, self._mapNode.inputCount)
|
|
NovaAPI.AddTMPEndEditListener(self._mapNode.inputCount, self.handler)
|
|
end
|
|
function TemplateQuantitySelectorCtrl:OnDisable()
|
|
NovaAPI.RemoveTMPEndEditListener(self._mapNode.inputCount, self.handler)
|
|
end
|
|
function TemplateQuantitySelectorCtrl:OnDestroy()
|
|
end
|
|
function TemplateQuantitySelectorCtrl:OnBtnClick_Add(btn)
|
|
local nRemain = self.nMax - self.nBuyCount
|
|
if nRemain <= 0 then
|
|
return
|
|
end
|
|
if self.addCallback ~= nil then
|
|
local bCanAdd = self.addCallback()
|
|
if not bCanAdd then
|
|
return
|
|
end
|
|
end
|
|
if btn.Operate_Type == 0 then
|
|
self.nBuyCount = self.nBuyCount + 1
|
|
elseif btn.Operate_Type == 3 then
|
|
local nAdd = 2 ^ btn.CurrentGear
|
|
local nAfterRemain = nRemain - nAdd
|
|
if nAfterRemain < 0 then
|
|
nAdd = nRemain
|
|
end
|
|
self.nBuyCount = math.floor(self.nBuyCount + nAdd)
|
|
end
|
|
self:RefreshCount()
|
|
self.callback(self.nBuyCount)
|
|
end
|
|
function TemplateQuantitySelectorCtrl:OnBtnClick_Reduce(btn)
|
|
if self.nBuyCount <= self.nMin then
|
|
return
|
|
end
|
|
if btn.Operate_Type == 0 then
|
|
self.nBuyCount = self.nBuyCount - 1
|
|
elseif btn.Operate_Type == 3 then
|
|
self.nBuyCount = math.floor(self.nBuyCount - 2 ^ btn.CurrentGear)
|
|
end
|
|
if self.nBuyCount < self.nMin then
|
|
self.nBuyCount = self.nMin
|
|
end
|
|
self:RefreshCount()
|
|
self.callback(self.nBuyCount)
|
|
end
|
|
function TemplateQuantitySelectorCtrl:OnBtnClick_Max()
|
|
if self.nBuyCount == self.nMax then
|
|
return
|
|
end
|
|
if self.addCallback ~= nil then
|
|
local bCanAdd = self.addCallback()
|
|
if not bCanAdd then
|
|
return
|
|
end
|
|
end
|
|
self.nBuyCount = self.nMax
|
|
self:RefreshCount()
|
|
self.callback(self.nBuyCount)
|
|
end
|
|
function TemplateQuantitySelectorCtrl:OnBtnClick_Min()
|
|
if self.nBuyCount <= self.nMin then
|
|
return
|
|
end
|
|
self.nBuyCount = self.nMin
|
|
self:RefreshCount()
|
|
self.callback(self.nBuyCount)
|
|
end
|
|
function TemplateQuantitySelectorCtrl:OnInputEndEdit()
|
|
local nValue = tonumber(NovaAPI.GetTMPInputFieldText(self._mapNode.inputCount))
|
|
if not nValue then
|
|
nValue = self.nBuyCount
|
|
elseif nValue < self.nMin then
|
|
nValue = self.nMin
|
|
elseif nValue > self.nMax then
|
|
nValue = self.nMax
|
|
end
|
|
self.nBuyCount = nValue
|
|
NovaAPI.SetTMPInputFieldText(self._mapNode.inputCount, nValue)
|
|
NovaAPI.SetTMPInputFieldPlaceholderText(self._mapNode.inputCount, nValue)
|
|
self:RefreshCount()
|
|
self.callback(self.nBuyCount)
|
|
end
|
|
function TemplateQuantitySelectorCtrl:OnBtnClick_MinGray()
|
|
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("QuantitySelector_Min"))
|
|
end
|
|
function TemplateQuantitySelectorCtrl:OnBtnClick_MaxGray()
|
|
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("QuantitySelector_Max"))
|
|
end
|
|
return TemplateQuantitySelectorCtrl
|