182 lines
7 KiB
Lua
182 lines
7 KiB
Lua
|
|
||
|
--######################## XUiBuffGrid ########################
|
||
|
local XUiTheatreSkillGrid = require("XUi/XUiTheatre/XUiTheatreSkillGrid")
|
||
|
local XUiBuffGrid = XClass(nil, "XUiBuffGrid")
|
||
|
|
||
|
function XUiBuffGrid:Ctor(ui)
|
||
|
XUiHelper.InitUiClass(self, ui)
|
||
|
end
|
||
|
|
||
|
-- skill : XAdventureSkill
|
||
|
function XUiBuffGrid:SetData(skill, selectSkillId)
|
||
|
self.TxtName.text = skill:GetName()
|
||
|
self.TxtDetail.text = skill:GetDesc()
|
||
|
-- 等级信息显示
|
||
|
local operationType, lastSkill = skill:GetSkillOperationType()
|
||
|
local showLevelInfo = operationType ~= XTheatreConfigs.SkillOperationType.AddBuff
|
||
|
local isLevelUp = operationType == XTheatreConfigs.SkillOperationType.LevelUp
|
||
|
if showLevelInfo then
|
||
|
self.TxtLevelDetail.text = skill:GetLevelDesc()
|
||
|
self.TxtCurrentLevel.text = lastSkill == skill and 1 or lastSkill:GetCurrentLevel()
|
||
|
self.TxtNextLevel.text = skill:GetCurrentLevel()
|
||
|
end
|
||
|
self.ImgUp.gameObject:SetActiveEx(showLevelInfo and isLevelUp)
|
||
|
self.TxtLevelDetail.gameObject:SetActiveEx(showLevelInfo)
|
||
|
self.TxtCurrentLevel.gameObject:SetActiveEx(showLevelInfo)
|
||
|
self.TxtNextLevel.gameObject:SetActiveEx(showLevelInfo and isLevelUp)
|
||
|
-- 显示标签
|
||
|
self.GridTabAdd.gameObject:SetActiveEx(operationType == XTheatreConfigs.SkillOperationType.AddBuff)
|
||
|
self.GridTabLevelUp.gameObject:SetActiveEx(operationType == XTheatreConfigs.SkillOperationType.LevelUp)
|
||
|
self.GridTabReplace.gameObject:SetActiveEx(operationType == XTheatreConfigs.SkillOperationType.Replace)
|
||
|
XUiTheatreSkillGrid.New(self.GridSkill):SetData(skill, true)
|
||
|
XUiHelper.MarkLayoutForRebuild(self.PanelBuffDesc1)
|
||
|
self.PanelBuffDesc1.gameObject:SetActiveEx(operationType ~= XTheatreConfigs.SkillOperationType.AddBuff)
|
||
|
self:SetSelectStatus(skill:GetId() == selectSkillId)
|
||
|
end
|
||
|
|
||
|
function XUiBuffGrid:SetSelectStatus(value)
|
||
|
if value then
|
||
|
self.BtnSelf:SetButtonState(CS.UiButtonState.Select)
|
||
|
else
|
||
|
self.BtnSelf:SetButtonState(CS.UiButtonState.Normal)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
--######################## XUiTheatreChooseBuff ########################
|
||
|
local XAdventureSkill = require("XEntity/XTheatre/Adventure/XAdventureSkill")
|
||
|
local XUiTheatreChooseBuff = XLuaUiManager.Register(XLuaUi, "UiTheatreChooseBuff")
|
||
|
|
||
|
function XUiTheatreChooseBuff:OnAwake()
|
||
|
self.TheatreManager = XDataCenter.TheatreManager
|
||
|
self.AdventureManager = self.TheatreManager.GetCurrentAdventureManager()
|
||
|
self.CurrentChapter = self.AdventureManager:GetCurrentChapter()
|
||
|
-- buff列表
|
||
|
self.DynamicTable = XDynamicTableNormal.New(self.PanelList)
|
||
|
self.DynamicTable:SetProxy(XUiBuffGrid)
|
||
|
self.DynamicTable:SetDelegate(self)
|
||
|
self.GridBuff.gameObject:SetActiveEx(false)
|
||
|
-- 技能 XAdventureSkill
|
||
|
self.Skills = nil
|
||
|
-- 当前选择的技能id
|
||
|
self.CurrentSkillId = nil
|
||
|
self.Callback = nil
|
||
|
-- 注册资源面板
|
||
|
XUiHelper.NewPanelActivityAsset(self.TheatreManager.GetAdventureAssetItemIds(), self.PanelAssetitems)
|
||
|
self:RegisterUiEvents()
|
||
|
-- 隐藏头部信息
|
||
|
self.BtnBack.gameObject:SetActiveEx(false)
|
||
|
self.BtnMainUi.gameObject:SetActiveEx(false)
|
||
|
self.BtnHelp.gameObject:SetActiveEx(false)
|
||
|
self.PanelAssetitems.gameObject:SetActiveEx(false)
|
||
|
end
|
||
|
|
||
|
function XUiTheatreChooseBuff:OnStart(skillIds, callback)
|
||
|
self.Callback = callback
|
||
|
skillIds = skillIds or self.CurrentChapter:GetWaitSelectableSkillIds()
|
||
|
self.Skills = {}
|
||
|
for _, id in ipairs(skillIds) do
|
||
|
table.insert(self.Skills, XAdventureSkill.New(id))
|
||
|
end
|
||
|
self:RefreshSkillList()
|
||
|
-- 势力图标
|
||
|
self.RImgPowerIcon:SetRawImage(self.Skills[1]:GetPowerIcon())
|
||
|
-- 势力标题
|
||
|
self.TxtPowerTitle.text = self.Skills[1]:GetPowerTitle()
|
||
|
self:UpdateSceneUrl()
|
||
|
self:UpdateBg()
|
||
|
end
|
||
|
|
||
|
--######################## 私有方法 ########################
|
||
|
|
||
|
function XUiTheatreChooseBuff:RegisterUiEvents()
|
||
|
self.BtnMainUi.CallBack = function() XLuaUiManager.RunMain() end
|
||
|
XUiHelper.RegisterClickEvent(self, self.BtnBack, self.Close)
|
||
|
XUiHelper.RegisterHelpButton(self.BtnHelp, self.TheatreManager.GetHelpKey())
|
||
|
XUiHelper.RegisterClickEvent(self, self.BtnDetail, self.OnBtnDetailClicked)
|
||
|
XUiHelper.RegisterClickEvent(self, self.BtnConfirm, self.OnBtnConfirmClicked)
|
||
|
XUiHelper.RegisterClickEvent(self, self.BtnSkip, self.OnBtnSkipClicked)
|
||
|
end
|
||
|
|
||
|
function XUiTheatreChooseBuff:OnBtnSkipClicked()
|
||
|
self.AdventureManager:RequestSkipSelectSkill(function()
|
||
|
self:Close()
|
||
|
end)
|
||
|
end
|
||
|
|
||
|
function XUiTheatreChooseBuff:OnBtnDetailClicked()
|
||
|
XLuaUiManager.Open("UiTheatreFieldGuide", nil, nil, nil, nil, nil, true)
|
||
|
end
|
||
|
|
||
|
function XUiTheatreChooseBuff:OnBtnConfirmClicked()
|
||
|
if self.CurrentSkillId == nil then
|
||
|
XUiManager.TipErrorWithKey("TheatreNotSelectSkill")
|
||
|
return
|
||
|
end
|
||
|
local selectSkill = nil
|
||
|
for _, skill in pairs(self.DynamicTable.DataSource) do
|
||
|
if skill:GetId() == self.CurrentSkillId then
|
||
|
selectSkill = skill
|
||
|
break
|
||
|
end
|
||
|
end
|
||
|
RunAsyn(function()
|
||
|
local operationType, fromSkill = selectSkill:GetSkillOperationType()
|
||
|
local signalCode, isOK = nil, true
|
||
|
if operationType == XTheatreConfigs.SkillOperationType.Replace then
|
||
|
XLuaUiManager.Open("UiTheatreReplaceTips", fromSkill, selectSkill)
|
||
|
signalCode, isOK = XLuaUiManager.AwaitSignal("UiTheatreReplaceTips", "Close", self)
|
||
|
if signalCode ~= XSignalCode.SUCCESS then return end
|
||
|
end
|
||
|
if isOK then
|
||
|
self.AdventureManager:RequestSelectSkill(self.CurrentSkillId, operationType, fromSkill
|
||
|
, function()
|
||
|
XUiManager.TipMsg(XUiHelper.GetText("TheatreGetSkillTip"))
|
||
|
self:Close()
|
||
|
end)
|
||
|
end
|
||
|
end)
|
||
|
end
|
||
|
|
||
|
function XUiTheatreChooseBuff:RefreshSkillList()
|
||
|
self.DynamicTable:SetDataSource(self.Skills)
|
||
|
self.DynamicTable:ReloadDataSync(1)
|
||
|
end
|
||
|
|
||
|
function XUiTheatreChooseBuff:OnDynamicTableEvent(event, index, grid)
|
||
|
local skill = self.DynamicTable.DataSource[index]
|
||
|
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
|
||
|
grid:SetData(skill, self.CurrentSkillId)
|
||
|
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_TOUCHED then
|
||
|
for _, value in pairs(self.DynamicTable:GetGrids()) do
|
||
|
value:SetSelectStatus(false)
|
||
|
end
|
||
|
grid:SetSelectStatus(true)
|
||
|
self.CurrentSkillId = skill:GetId()
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function XUiTheatreChooseBuff:Close()
|
||
|
self.Super.Close(self)
|
||
|
if self.Callback then self.Callback() end
|
||
|
end
|
||
|
|
||
|
function XUiTheatreChooseBuff:UpdateSceneUrl()
|
||
|
XDataCenter.TheatreManager.UpdateSceneUrl(self)
|
||
|
XScheduleManager.ScheduleOnce(function()
|
||
|
XDataCenter.TheatreManager.ShowRoleModelCamera(self, "FarCameraChooseBuff", "NearCameraChooseBuff", true)
|
||
|
end, 1)
|
||
|
end
|
||
|
|
||
|
function XUiTheatreChooseBuff:UpdateBg()
|
||
|
local chapterId = self.CurrentChapter:GetCurrentChapterId()
|
||
|
if self.RImgBgA then
|
||
|
local bgA = XTheatreConfigs.GetChapterBgA(chapterId)
|
||
|
self.RImgBgA:SetRawImage(bgA)
|
||
|
end
|
||
|
if self.RImgBgB then
|
||
|
local bgB = XTheatreConfigs.GetChapterBgB(chapterId)
|
||
|
self.RImgBgB:SetRawImage(bgB)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
return XUiTheatreChooseBuff
|