192 lines
No EOL
8 KiB
Lua
192 lines
No EOL
8 KiB
Lua
local XUiRpgMakerGameCharacterGrid = require("XUi/XUiRpgMakerGame/Character/XUiRpgMakerGameCharacterGrid")
|
||
local XUiPanelRoleModel = require("XUi/XUiCharacter/XUiPanelRoleModel")
|
||
local XUiPanelGraphic = require("XUi/XUiRpgMakerGame/Character/XUiPanelGraphic")
|
||
|
||
local CSXTextManagerGetText = CS.XTextManager.GetText
|
||
|
||
local XUiRpgMakerGameCharacter = XLuaUiManager.Register(XLuaUi, "UiRpgMakerGameCharacter")
|
||
|
||
function XUiRpgMakerGameCharacter:OnAwake()
|
||
self:AutoAddListener()
|
||
self:InitSceneRoot()
|
||
self.GraphicPanel = XUiPanelGraphic.New(self.PanelGraphic, self)
|
||
self.GridCharacterNew.gameObject:SetActiveEx(false)
|
||
end
|
||
|
||
function XUiRpgMakerGameCharacter:OnStart(stageId)
|
||
self.StageId = stageId
|
||
--限定使用的角色Id
|
||
self.OnlyUseRoleId = XRpgMakerGameConfigs.GetStageUseRoleId(stageId)
|
||
self:InitDynamicTable()
|
||
end
|
||
|
||
function XUiRpgMakerGameCharacter:OnEnable()
|
||
local characterId = self:GetCharacterId()
|
||
self:UpdateCurCharacterInfo(characterId)
|
||
self.DynamicTable:ReloadDataSync()
|
||
end
|
||
|
||
function XUiRpgMakerGameCharacter: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 XUiRpgMakerGameCharacter:InitSceneRoot()
|
||
local root = self.UiModelGo.transform
|
||
|
||
self.PanelRoleModel = root:FindTransform("PanelRoleModel")
|
||
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.RoleModelPanel = XUiPanelRoleModel.New(self.PanelRoleModel, self.Name)
|
||
end
|
||
|
||
function XUiRpgMakerGameCharacter:InitDynamicTable()
|
||
self.DynamicTable = XDynamicTableNormal.New(self.SViewCharacterList)
|
||
self.DynamicTable:SetDelegate(self)
|
||
self.DynamicTable:SetProxy(XUiRpgMakerGameCharacterGrid)
|
||
|
||
local useRoleId = self.OnlyUseRoleId
|
||
self.CharacterList = XRpgMakerGameConfigs.GetRpgMakerGameRoleIdList()
|
||
self.CharacterId = XTool.IsNumberValid(useRoleId) and useRoleId or XDataCenter.RpgMakerGameManager.GetOnceUnLockRoleId()
|
||
self.DynamicTable:SetDataSource(self.CharacterList)
|
||
end
|
||
|
||
function XUiRpgMakerGameCharacter:OnDynamicTableEvent(event, index, grid)
|
||
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
|
||
local characterId = self.CharacterList[index]
|
||
local currSelectCharId = self:GetCharacterId()
|
||
if currSelectCharId == characterId then
|
||
self.CurSelectGrid = grid
|
||
end
|
||
grid:Refresh(characterId, self.OnlyUseRoleId)
|
||
grid:SetSelect(currSelectCharId == characterId)
|
||
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_TOUCHED then
|
||
local characterId = self.CharacterList[index]
|
||
local onlyUseRoleId = self.OnlyUseRoleId
|
||
if XTool.IsNumberValid(onlyUseRoleId) and onlyUseRoleId ~= characterId then
|
||
XUiManager.TipErrorWithKey("RpaMakerGameOnlyUseRole")
|
||
return
|
||
end
|
||
|
||
local currSelectCharId = self:GetCharacterId()
|
||
if currSelectCharId ~= characterId and self:CheckOpenTips(characterId) then
|
||
if self.CurSelectGrid then
|
||
self.CurSelectGrid:SetSelect(false)
|
||
end
|
||
grid:SetSelect(true)
|
||
self.CurSelectGrid = grid
|
||
self:UpdateCurCharacterInfo(characterId)
|
||
self:UpdateBtnEnterFightState(characterId)
|
||
self:PlaySwitchAnima(currSelectCharId, characterId)
|
||
end
|
||
end
|
||
end
|
||
|
||
function XUiRpgMakerGameCharacter:CheckOpenTips(characterId)
|
||
local isUnlock, desc = XDataCenter.RpgMakerGameManager.IsUnlockRole(characterId)
|
||
if not isUnlock then
|
||
XUiManager.TipMsg(desc)
|
||
end
|
||
return isUnlock
|
||
end
|
||
|
||
function XUiRpgMakerGameCharacter: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 XUiRpgMakerGameCharacter: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 XUiRpgMakerGameCharacter:UpdateCurCharacterInfo(characterId)
|
||
local isUnlockRole = XDataCenter.RpgMakerGameManager.IsUnlockRole(characterId)
|
||
self.CharacterId = characterId
|
||
self.TextName.text = isUnlockRole and XRpgMakerGameConfigs.GetRpgMakerGameRoleName(characterId) or CSXTextManagerGetText("RpgMakerGameCharacterLockName")
|
||
local roleSkillType = XRpgMakerGameConfigs.GetRpgMakerGameRoleSkillType(characterId)
|
||
if XTool.IsNumberValid(roleSkillType) and self.ImgAttribute then
|
||
self.ImgAttribute:SetSprite(XRpgMakerGameConfigs.GetRpgMakerGameSkillTypeIcon(roleSkillType))
|
||
end
|
||
if self.ImgAttribute then
|
||
self.ImgAttribute.gameObject:SetActiveEx(XTool.IsNumberValid(roleSkillType))
|
||
end
|
||
self.TextStyle.text = isUnlockRole and XRpgMakerGameConfigs.GetRpgMakerGameRoleStyle(characterId) or ""
|
||
self.TextInfoName.text = isUnlockRole and XRpgMakerGameConfigs.GetRpgMakerGameRoleInfoName(characterId) or CSXTextManagerGetText("RpgMakerGameCharacterLockInfoTitle")
|
||
self.TxtEnergy.text = isUnlockRole and XRpgMakerGameConfigs.GetRpgMakerGameRoleInfo(characterId) or CSXTextManagerGetText("RpgMakerGameCharacterLockInfoDesc")
|
||
self:UpdateModel(characterId)
|
||
self.GraphicPanel:Refresh(characterId)
|
||
end
|
||
|
||
function XUiRpgMakerGameCharacter:UpdateModel(characterId)
|
||
local isUnlockRole = XDataCenter.RpgMakerGameManager.IsUnlockRole(characterId)
|
||
self.PanelDrag.gameObject:SetActiveEx(isUnlockRole)
|
||
if self.PanelDragLock then
|
||
self.PanelDragLock.gameObject:SetActiveEx(not isUnlockRole)
|
||
end
|
||
|
||
if not isUnlockRole then
|
||
self.RoleModelPanel:HideRoleModel()
|
||
return
|
||
end
|
||
|
||
local modelName = XRpgMakerGameConfigs.GetRpgMakerGameRoleModelAssetPath(characterId)
|
||
self.RoleModelPanel:UpdateRoleModelWithAutoConfig(modelName, XModelManager.MODEL_UINAME.XUiCharacter, function(model)
|
||
self.PanelDrag.Target = model.transform
|
||
end)
|
||
self.RoleModelPanel:ShowRoleModel()
|
||
end
|
||
|
||
function XUiRpgMakerGameCharacter: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 XUiRpgMakerGameCharacter:GetCharacterId()
|
||
return self.CharacterId
|
||
end
|
||
|
||
function XUiRpgMakerGameCharacter:GetStageId()
|
||
return self.StageId
|
||
end |