PGRData/Script/matrix/xui/xuirpgmakergame/character/XUiRpgMakerGameChoice.lua

210 lines
9.5 KiB
Lua
Raw Normal View History

2024-09-01 20:49:41 +00:00
local XUiPanelRoleModel = require("XUi/XUiCharacter/XUiPanelRoleModel")
local XUiPanelGraphic = require("XUi/XUiRpgMakerGame/Character/XUiPanelGraphic")
local CSXTextManagerGetText = CS.XTextManager.GetText
---推箱子4.0 本体和复制体
local XUiRpgMakerGameChoice = XLuaUiManager.Register(XLuaUi, "UiRpgMakerGameChoice")
function XUiRpgMakerGameChoice:OnAwake()
self:AutoAddListener()
self:InitSceneRoot()
self.GraphicPanelRight = XUiPanelGraphic.New(self.PanelGraphicRight, self)
self.GraphicPanelLeft = XUiPanelGraphic.New(self.PanelGraphicLeft, self)
end
function XUiRpgMakerGameChoice:OnStart(stageId)
self.StageId = stageId
--限定使用的角色Id
self.OnlyUseRoleId = XRpgMakerGameConfigs.GetStageUseRoleId(stageId)
self:InitCharacter()
end
function XUiRpgMakerGameChoice:OnEnable()
local characterId = self:GetCharacterId()
local copyCharacterId = XRpgMakerGameConfigs.GetStageShadowId(self.StageId)
self.PanelDrag.gameObject:SetActiveEx(false)
if self.PanelDragLock then
self.PanelDragLock.gameObject:SetActiveEx(false)
end
self:UpdateLeftCharacterInfo(characterId)
self:UpdateRightCharacterInfo(copyCharacterId)
self:UpdateLeftModel(characterId)
self:UpdateRightModel(copyCharacterId)
end
function XUiRpgMakerGameChoice:AutoAddListener()
self:RegisterClickEvent(self.BtnBack, self.Close)
self:RegisterClickEvent(self.BtnMainUi, function() XLuaUiManager.RunMain() end)
self.BtnEnterFight.CallBack = handler(self, self.OnBtnEnterFightClick)
local curChapterGroupId = XDataCenter.RpgMakerGameManager.GetCurChapterGroupId()
self:BindHelpBtn(self.BtnHelp, XRpgMakerGameConfigs.GetChapterGroupHelpKey(curChapterGroupId))
end
function XUiRpgMakerGameChoice:InitSceneRoot()
local root = self.UiModelGo.transform
self.PanelRoleModel = root:FindTransform("PanelRoleModel")
self.PanelRoleModel2 = root:FindTransform("PanelRoleModel2")
self.ImgEffectHuanren = root:FindTransform("ImgEffectHuanren")
self.ImgEffectHuanren1 = root:FindTransform("ImgEffectHuanren1")
self.ImgEffectLogoGouzao = root:FindTransform("ImgEffectLogoGouzao")
self.ImgEffectLogoGanran = root:FindTransform("ImgEffectLogoGanran")
self.CameraFar = {
root:FindTransform("UiCamFarLv"),
root:FindTransform("UiCamFarGrade"),
root:FindTransform("UiCamFarQuality"),
root:FindTransform("UiCamFarSkill"),
root:FindTransform("UiCamFarrExchange"),
}
self.CameraNear = {
root:FindTransform("UiCamNearLv"),
root:FindTransform("UiCamNearGrade"),
root:FindTransform("UiCamNearQuality"),
root:FindTransform("UiCamNearSkill"),
root:FindTransform("UiCamNearrExchange"),
}
self.RightRoleModelPanel = XUiPanelRoleModel.New(self.PanelRoleModel, self.Name)
self.LeftRoleModelPanel = XUiPanelRoleModel.New(self.PanelRoleModel2, self.Name)
end
function XUiRpgMakerGameChoice:InitCharacter()
local useRoleId = self.OnlyUseRoleId
self.LeftCharacterId = XTool.IsNumberValid(useRoleId) and useRoleId or XDataCenter.RpgMakerGameManager.GetOnceUnLockRoleId()
end
function XUiRpgMakerGameChoice:CheckOpenTips(characterId)
local isUnlock, desc = XDataCenter.RpgMakerGameManager.IsUnlockRole(characterId)
if not isUnlock then
XUiManager.TipMsg(desc)
end
return isUnlock
end
function XUiRpgMakerGameChoice:PlaySwitchAnima(oldCharacterId, newCharacterId)
self:PlayAnimation("QieHuan1")
local isUnlockRoleOld = XDataCenter.RpgMakerGameManager.IsUnlockRole(oldCharacterId)
local isUnlockRoleNew = XDataCenter.RpgMakerGameManager.IsUnlockRole(newCharacterId)
if isUnlockRoleNew then
self.ImgEffectHuanren.gameObject:SetActiveEx(false)
self.ImgEffectHuanren.gameObject:SetActiveEx(true)
end
--从3d角色已解锁切换到2d立绘未解锁播放的动画
if not isUnlockRoleNew and isUnlockRoleOld ~= isUnlockRoleNew then
self:PlayAnimation("QieHuan2")
end
end
function XUiRpgMakerGameChoice:UpdateBtnEnterFightState(characterId)
local isUnlockRole, desc = XDataCenter.RpgMakerGameManager.IsUnlockRole(characterId)
self.BtnEnterFight:SetDisable(not isUnlockRole, isUnlockRole)
self.TextStyleTitle.gameObject:SetActiveEx(isUnlockRole)
if not isUnlockRole then
self.BtnEnterFight:SetNameByGroup(1, desc)
end
end
---复制体介绍面板
function XUiRpgMakerGameChoice:UpdateRightCharacterInfo(characterId)
if not XTool.IsNumberValid(characterId) then return end
local isUnlockRole = XDataCenter.RpgMakerGameManager.IsUnlockRole(characterId)
self.RightCharacterId = characterId
self.TextNameRight.text = isUnlockRole and XRpgMakerGameConfigs.GetRpgMakerGameRoleName(characterId) or CSXTextManagerGetText("RpgMakerGameCharacterLockName")
self.TextStyleRight.text = isUnlockRole and XRpgMakerGameConfigs.GetRpgMakerGameRoleStyle(characterId) or ""
self.TextInfoNameRight.text = isUnlockRole and XRpgMakerGameConfigs.GetRpgMakerGameRoleInfoName(characterId) or CSXTextManagerGetText("RpgMakerGameCharacterLockInfoTitle")
self.TxtEnergyRight.text = isUnlockRole and XRpgMakerGameConfigs.GetRpgMakerGameRoleInfo(characterId) or CSXTextManagerGetText("RpgMakerGameCharacterLockInfoDesc")
self.GraphicPanelRight:Refresh(characterId)
self.ImgAttributeRight = XUiHelper.TryGetComponent(self.TextNameRight.transform, "ImgAttribute", "RawImage")
local roleSkillType = XRpgMakerGameConfigs.GetRpgMakerGameRoleSkillType(characterId)
if XTool.IsNumberValid(roleSkillType) and self.ImgAttributeRight then
self.ImgAttributeRight:SetRawImage(XRpgMakerGameConfigs.GetRpgMakerGameSkillTypeIcon(roleSkillType))
end
if self.ImgAttributeRight then
self.ImgAttributeRight.gameObject:SetActiveEx(XTool.IsNumberValid(roleSkillType))
end
end
---本体介绍面板
function XUiRpgMakerGameChoice:UpdateLeftCharacterInfo(characterId)
if not XTool.IsNumberValid(characterId) then return end
local isUnlockRole = XDataCenter.RpgMakerGameManager.IsUnlockRole(characterId)
self.LeftCharacterId = characterId
self.TextNameLeft.text = isUnlockRole and XRpgMakerGameConfigs.GetRpgMakerGameRoleName(characterId) or CSXTextManagerGetText("RpgMakerGameCharacterLockName")
self.TextStyleLeft.text = isUnlockRole and XRpgMakerGameConfigs.GetRpgMakerGameRoleStyle(characterId) or ""
self.TextInfoNameLeft.text = isUnlockRole and XRpgMakerGameConfigs.GetRpgMakerGameRoleInfoName(characterId) or CSXTextManagerGetText("RpgMakerGameCharacterLockInfoTitle")
self.TxtEnergyLeft.text = isUnlockRole and XRpgMakerGameConfigs.GetRpgMakerGameRoleInfo(characterId) or CSXTextManagerGetText("RpgMakerGameCharacterLockInfoDesc")
self.GraphicPanelLeft:Refresh(characterId)
self.ImgAttributeLeft = XUiHelper.TryGetComponent(self.TextNameLeft.transform, "ImgAttribute", "RawImage")
local roleSkillType = XRpgMakerGameConfigs.GetRpgMakerGameRoleSkillType(characterId)
if XTool.IsNumberValid(roleSkillType) and self.ImgAttributeLeft then
self.ImgAttributeLeft:SetRawImage(XRpgMakerGameConfigs.GetRpgMakerGameSkillTypeIcon(roleSkillType))
end
if self.ImgAttributeLeft then
self.ImgAttributeLeft.gameObject:SetActiveEx(XTool.IsNumberValid(roleSkillType))
end
end
-- 复制体模型
function XUiRpgMakerGameChoice:UpdateRightModel(copyCharacterId)
if not XTool.IsNumberValid(copyCharacterId) then return end
local isUnlockRole = XDataCenter.RpgMakerGameManager.IsUnlockRole(copyCharacterId)
if not isUnlockRole then
self.RightRoleModelPanel:HideRoleModel()
return
end
local copyModelName = XRpgMakerGameConfigs.GetRpgMakerGameRoleModelAssetPath(copyCharacterId)
self.RightRoleModelPanel:UpdateRoleModelWithAutoConfig(copyModelName, XModelManager.MODEL_UINAME.XUiCharacter, function(model)
-- self.PanelDrag.Target = model.transform
end)
self.RightRoleModelPanel:SetEffectMaxCount(2)
local skillModelKey = XRpgMakerGameConfigs.GetModelSkillShadowEffctKey(XRpgMakerGameConfigs.GetRoleSkillType(copyCharacterId))
if not skillModelKey then return end
local effectPath = XRpgMakerGameConfigs.GetRpgMakerGameModelPath(skillModelKey)
self.RightRoleModelPanel:LoadEffect(effectPath, skillModelKey, true, true, false)
self.RightRoleModelPanel:ShowRoleModel()
local effect = self.RightRoleModelPanel:GetEffectObj(skillModelKey, effectPath)
if effect then
effect.gameObject:SetLayerRecursively(CS.UnityEngine.LayerMask.NameToLayer("UiNear"))
end
end
function XUiRpgMakerGameChoice:UpdateLeftModel(characterId)
local isUnlockRole = XDataCenter.RpgMakerGameManager.IsUnlockRole(characterId)
if not isUnlockRole then
self.LeftRoleModelPanel:HideRoleModel()
return
end
local modelName = XRpgMakerGameConfigs.GetRpgMakerGameRoleModelAssetPath(characterId)
self.LeftRoleModelPanel:UpdateRoleModelWithAutoConfig(modelName, XModelManager.MODEL_UINAME.XUiCharacter, function(model)
-- self.PanelDrag.Target = model.transform
end)
self.LeftRoleModelPanel:ShowRoleModel()
end
function XUiRpgMakerGameChoice:OnBtnEnterFightClick()
local stageId = self:GetStageId()
local characterId = self:GetCharacterId()
local cb = function()
XLuaUiManager.Remove("UiRpgMakerGameDetail")
XLuaUiManager.PopThenOpen("UiRpgMakerGamePlayMain")
end
XDataCenter.RpgMakerGameManager.RequestRpgMakerGameEnterStage(stageId, characterId, cb)
end
function XUiRpgMakerGameChoice:GetCharacterId()
return self.LeftCharacterId
end
function XUiRpgMakerGameChoice:GetStageId()
return self.StageId
end