08b515afd9
EN: 2.0.0.143 CN: 2.0.0.142 JP: 2.0.0.145 KR: 2.0.0.150
120 lines
4.1 KiB
Lua
120 lines
4.1 KiB
Lua
local TemplateSimpleQuantitySelectorCtrl = class("TemplateSimpleQuantitySelectorCtrl", BaseCtrl)
|
|
TemplateSimpleQuantitySelectorCtrl._mapNodeConfig = {
|
|
btnReduce = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Reduce"
|
|
},
|
|
txtReduce = {sComponentName = "TMP_Text"},
|
|
btnAdd = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Add"
|
|
},
|
|
txtAdd = {sComponentName = "TMP_Text"},
|
|
btnReduceGray = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Gray"
|
|
},
|
|
txtReduceGray = {sComponentName = "TMP_Text"},
|
|
btnAddGray = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Gray"
|
|
},
|
|
txtAddGray = {sComponentName = "TMP_Text"},
|
|
inputCount = {
|
|
sComponentName = "TMP_InputField"
|
|
},
|
|
Placeholder = {sComponentName = "TMP_Text"}
|
|
}
|
|
TemplateSimpleQuantitySelectorCtrl._mapEventConfig = {}
|
|
local MAX_COUNT = 999999
|
|
function TemplateSimpleQuantitySelectorCtrl:Init(nDefaultCount, nDiffAmount, callback, sGrayText)
|
|
self.nCount = nDefaultCount
|
|
self.nDiffAmount = nDiffAmount
|
|
self.sGrayText = sGrayText or ""
|
|
NovaAPI.SetTMPText(self._mapNode.txtReduce, "-" .. self.nDiffAmount)
|
|
NovaAPI.SetTMPText(self._mapNode.txtReduceGray, "-" .. self.nDiffAmount)
|
|
NovaAPI.SetTMPText(self._mapNode.txtAdd, "+" .. self.nDiffAmount)
|
|
NovaAPI.SetTMPText(self._mapNode.txtAddGray, "+" .. self.nDiffAmount)
|
|
self:RefreshCount()
|
|
self.callback = callback
|
|
self:SetGray(false)
|
|
end
|
|
function TemplateSimpleQuantitySelectorCtrl:RefreshCount()
|
|
NovaAPI.SetTMPInputFieldText(self._mapNode.inputCount, self.nCount)
|
|
NovaAPI.SetTMPInputFieldPlaceholderText(self._mapNode.inputCount, self.nCount)
|
|
self:RefreshAddButton(self.nCount < MAX_COUNT)
|
|
self:RefreshReduceButton(self.nCount > 0)
|
|
end
|
|
function TemplateSimpleQuantitySelectorCtrl:RefreshAddButton(bAble)
|
|
self._mapNode.btnAdd.interactable = bAble
|
|
end
|
|
function TemplateSimpleQuantitySelectorCtrl:RefreshReduceButton(bAble)
|
|
self._mapNode.btnReduce.interactable = bAble
|
|
end
|
|
function TemplateSimpleQuantitySelectorCtrl:SetValue(nCount)
|
|
self.nCount = nCount
|
|
self:RefreshCount()
|
|
end
|
|
function TemplateSimpleQuantitySelectorCtrl:SetGray(bGray)
|
|
self._mapNode.btnReduceGray.gameObject:SetActive(bGray)
|
|
self._mapNode.btnAddGray.gameObject:SetActive(bGray)
|
|
self._mapNode.inputCount.interactable = not bGray
|
|
end
|
|
function TemplateSimpleQuantitySelectorCtrl:Awake()
|
|
end
|
|
function TemplateSimpleQuantitySelectorCtrl:OnEnable()
|
|
self.handler = ui_handler(self, self.OnInputEndEdit, self._mapNode.inputCount)
|
|
NovaAPI.AddTMPEndEditListener(self._mapNode.inputCount, self.handler)
|
|
end
|
|
function TemplateSimpleQuantitySelectorCtrl:OnDisable()
|
|
NovaAPI.RemoveTMPEndEditListener(self._mapNode.inputCount, self.handler)
|
|
end
|
|
function TemplateSimpleQuantitySelectorCtrl:OnDestroy()
|
|
end
|
|
function TemplateSimpleQuantitySelectorCtrl:OnBtnClick_Add(btn)
|
|
if self.nCount >= MAX_COUNT then
|
|
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("QuantitySelector_Max"))
|
|
EventManager.Hit(EventId.TemporaryBlockInput, 0.5)
|
|
return
|
|
end
|
|
self.nCount = self.nCount + self.nDiffAmount
|
|
if self.nCount > MAX_COUNT then
|
|
self.nCount = MAX_COUNT
|
|
end
|
|
self:RefreshCount()
|
|
self.callback(self.nCount)
|
|
end
|
|
function TemplateSimpleQuantitySelectorCtrl:OnBtnClick_Reduce(btn)
|
|
if self.nCount <= 0 then
|
|
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("QuantitySelector_Min"))
|
|
EventManager.Hit(EventId.TemporaryBlockInput, 0.5)
|
|
return
|
|
end
|
|
self.nCount = self.nCount - self.nDiffAmount
|
|
if self.nCount < 0 then
|
|
self.nCount = 0
|
|
end
|
|
self:RefreshCount()
|
|
self.callback(self.nCount)
|
|
end
|
|
function TemplateSimpleQuantitySelectorCtrl:OnBtnClick_Gray(btn)
|
|
EventManager.Hit(EventId.OpenMessageBox, self.sGrayText)
|
|
EventManager.Hit(EventId.TemporaryBlockInput, 0.2)
|
|
end
|
|
function TemplateSimpleQuantitySelectorCtrl:OnInputEndEdit()
|
|
local nValue = tonumber(NovaAPI.GetTMPInputFieldText(self._mapNode.inputCount))
|
|
if not nValue then
|
|
nValue = self.nCount
|
|
elseif nValue < 0 then
|
|
nValue = 0
|
|
elseif nValue > MAX_COUNT then
|
|
nValue = MAX_COUNT
|
|
end
|
|
self.nCount = nValue
|
|
NovaAPI.SetTMPInputFieldText(self._mapNode.inputCount, nValue)
|
|
NovaAPI.SetTMPInputFieldPlaceholderText(self._mapNode.inputCount, nValue)
|
|
self:RefreshCount()
|
|
self.callback(self.nCount)
|
|
end
|
|
return TemplateSimpleQuantitySelectorCtrl
|