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,202 @@
|
||||
local BaseCtrl = require("GameCore.UI.BaseCtrl")
|
||||
local CharEquipmentCtrl = class("CharEquipmentCtrl", BaseCtrl)
|
||||
CharEquipmentCtrl._mapNodeConfig = {
|
||||
animRoot = {
|
||||
sNodeName = "----FunctionPanel----",
|
||||
sComponentName = "Animator"
|
||||
},
|
||||
safeAreaRoot = {
|
||||
sNodeName = "----SafeAreaRoot----",
|
||||
sComponentName = "GameObject"
|
||||
},
|
||||
EquipmentSlot = {},
|
||||
goEquipmentSlotItem = {
|
||||
nCount = 3,
|
||||
sCtrlName = "Game.UI.Equipment.EquipmentSlotItemCtrl"
|
||||
},
|
||||
btnEquipmentSlot = {
|
||||
nCount = 3,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_EquipmentSlot"
|
||||
},
|
||||
ctrlDropdown = {
|
||||
sNodeName = "tc_dropdown_01",
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateDropdownCtrl"
|
||||
},
|
||||
btnRename = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Rename"
|
||||
},
|
||||
btnPreview = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Preview"
|
||||
},
|
||||
txtBtnPreview = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Equipment_Btn_TotalAttrPreview"
|
||||
},
|
||||
txtName = {sComponentName = "TMP_Text"},
|
||||
imgRareName = {sComponentName = "Image"},
|
||||
imgCharColor = {sComponentName = "Image"},
|
||||
imgTag = {nCount = 3},
|
||||
txtTag = {nCount = 3, sComponentName = "TMP_Text"},
|
||||
txtElement = {sComponentName = "TMP_Text"},
|
||||
imgElementIcon = {sComponentName = "Image"}
|
||||
}
|
||||
CharEquipmentCtrl._mapEventConfig = {
|
||||
[EventId.CharRelatePanelAdvance] = "OnEvent_PanelAdvance",
|
||||
[EventId.CharRelatePanelBack] = "OnEvent_PanelBack",
|
||||
[EventId.CharBgRefresh] = "OnEvent_RefreshPanel",
|
||||
SelectTemplateDD = "OnEvent_PresetSelect",
|
||||
EquipmentSlotChanged = "RefreshPresetSlot"
|
||||
}
|
||||
function CharEquipmentCtrl:OnRefreshPanel()
|
||||
self.nCharId = self._panel.nCharId
|
||||
self:RefreshCharInfo()
|
||||
self:RefreshPresetSlot()
|
||||
self:RefreshPresetDD()
|
||||
end
|
||||
function CharEquipmentCtrl:RefreshCharInfo()
|
||||
local mapCfg = ConfigTable.GetData_Character(self.nCharId)
|
||||
if not mapCfg then
|
||||
return
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.txtName, mapCfg.Name)
|
||||
self:SetSprite_FrameColor(self._mapNode.imgRareName, mapCfg.Grade, AllEnum.FrameType_New.Text)
|
||||
NovaAPI.SetImageNativeSize(self._mapNode.imgRareName)
|
||||
local mapCharDescCfg = ConfigTable.GetData("CharacterDes", self.nCharId)
|
||||
local sColor, tbTag
|
||||
if mapCharDescCfg ~= nil then
|
||||
sColor = mapCharDescCfg.CharColor
|
||||
tbTag = mapCharDescCfg.Tag
|
||||
else
|
||||
sColor = ""
|
||||
tbTag = {}
|
||||
end
|
||||
local _, colorChar = ColorUtility.TryParseHtmlString(sColor)
|
||||
NovaAPI.SetImageColor(self._mapNode.imgCharColor, colorChar)
|
||||
for i = 1, 3 do
|
||||
local nTag = tbTag[i]
|
||||
if nTag then
|
||||
self._mapNode.imgTag[i]:SetActive(true)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtTag[i], ConfigTable.GetData("CharacterTag", nTag).Title)
|
||||
else
|
||||
self._mapNode.imgTag[i]:SetActive(false)
|
||||
end
|
||||
end
|
||||
local sName = AllEnum.ElementIconType.Icon .. mapCfg.EET
|
||||
self:SetAtlasSprite(self._mapNode.imgElementIcon, "12_rare", sName)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtElement, ConfigTable.GetUIText("T_Element_Attr_" .. mapCfg.EET))
|
||||
NovaAPI.SetTMPColor(self._mapNode.txtElement, AllEnum.ElementColor[mapCfg.EET])
|
||||
end
|
||||
function CharEquipmentCtrl:RefreshPresetDD()
|
||||
local nSelect = PlayerData.Equipment:GetSelectPreset(self.nCharId)
|
||||
self.tbName = PlayerData.Equipment:GetAllPresetName(self.nCharId)
|
||||
self._mapNode.ctrlDropdown:SetList(self.tbName, nSelect - 1, true)
|
||||
end
|
||||
function CharEquipmentCtrl:RefreshPresetSlot()
|
||||
local nSelect = PlayerData.Equipment:GetSelectPreset(self.nCharId)
|
||||
self.tbSlot = PlayerData.Equipment:GetSlotWithIndex(self.nCharId, nSelect)
|
||||
for k, v in ipairs(self._mapNode.goEquipmentSlotItem) do
|
||||
v:Init(self.tbSlot[k], self.nCharId)
|
||||
end
|
||||
end
|
||||
function CharEquipmentCtrl:PlaySwitchAnim(nClosePanelId, nOpenPanelId)
|
||||
if nClosePanelId == PanelId.CharEquipment then
|
||||
self._mapNode.safeAreaRoot.gameObject:SetActive(false)
|
||||
end
|
||||
if nOpenPanelId == PanelId.CharEquipment then
|
||||
self._mapNode.safeAreaRoot.gameObject:SetActive(true)
|
||||
CS.WwiseAudioManager.Instance:PostEvent("ui_charInfo_equipment_open")
|
||||
self:OnRefreshPanel()
|
||||
end
|
||||
end
|
||||
function CharEquipmentCtrl:OnEnable()
|
||||
local bHasLastIndex = false
|
||||
if self._panel.nPanelId ~= PanelId.CharEquipment then
|
||||
self._mapNode.safeAreaRoot.gameObject:SetActive(false)
|
||||
else
|
||||
self._mapNode.safeAreaRoot.gameObject:SetActive(true)
|
||||
CS.WwiseAudioManager.Instance:PostEvent("ui_charInfo_equipment_open")
|
||||
self:OnRefreshPanel()
|
||||
if self.nLastIndex and self.tbSlot and self.nLastIndex > 0 and self.tbSlot[self.nLastIndex].bUnlock then
|
||||
bHasLastIndex = true
|
||||
local nIndex = self.nLastIndex
|
||||
local nAnimTime = NovaAPI.GetAnimClipLength(self._mapNode.animRoot, {
|
||||
"CharEquipmentPanel_in"
|
||||
})
|
||||
local ani = function()
|
||||
if not PlayerData.Guide:CheckInGuideGroup(50) then
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.EquipmentInfo, self.nCharId, self.tbSlot[nIndex].nSlotId, self.tbSlot[nIndex].nGemIndex)
|
||||
end
|
||||
end
|
||||
self:AddTimer(1, nAnimTime, ani, true, true, true)
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, nAnimTime)
|
||||
end
|
||||
end
|
||||
if not bHasLastIndex then
|
||||
self.nLastIndex = 0
|
||||
end
|
||||
end
|
||||
function CharEquipmentCtrl:OnDestroy()
|
||||
self.nLastIndex = 0
|
||||
end
|
||||
function CharEquipmentCtrl:OnBtnClick_EquipmentSlot(_, nIndex)
|
||||
if self.tbSlot[nIndex].bUnlock then
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.EquipmentInfo, self.nCharId, self.tbSlot[nIndex].nSlotId, self.tbSlot[nIndex].nGemIndex)
|
||||
else
|
||||
EventManager.Hit(EventId.OpenMessageBox, orderedFormat(ConfigTable.GetUIText("Equipment_SlotLock"), self.tbSlot[nIndex].nLevel))
|
||||
end
|
||||
if nIndex == self.nLastIndex then
|
||||
return
|
||||
end
|
||||
if nil ~= self._mapNode.goEquipmentSlotItem[nIndex] then
|
||||
self._mapNode.goEquipmentSlotItem[nIndex]:SetChooseState(true)
|
||||
end
|
||||
if 0 ~= self.nLastIndex and nil ~= self._mapNode.goEquipmentSlotItem[self.nLastIndex] then
|
||||
self._mapNode.goEquipmentSlotItem[self.nLastIndex]:SetChooseState(false)
|
||||
end
|
||||
self.nLastIndex = nIndex
|
||||
end
|
||||
function CharEquipmentCtrl:OnBtnClick_Rename()
|
||||
local nSelect = PlayerData.Equipment:GetSelectPreset(self.nCharId)
|
||||
local callback = function()
|
||||
self:RefreshPresetDD()
|
||||
end
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.EquipmentRename, self.nCharId, self.tbName[nSelect], callback)
|
||||
end
|
||||
function CharEquipmentCtrl:OnBtnClick_Preview()
|
||||
local tbEquipment = PlayerData.Equipment:GetEquipedGem(self.nCharId)
|
||||
if next(tbEquipment) == nil then
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Equipment_CharEquipNone"))
|
||||
else
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.EquipmentAttrPreview, self.nCharId)
|
||||
end
|
||||
end
|
||||
function CharEquipmentCtrl:OnEvent_PresetSelect(nValue)
|
||||
local nIndex = nValue + 1
|
||||
local nSelect = PlayerData.Equipment:GetSelectPreset(self.nCharId)
|
||||
if nSelect == nIndex then
|
||||
return
|
||||
end
|
||||
local callback = function()
|
||||
self:RefreshPresetSlot()
|
||||
if self.nLastIndex and self.nLastIndex > 0 and nil ~= self._mapNode.goEquipmentSlotItem[self.nLastIndex] then
|
||||
self._mapNode.goEquipmentSlotItem[self.nLastIndex]:SetChooseState(true)
|
||||
end
|
||||
end
|
||||
PlayerData.Equipment:SendCharGemUsePresetReq(self.nCharId, nIndex, callback)
|
||||
end
|
||||
function CharEquipmentCtrl:OnEvent_PanelAdvance(nClosePanelId, nOpenPanelId)
|
||||
self:PlaySwitchAnim(nClosePanelId, nOpenPanelId)
|
||||
end
|
||||
function CharEquipmentCtrl:OnEvent_PanelBack(nClosePanelId, nOpenPanelId)
|
||||
self:PlaySwitchAnim(nClosePanelId, nOpenPanelId)
|
||||
end
|
||||
function CharEquipmentCtrl:OnEvent_RefreshPanel()
|
||||
if self._panel.nPanelId ~= PanelId.CharEquipment then
|
||||
return
|
||||
end
|
||||
self:OnRefreshPanel()
|
||||
end
|
||||
return CharEquipmentCtrl
|
||||
Reference in New Issue
Block a user