PGRData/Script/matrix/xui/xuitheatre/decoration/XUiTheatreDetail.lua

118 lines
No EOL
4.6 KiB
Lua

--######################## XGridCondition 条件格子 ########################
local XGridCondition = XClass(nil, "XGridCondition")
function XGridCondition:Ctor(ui)
self.GameObject = ui.gameObject
self.Transform = ui.transform
XUiHelper.InitUiClass(self, ui)
end
function XGridCondition:Refresh(theatreDecorationId)
local conditionId = XTheatreConfigs.GetDecorationConditionId(theatreDecorationId)
local ret, conditionDesc
if XTool.IsNumberValid(conditionId) then
ret, conditionDesc = XConditionManager.CheckCondition(conditionId)
self.TxtON.text = conditionDesc
self.TxtOFF.text = conditionDesc
self.PanelON.gameObject:SetActiveEx(ret)
self.PanelOFF.gameObject:SetActiveEx(not ret)
else
self.PanelON.gameObject:SetActiveEx(true)
self.PanelOFF.gameObject:SetActiveEx(false)
end
end
--装修项详情弹窗
local XUiTheatreDetail = XLuaUiManager.Register(XLuaUi, "UiTheatreDetail")
function XUiTheatreDetail:OnAwake()
self.BtnLevelEnter.CallBack = handler(self, self.OnBtnLevelEnterClick)
self:RegisterClickEvent(self.BtnTanchuangCloseBig, self.Close)
self.DecorationManager = XDataCenter.TheatreManager.GetDecorationManager()
self.ConditionGrid = XGridCondition.New(self.GridCondition)
end
function XUiTheatreDetail:OnStart(decorationId, closeCb)
self.DecorationId = decorationId
self.CloseCallback = closeCb
end
function XUiTheatreDetail:OnEnable()
self:Refresh()
end
function XUiTheatreDetail:OnDestroy()
if self.CloseCallback then
self.CloseCallback()
end
end
function XUiTheatreDetail:Refresh()
local decorationId = self.DecorationId
local theatreDecorationId = self.DecorationManager:GetTheatreDecorationId(decorationId)
local lv = self.DecorationManager:GetDecorationLv(decorationId)
local isMaxLv = self.DecorationManager:IsMaxLv(decorationId)
--图标
local icon = XTheatreConfigs.GetDecorationIcon(theatreDecorationId)
self.RImgSkillIcon:SetRawImage(icon)
--名称
self.TxtSkillName.text = XTheatreConfigs.GetDecorationName(theatreDecorationId)
--描述
self.TxtDesc.text = XUiHelper.ReplaceTextNewLine(XTheatreConfigs.GetDecorationDesc(theatreDecorationId))
--条件描述和达成状态
local conditionId = XTheatreConfigs.GetDecorationConditionId(theatreDecorationId)
local ret, conditionDesc
if XTool.IsNumberValid(conditionId) then
ret, conditionDesc = XConditionManager.CheckCondition(conditionId)
self.TxtActiveDesc.text = conditionDesc
self.TxtActiveState.text = ret and XUiHelper.GetText("TheatreDecorationTipsUnLockDesc") or XUiHelper.GetText("TheatreDecorationTipsLockDesc")
self.PanelCondition.gameObject:SetActiveEx(true)
else
ret = true
self.PanelCondition.gameObject:SetActiveEx(false)
end
self.ConditionGrid:Refresh(theatreDecorationId)
--消耗道具
local costItemId = XTheatreConfigs.GetDecorationUpgradeCostItemId(theatreDecorationId)
local isHaveItem = XTool.IsNumberValid(costItemId)
local costItemName = XItemConfigs.GetItemNameById(costItemId)
local costItemIcon = XItemConfigs.GetItemIconById(costItemId)
local costUpgradeCost = XTheatreConfigs.GetDecorationUpgradeCost(theatreDecorationId)
local costCostCount = XDataCenter.ItemManager.GetCount(costItemId)
self.TextItemName.text = XUiHelper.GetText("RebootCostText", costItemName)
self.RImgCostIcon:SetRawImage(costItemIcon)
self.TxtNeedNums.text = costCostCount
self.TxtTotalNums.text = "/" .. costUpgradeCost
self.RImgCostIcon.gameObject:SetActiveEx(isHaveItem)
self.TxtTotalNums.gameObject:SetActiveEx(not isMaxLv)
self.TextItemName.gameObject:SetActiveEx(not isMaxLv)
--改造按钮
local isCanLevelUp = (not isMaxLv and costCostCount >= costUpgradeCost and ret) or false
self.BtnLevelEnter:SetDisable(not isCanLevelUp, isCanLevelUp)
--当前技能等级
local curLv = XTheatreConfigs.GetDecorationLv(theatreDecorationId)
self.TxtSkillLevel.text = XUiHelper.GetText("TheatreDecorationTipsLevel", curLv)
end
function XUiTheatreDetail:OnBtnLevelEnterClick()
local manager = XDataCenter.TheatreManager.GetDecorationManager()
local theatreDecorationId = self.DecorationManager:GetActiveTheatreDecorationId(self.DecorationId)
manager:RequestTheatreDecorationUpgrade(theatreDecorationId)
end
function XUiTheatreDetail:OnGetEvents()
return { XEventId.EVENT_THEATRE_DECORATION_UPGRADE }
end
function XUiTheatreDetail:OnNotify(evt, ...)
if evt == XEventId.EVENT_THEATRE_DECORATION_UPGRADE then
self:Refresh()
end
end