PGRData/Script/matrix/xui/xuipokemon/xuimonster/XUiPokemonMonster.lua

567 lines
No EOL
22 KiB
Lua

local XUiGridPokemonMonster = require("XUi/XUiPokemon/XUiMonster/XUiGridPokemonMonster")
local XRedPointConditionPokemonNewRole = require("XRedPoint/XRedPointConditions/XRedPointConditionPokemonNewRole")
local XUiPanelRoleModel = require("XUi/XUiCharacter/XUiPanelRoleModel")
local CSUnityEngineObjectInstantiate = CS.UnityEngine.Object.Instantiate
local pairs = pairs
local tableInsert = table.insert
local tonumber = tonumber
local mathFloor = math.floor
local Lerp = CS.UnityEngine.Mathf.Lerp
local CSXScheduleManagerUnSchedule = XScheduleManager.UnSchedule
local CsXTextManagerGetText = CsXTextManagerGetText
local NewSkillSaveKey = "PokemonNewSkillSaveKey_%s_%d_%d"
local TabBtnIndex = {
Shooter = 1, --射手
Shield = 2, --盾卫
Knight = 3, --骑士
Assassin = 4, --刺客
}
local SCORE_ANIM_DURATION = 1
local XUiPokemonMonster = XLuaUiManager.Register(XLuaUi, "UiPokemonMonster")
function XUiPokemonMonster:OnAwake()
self:AutoAddListener()
self:InitDynamicTable()
self:InitTabBtns()
self.GridStar.gameObject:SetActiveEx(false)
self.BtnSkill.gameObject:SetActiveEx(false)
self.GridMonster.gameObject:SetActiveEx(false)
self.AssetActivityPanel = XUiPanelActivityAsset.New(self.PanelSpecialTool)
XDataCenter.ItemManager.AddCountUpdateListener(XDataCenter.ItemManager.ItemId.PokemonLevelUpItem, function()
self.AssetActivityPanel:Refresh({ XDataCenter.ItemManager.ItemId.PokemonLevelUpItem, XDataCenter.ItemManager.ItemId.PokemonStarUpItem, XDataCenter.ItemManager.ItemId.PokemonLowStarUpItem })
end, self.AssetActivityPanel)
XDataCenter.ItemManager.AddCountUpdateListener(XDataCenter.ItemManager.ItemId.PokemonStarUpItem, function()
self.AssetActivityPanel:Refresh({ XDataCenter.ItemManager.ItemId.PokemonLevelUpItem, XDataCenter.ItemManager.ItemId.PokemonStarUpItem, XDataCenter.ItemManager.ItemId.PokemonLowStarUpItem })
end, self.AssetActivityPanel)
XDataCenter.ItemManager.AddCountUpdateListener(XDataCenter.ItemManager.ItemId.PokemonLowStarUpItem, function()
self.AssetActivityPanel:Refresh({ XDataCenter.ItemManager.ItemId.PokemonLevelUpItem, XDataCenter.ItemManager.ItemId.PokemonStarUpItem, XDataCenter.ItemManager.ItemId.PokemonLowStarUpItem })
end, self.AssetActivityPanel)
end
function XUiPokemonMonster:OnStart()
self.StarGrids = {}
self.SkillGrids = {}
self:InitDefaultSelect()
self:InitSceneRoot()
self.AssetActivityPanel:Refresh({ XDataCenter.ItemManager.ItemId.PokemonLevelUpItem, XDataCenter.ItemManager.ItemId.PokemonStarUpItem, XDataCenter.ItemManager.ItemId.PokemonLowStarUpItem })
end
function XUiPokemonMonster:OnEnable()
--local isBossEmpty = XDataCenter.PokemonManager.CheckOwnMonsterEmpty(XPokemonConfigs.MonsterType.Boss)
--self.BtnTabBoss:SetDisable(isBossEmpty)
--
--local isMemberEmpty = XDataCenter.PokemonManager.CheckOwnMonsterEmpty(XPokemonConfigs.MonsterType.Member)
--self.BtnTabMember:SetDisable(isMemberEmpty)
local isShooterEmpty = XDataCenter.PokemonManager.CheckOwnMonsterEmptyByCareer(XPokemonConfigs.MonsterCareer.Shooter)
local isShieldEmpty = XDataCenter.PokemonManager.CheckOwnMonsterEmptyByCareer(XPokemonConfigs.MonsterCareer.Shield)
local isKnightEmpty = XDataCenter.PokemonManager.CheckOwnMonsterEmptyByCareer(XPokemonConfigs.MonsterCareer.Knight)
local isAssassinEmpty = XDataCenter.PokemonManager.CheckOwnMonsterEmptyByCareer(XPokemonConfigs.MonsterCareer.Assassin)
self.BtnTabShooter:SetDisable(isShooterEmpty)
self.BtnTabShield:SetDisable(isShieldEmpty)
self.BtnTabKnight:SetDisable(isKnightEmpty)
self.BtnTabAssassin:SetDisable(isAssassinEmpty)
self.PanelCharacterTypeBtns:SelectIndex(self.SelectTabBtnIndex)
self:CheckTabRedDot()
end
function XUiPokemonMonster:OnDisable()
self:DestroyTimer()
end
function XUiPokemonMonster:OnGetEvents()
local eventIds = XPokemonConfigs.GetToCheckItemIdEventIds()
tableInsert(eventIds, XEventId.EVENT_POKEMON_MONSTERS_SKILL_SWITCH)
tableInsert(eventIds, XEventId.EVENT_POKEMON_MONSTERS_LEVEL_UP)
tableInsert(eventIds, XEventId.EVENT_POKEMON_MONSTERS_DATA_CHANGE)
tableInsert(eventIds, XEventId.EVENT_POKEMON_MONSTERS_STAR_UP)
return eventIds
end
function XUiPokemonMonster:OnNotify(evt, ...)
local eventIds = XPokemonConfigs.GetToCheckItemIdEventIds()
for _, eventId in pairs(eventIds) do
if evt == eventId then
self:UpdateCostItem()
return
end
end
if evt == XEventId.EVENT_POKEMON_MONSTERS_SKILL_SWITCH then
self:UpdateSkills()
elseif evt == XEventId.EVENT_POKEMON_MONSTERS_DATA_CHANGE then
self:UpdateMonsters()
elseif evt == XEventId.EVENT_POKEMON_MONSTERS_LEVEL_UP or
evt == XEventId.EVENT_POKEMON_MONSTERS_STAR_UP then
self:UpdateCostItem()
end
end
function XUiPokemonMonster:InitDynamicTable()
self.DynamicTable = XDynamicTableNormal.New(self.SViewCharacterList)
self.DynamicTable:SetProxy(XUiGridPokemonMonster)
self.DynamicTable:SetDelegate(self)
end
function XUiPokemonMonster:InitTabBtns()
self.TabBtns = { self.BtnTabShooter, self.BtnTabShield, self.BtnTabKnight, self.BtnTabAssassin }
self.PanelCharacterTypeBtns:Init(self.TabBtns, function(index) self:OnSelectMonsterType(index) end)
end
function XUiPokemonMonster:InitDefaultSelect()
--if not XDataCenter.PokemonManager.CheckOwnMonsterEmpty(XPokemonConfigs.MonsterType.Boss) then
-- self.SelectTabBtnIndex = TabBtnIndex.Shooter
--else
-- self.SelectTabBtnIndex = TabBtnIndex.Shield
--end
local isShooterEmpty = XDataCenter.PokemonManager.CheckOwnMonsterEmptyByCareer(XPokemonConfigs.MonsterCareer.Shooter)
local isShieldEmpty = XDataCenter.PokemonManager.CheckOwnMonsterEmptyByCareer(XPokemonConfigs.MonsterCareer.Shield)
local isKnightEmpty = XDataCenter.PokemonManager.CheckOwnMonsterEmptyByCareer(XPokemonConfigs.MonsterCareer.Knight)
local isAssassinEmpty = XDataCenter.PokemonManager.CheckOwnMonsterEmptyByCareer(XPokemonConfigs.MonsterCareer.Assassin)
if not isShooterEmpty then
self.SelectTabBtnIndex = TabBtnIndex.Shooter
elseif not isShieldEmpty then
self.SelectTabBtnIndex = TabBtnIndex.Shield
elseif not isKnightEmpty then
self.SelectTabBtnIndex = TabBtnIndex.Knight
elseif not isAssassinEmpty then
self.SelectTabBtnIndex = TabBtnIndex.Assassin
end
self.SelectMonsterIndex = 1
end
function XUiPokemonMonster:InitSceneRoot()
local root = self.UiModelGo.transform
self.PanelRoleModel = root:FindTransform("PanelRoleModel")
self.ImgEffectHuanren = root:FindTransform("ImgEffectHuanren")
self.RoleModelPanel = XUiPanelRoleModel.New(self.PanelRoleModel, self.Name, nil, true, nil, true)
end
function XUiPokemonMonster:OnSelectMonsterType(index)
self.SelectTabBtnIndex = index
self.SelectMonsterIndex = 1
self:UpdateMonsters()
end
function XUiPokemonMonster:UpdateMonsters()
local careerType = self:GetSelectMonsterType()
local monsterIds = XDataCenter.PokemonManager.GetOwnMonsterIdsByCareer(careerType)
if XTool.IsTableEmpty(monsterIds) then
XUiManager.TipText("PokemonMonsterListEmpty")
return
end
self:PlayAnimation("QieHuan")
self.MonsterIds = monsterIds
table.sort(self.MonsterIds, function(a, b)
local costA = XPokemonConfigs.GetMonsterEnergyCost(a)
local costB = XPokemonConfigs.GetMonsterEnergyCost(b)
costA = costA == 0 and math.huge or costA
costB = costB == 0 and math.huge or costB
return costA > costB
end)
self.DynamicTable:SetDataSource(monsterIds)
self.DynamicTable:ReloadDataASync()
self:UpdateCurrentMonster()
self:UpdateCurrentMonsterModel()
end
function XUiPokemonMonster:OnDynamicTableEvent(event, index, grid)
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
local monsterId = self.MonsterIds[index]
grid:Refresh(monsterId)
if self.SelectMonsterIndex == index then
grid:SetSelect(true)
self.LastSelectMonsterGrid = grid
self:CheckTabRedDot()
else
grid:SetSelect(false)
end
XRedPointManager.CheckOnce(grid.ShowRedDot, grid, { XRedPointConditions.Types.CONDITION_POKEMON_NEW_ROLE }, monsterId)
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_TOUCHED then
if self.LastSelectMonsterGrid then
self.LastSelectMonsterGrid:SetSelect(false)
end
self.LastSelectMonsterGrid = grid
grid:SetSelect(true)
self:CheckTabRedDot()
self.SelectMonsterIndex = index
self:UpdateCurrentMonster()
self:UpdateCurrentMonsterModel()
self:PlayAnimation("QieHuan")
end
end
function XUiPokemonMonster:UpdateCurrentMonster()
local monsterId = self.MonsterIds[self.SelectMonsterIndex]
local name = XPokemonConfigs.GetMonsterName(monsterId)
self.TxtName.text = name
local level = XDataCenter.PokemonManager.GetMonsterLevel(monsterId)
local maxLevel = XDataCenter.PokemonManager.GetMonsterMaxLevel(monsterId)
self.TxtLevel.text = level .. "/" .. maxLevel
self.BtnReset.gameObject:SetActiveEx(level ~= 1)
local ability = XDataCenter.PokemonManager.GetMonsterAbility(monsterId)
self.TxtAbility.text = ability
local hp = XDataCenter.PokemonManager.GetMonsterHp(monsterId)
self.TxtHp.text = hp
local attack = XDataCenter.PokemonManager.GetMonsterAttack(monsterId)
self.TxtAttack.text = attack
local star = XDataCenter.PokemonManager.GetMonsterStar(monsterId)
local maxStar = XPokemonConfigs.GetMonsterStarMaxStar(monsterId)
for index = 1, maxStar do
local grid = self.StarGrids[index]
if not grid then
local go = index == 1 and self.GridStar or CSUnityEngineObjectInstantiate(self.GridStar, self.PanelStar)
grid = XTool.InitUiObjectByUi({}, go)
self.StarGrids[index] = grid
end
grid.GameObject:SetActiveEx(true)
grid.ImgStar.gameObject:SetActiveEx(index <= star)
end
for index = maxStar + 1, #self.StarGrids do
local grid = self.StarGrids[index]
if grid then
grid.GameObject:SetActiveEx(false)
end
end
self:UpdateCostItem()
self:UpdateSkills()
end
function XUiPokemonMonster:UpdateCurrentMonsterModel()
local monsterId = self.MonsterIds[self.SelectMonsterIndex]
local modelId = XPokemonConfigs.GetMonsterModelId(monsterId)
self.ImgEffectHuanren.gameObject:SetActiveEx(false)
self.RoleModelPanel:UpdateRoleModel(modelId, self.PanelRoleModel, XModelManager.MODEL_UINAME.XUiPokemonMonster, function(model)
self.ImgEffectHuanren.gameObject:SetActiveEx(true)
self.PanelDrag.Target = model.transform
end, nil)
end
function XUiPokemonMonster:UpdateCostItem()
local monsterId = self.MonsterIds[self.SelectMonsterIndex]
if not XDataCenter.PokemonManager.IsMonsterMaxLevel(monsterId) then
local itemId, itemCount = XDataCenter.PokemonManager.GetMonsterLevelUpCostItemInfo(monsterId)
local icon = XItemConfigs.GetItemIconById(itemId)
self.RImgIconCost:SetRawImage(icon)
self.TxtCostNum.text = itemCount
self.PanelCost.gameObject:SetActiveEx(true)
self.BtnUpgrade:SetDisable(false)
self.BtnUpgrade.gameObject:SetActiveEx(true)
self.BtnUpgradeStars.gameObject:SetActiveEx(false)
self.BtnAutoUpgrade.gameObject:SetActiveEx(true)
self.BtnAutoUpgrade:SetDisable(false)
elseif not XDataCenter.PokemonManager.IsMonsterMaxStar(monsterId) then
local itemId, itemCount = XDataCenter.PokemonManager.GetMonsterStarUpCostItemInfo(monsterId)
local icon = XItemConfigs.GetItemIconById(itemId)
self.RImgIconCost:SetRawImage(icon)
self.TxtCostNum.text = itemCount
self.PanelCost.gameObject:SetActiveEx(true)
self.BtnUpgrade.gameObject:SetActiveEx(false)
self.BtnUpgradeStars.gameObject:SetActiveEx(true)
self.BtnAutoUpgrade:SetDisable(true)
self.BtnAutoUpgrade.gameObject:SetActiveEx(true)
else
self.PanelCost.gameObject:SetActiveEx(false)
self.BtnUpgrade:SetDisable(true)
self.BtnUpgrade.gameObject:SetActiveEx(true)
self.BtnUpgradeStars.gameObject:SetActiveEx(false)
self.BtnAutoUpgrade.gameObject:SetActiveEx(false)
end
end
function XUiPokemonMonster:UpdateSkills()
local monsterId = self.MonsterIds[self.SelectMonsterIndex]
local isBoss = XPokemonConfigs.CheckMonsterType(monsterId, XPokemonConfigs.MonsterType.Boss)
self.TxtSkillDescBoss.gameObject:SetActiveEx(isBoss)
self.TxtSkillDescMember.gameObject:SetActiveEx(not isBoss)
local skillIds = XDataCenter.PokemonManager.GetMonsterUsingSkillIdList(monsterId)
for index, skillId in pairs(skillIds) do
local grid = self.SkillGrids[index]
if not grid then
local go = index == 1 and self.BtnSkill or CSUnityEngineObjectInstantiate(self.BtnSkill, self.PanelSkillLayout)
grid = XTool.InitUiObjectByUi({}, go)
self.SkillGrids[index] = grid
end
local uiButton = grid.UiButton
local icon = XPokemonConfigs.GetMonsterSkillIcon(skillId)
uiButton:SetRawImage(icon)
local name = XPokemonConfigs.GetMonsterSkillName(skillId)
uiButton:SetNameByGroup(0, name)
local canSwith = XDataCenter.PokemonManager.IsMonsterSkillCanSwitch(monsterId, skillId)
uiButton:ShowTag(canSwith)
local paramSkillId = skillId
grid.UiButton.CallBack = function()
XSaveTool.SaveData(string.format(NewSkillSaveKey, XPlayer.Id, monsterId, index), 0)
grid.NewPanel.gameObject:SetActiveEx(false)
self:OnClickBtnSkill(paramSkillId)
end
local isNewSkill = XSaveTool.GetData(string.format(NewSkillSaveKey, XPlayer.Id, monsterId, index))
grid.NewPanel.gameObject:SetActiveEx(isNewSkill == 1)
grid.GameObject:SetActiveEx(true)
end
for index = #skillIds + 1, #self.SkillGrids do
local grid = self.SkillGrids[index]
if grid then
grid.GameObject:SetActiveEx(false)
end
end
end
function XUiPokemonMonster:OnClickBtnSkill(skillId)
local monsterId = self.MonsterIds[self.SelectMonsterIndex]
if XDataCenter.PokemonManager.IsMonsterSkillCanSwitch(monsterId, skillId) then
local skillIds = XDataCenter.PokemonManager.GetMonsterCanSwitchSkillIdList(monsterId, skillId)
XLuaUiManager.Open("UiPokemonSkillSelect", monsterId, skillIds)
else
XLuaUiManager.Open("UiPokemonSkillDetails", skillId)
end
end
function XUiPokemonMonster:AutoAddListener()
self.BtnBack.CallBack = function() self:OnClickBtnBack() end
self.BtnMainUi.CallBack = function() self:OnClickBtnMainUi() end
self:BindHelpBtn(self.BtnHelp, "PokemonMonster")
self.BtnUpgrade.CallBack = function() self:OnClickBtnUpgrade() end
self.BtnUpgradeStars.CallBack = function() self:OnClickBtnUpgradeStars() end
self.BtnAutoUpgrade.CallBack = function() self:OnClickBtnAutoUpgrade() end
self.BtnReset.CallBack = function() self:OnClickBtnReset() end
end
function XUiPokemonMonster:OnClickBtnBack()
self:Close()
end
function XUiPokemonMonster:OnClickBtnMainUi()
XLuaUiManager.RunMain()
end
function XUiPokemonMonster:OnClickBtnReset()
local monsterId = self.MonsterIds[self.SelectMonsterIndex]
XUiManager.DialogTip(CS.XTextManager.GetText("PokemonResetTipsTitle"), CS.XTextManager.GetText("PokemonResetTipsContent"), XUiManager.DialogType.Normal, nil, function()
XDataCenter.PokemonManager.PokemonResetUpgradeRequest(monsterId, function(rewards)
for index, grid in pairs(self.SkillGrids) do
XSaveTool.SaveData(string.format(NewSkillSaveKey, XPlayer.Id, monsterId, index), 0)
grid.NewPanel.gameObject:SetActiveEx(false)
end
if rewards and #rewards > 0 then
XUiManager.OpenUiObtain(rewards)
end
end)
end)
end
function XUiPokemonMonster:OnClickBtnUpgrade()
local monsterId = self.MonsterIds[self.SelectMonsterIndex]
if XDataCenter.PokemonManager.IsMonsterMaxLevel(monsterId) then
XUiManager.TipText("PokemonMonsterMaxLevel")
return
end
local costItemId, costItemCount = XPokemonConfigs.GetMonsterLevelCostItemInfo(monsterId, XDataCenter.PokemonManager.GetMonsterLevel(monsterId))
if costItemId and costItemCount and XDataCenter.ItemManager.GetCount(costItemId) < costItemCount then
XUiManager.TipText("PokemonUpgradeItemNotEnough")
return
end
local times = 1
local cb = function() self:PlayLevelUpAnim(monsterId) end
XDataCenter.PokemonManager.PokemonLevelUpRequest(monsterId, times, cb)
end
function XUiPokemonMonster:OnClickBtnUpgradeStars()
local monsterId = self.MonsterIds[self.SelectMonsterIndex]
if XDataCenter.PokemonManager.IsMonsterMaxStar(monsterId) then
return
end
local costItemId, costItemCount = XPokemonConfigs.GetMonsterStarCostItemInfo(monsterId, XDataCenter.PokemonManager.GetMonsterStar(monsterId))
if costItemId and costItemCount and XDataCenter.ItemManager.GetCount(costItemId) < costItemCount then
XUiManager.TipText("PokemonUpgradeItemNotEnough")
return
end
local oldStar = XDataCenter.PokemonManager.GetMonsterStar(monsterId)
local cb = function()
self:UpdateCurrentMonster()
self:UpdateCurrentMonsterModel()
local star = XDataCenter.PokemonManager.GetMonsterStar(monsterId)
local unlockSkillIds = XDataCenter.PokemonManager.GetMonsterStarUnlockSkillIds(monsterId, star)
local skillId = unlockSkillIds[1]
if skillId then
local pos = XPokemonConfigs.GetMonsterSkillGroupId(skillId) + 1
local grid = self.SkillGrids[pos]
if grid then
XSaveTool.SaveData(string.format(NewSkillSaveKey, XPlayer.Id, monsterId, pos), 1)
grid.NewPanel.gameObject:SetActiveEx(true)
end
end
XLuaUiManager.Open("UiPokemonStarSuccess", monsterId, oldStar)
end
XDataCenter.PokemonManager.PokemonStarUpRequest(monsterId, cb)
end
function XUiPokemonMonster:OnClickBtnAutoUpgrade()
local monsterId = self.MonsterIds[self.SelectMonsterIndex]
if XDataCenter.PokemonManager.IsMonsterMaxLevel(monsterId) then
XUiManager.TipText("PokemonMonsterMaxLevel")
return
end
local times = XDataCenter.PokemonManager.GetMonsterCanLevelUpTimes(monsterId)
if times < 1 then
XUiManager.TipText("PokemonMonsterAutoLevelUpLackItem")
return
end
local curLevel = XDataCenter.PokemonManager.GetMonsterLevel(monsterId)
local cb = function()
local toLevel = times + curLevel
local msg = CsXTextManagerGetText("PokemonMonsterLevelUpTo", toLevel)
XUiManager.TipMsg(msg)
self:PlayLevelUpAnim(monsterId)
end
XLuaUiManager.Open("UiPokemonUpgradePreview", monsterId, cb)
end
local TabBtnIndexToMonsterType = {
[TabBtnIndex.Shooter] = XPokemonConfigs.MonsterCareer.Shooter,
[TabBtnIndex.Shield] = XPokemonConfigs.MonsterCareer.Shield,
[TabBtnIndex.Knight] = XPokemonConfigs.MonsterCareer.Knight,
[TabBtnIndex.Assassin] = XPokemonConfigs.MonsterCareer.Assassin,
}
function XUiPokemonMonster:GetSelectMonsterType()
return TabBtnIndexToMonsterType[self.SelectTabBtnIndex]
end
function XUiPokemonMonster:GetSelectMonsterId()
return self.MonsterIds[self.SelectMonsterIndex]
end
function XUiPokemonMonster:PlayLevelUpAnim(monsterId)
local asynPlayAnim = asynTask(self.PlayAnimation, self)
local asynLetAttrsRoll = asynTask(self.LetAttrsRoll, self)
RunAsyn(function()
local targetHp = XDataCenter.PokemonManager.GetMonsterHp(monsterId)
local targetAttack = XDataCenter.PokemonManager.GetMonsterAttack(monsterId)
local startHp = tonumber(self.TxtHp.text) or 0
local startAttack = tonumber(self.TxtAttack.text) or 0
--addAttr refresh
local deltaHp = targetHp - startHp
self.TxtAddHealth.text = "+" .. deltaHp
local deltaAttack = targetAttack - startAttack
self.TxtAddAttack.text = "+" .. deltaAttack
--ui refresh
self:UpdateCurrentMonster()
self:UpdateCurrentMonsterModel()
--addAttr anim appear
asynPlayAnim("NumberEnable")
--attr anim
asynLetAttrsRoll(startHp, targetHp, startAttack, targetAttack)
--addAttr anim disappear
asynPlayAnim("NumberDisable")
self:UpdateCurrentMonster()
end)
end
function XUiPokemonMonster:LetAttrsRoll(startHp, targetHp, startAttack, targetAttack, finishCb)
if not targetHp then return end
if not targetAttack then return end
local onRefreshFunc = function(time)
if XTool.UObjIsNil(self.TxtHp)
or XTool.UObjIsNil(self.TxtAttack)
then
self:DestroyTimer()
return true
end
if startHp == targetHp
and startAttack == targetAttack
then
return true
end
self.TxtHp.text = mathFloor(Lerp(startHp, targetHp, time))
self.TxtAttack.text = mathFloor(Lerp(startAttack, targetAttack, time))
end
self:DestroyTimer()
self.Timer = XUiHelper.Tween(SCORE_ANIM_DURATION, onRefreshFunc, finishCb)
end
function XUiPokemonMonster:DestroyTimer()
if self.Timer then
CSXScheduleManagerUnSchedule(self.Timer)
self.Timer = nil
end
end
function XUiPokemonMonster:CheckTabRedDot()
for index, career in pairs(TabBtnIndexToMonsterType) do
local monsters = XDataCenter.PokemonManager.GetOwnMonsterIdsByCareer(career)
local isShowRed = true
for _, id in pairs(monsters) do
isShowRed = isShowRed and XRedPointConditionPokemonNewRole.Check(id)
end
self.TabBtns[index]:ShowReddot(not isShowRed)
end
end