181 lines
5.1 KiB
Lua
181 lines
5.1 KiB
Lua
local wikiDetailBaseCtrl = require_ex('UI/Panels/WikiDetailBase/WikiDetailBaseCtrl')
|
|
local PANEL_ID = PanelId.WikiWeapon
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WikiWeaponCtrl = HL.Class('WikiWeaponCtrl', wikiDetailBaseCtrl.WikiDetailBaseCtrl)
|
|
|
|
|
|
|
|
|
|
|
|
WikiWeaponCtrl.OnShow = HL.Override() << function(self)
|
|
WikiWeaponCtrl.Super.OnShow(self)
|
|
self:_RefreshModel()
|
|
self:_PlayBgDecoAnim()
|
|
end
|
|
|
|
|
|
|
|
WikiWeaponCtrl._OnPlayAnimationOut = HL.Override() << function(self)
|
|
WikiWeaponCtrl.Super._OnPlayAnimationOut(self)
|
|
self.m_phase:PlayBgAnim("wiki_plane_toweapon_out")
|
|
end
|
|
|
|
|
|
|
|
WikiWeaponCtrl.GetPanelId = HL.Override().Return(HL.Number) << function(self)
|
|
return PANEL_ID
|
|
end
|
|
|
|
|
|
|
|
WikiWeaponCtrl._OnPhaseItemBind = HL.Override() << function(self)
|
|
WikiWeaponCtrl.Super._OnPhaseItemBind(self)
|
|
|
|
self:_RefreshModel(true)
|
|
self:_PlayBgDecoAnim()
|
|
end
|
|
|
|
|
|
|
|
WikiWeaponCtrl._RefreshCenter = HL.Override() << function(self)
|
|
WikiWeaponCtrl.Super._RefreshCenter(self)
|
|
self:_RefreshModel()
|
|
end
|
|
|
|
|
|
WikiWeaponCtrl.m_isShowWeaponMaxInfo = HL.Field(HL.Boolean) << false
|
|
|
|
|
|
WikiWeaponCtrl.m_isBtnAttrInited = HL.Field(HL.Boolean) << false
|
|
|
|
|
|
|
|
|
|
WikiWeaponCtrl._RefreshRight = HL.Override() << function(self)
|
|
if not self.m_isBtnAttrInited then
|
|
self.m_isBtnAttrInited = true
|
|
self.view.right.btnToggle.onClick:AddListener(function()
|
|
self.view.right.recipeNodeAnimWrapper:PlayOutAnimation(function()
|
|
self.m_isShowWeaponMaxInfo = not self.m_isShowWeaponMaxInfo
|
|
self:_RefreshModel()
|
|
self:_RefreshRight()
|
|
self.view.right.recipeNodeAnimWrapper:PlayInAnimation()
|
|
end)
|
|
|
|
end)
|
|
end
|
|
self:_RefreshWeaponShowInfo(self:_GetWeaponShowData(self.m_isShowWeaponMaxInfo))
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WikiWeaponCtrl._RefreshModel = HL.Method(HL.Opt(HL.Boolean)) << function(self, playInAnim)
|
|
if self.m_phase then
|
|
self.m_phase:ShowModel(self.m_wikiEntryShowData, {
|
|
isWeaponRefinedMax = self.m_isShowWeaponMaxInfo,
|
|
isWeaponGemMax = self.m_isShowWeaponMaxInfo,
|
|
playInAnim = playInAnim,
|
|
})
|
|
self.m_phase:ActiveEntryVirtualCamera(true)
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WikiWeaponCtrl._GetWeaponShowData = HL.Method(HL.Boolean).Return(HL.Table) << function(self, isMaxLevel)
|
|
local templateId = self.m_wikiEntryShowData.wikiEntryData.refItemId
|
|
local hasValue
|
|
|
|
local weaponBasicData
|
|
|
|
local weaponBreakThroughDetailList
|
|
|
|
local weaponTalentDetailList
|
|
local maxLevel, initMaxLevel, breakThroughCount, maxBreakthroughLevel, maxRefineLevel = 0, 0, 0, 0, 0
|
|
|
|
hasValue, weaponBasicData = Tables.weaponBasicTable:TryGetValue(templateId)
|
|
|
|
if hasValue then
|
|
maxLevel = weaponBasicData.maxLv
|
|
hasValue, weaponBreakThroughDetailList = Tables.weaponBreakThroughTemplateTable:TryGetValue(weaponBasicData.breakthroughTemplateId)
|
|
if hasValue then
|
|
breakThroughCount = #weaponBreakThroughDetailList.list
|
|
if breakThroughCount > 1 then
|
|
initMaxLevel = weaponBreakThroughDetailList.list[1].breakthroughLv
|
|
maxBreakthroughLevel = breakThroughCount - 1
|
|
end
|
|
end
|
|
hasValue, weaponTalentDetailList = Tables.weaponTalentTemplateTable:TryGetValue(weaponBasicData.talentTemplateId)
|
|
if hasValue then
|
|
maxRefineLevel = #weaponTalentDetailList.list
|
|
end
|
|
end
|
|
|
|
|
|
local weaponShowData = {
|
|
templateId = templateId,
|
|
level = isMaxLevel and maxLevel or 1,
|
|
maxLevel = isMaxLevel and maxLevel or initMaxLevel,
|
|
breakthroughLevel = isMaxLevel and maxBreakthroughLevel or 0,
|
|
maxBreakthroughLevel = maxBreakthroughLevel,
|
|
refineLevel = isMaxLevel and maxRefineLevel or 0,
|
|
}
|
|
return weaponShowData
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
WikiWeaponCtrl._RefreshWeaponShowInfo = HL.Method(HL.Table) << function(self, weaponShowData)
|
|
local view = self.view.right
|
|
local isMax = weaponShowData.level == weaponShowData.maxLevel
|
|
view.txtArr.text = isMax and Language.LUA_WIKI_WEAPON_MAX_ATTR or Language.LUA_WIKI_WEAPON_INIT_ATTR
|
|
view.levelText.text = tostring(weaponShowData.level)
|
|
view.maxText.text = string.format("/%d", weaponShowData.maxLevel)
|
|
view.levelBreakNode:InitLevelBreakNodeSimple(weaponShowData.breakthroughLevel, weaponShowData.maxBreakthroughLevel, false)
|
|
view.weaponAttributeNode:InitWeaponAttributeNodeByTemplateId(weaponShowData.templateId, isMax)
|
|
view.weaponSkillNode:InitWeaponSkillNodeByTemplateId(weaponShowData.templateId, weaponShowData.breakthroughLevel,
|
|
weaponShowData.refineLevel, isMax)
|
|
view.potentialStar:InitWeaponPotentialStar(weaponShowData.refineLevel)
|
|
view.potentialStar.view.breakthroughBg.gameObject:SetActive(not isMax)
|
|
view.btnSkill.onClick:RemoveAllListeners()
|
|
view.btnSkill.onClick:AddListener(function()
|
|
self.m_phase:CreateOrShowPhasePanelItem(PanelId.WikiWeaponSkill, self.m_wikiEntryShowData)
|
|
end)
|
|
end
|
|
|
|
|
|
|
|
WikiWeaponCtrl._PlayBgDecoAnim = HL.Method() << function(self)
|
|
if self.m_phase then
|
|
self.m_phase:PlayBgAnim("wiki_plane_toweapon_in")
|
|
self.m_phase:PlayDecoAnim("wiki_uideco_grouptoweaponpanel")
|
|
end
|
|
end
|
|
|
|
HL.Commit(WikiWeaponCtrl) |