/* * @Author: 白哉 * @Description: * @Date: 2025年07月01日 星期二 14:07:05 * @Modify: */ using JetBrains.Annotations; using RuntimeData; using TH1_Anim.UnitAtomAnim; using TH1_Core.Events; using TH1_Core.Managers; using TH1_DataAssetsScript; using TH1_Logic.Core; using TH1_Renderer; using TH1_Renderer.UnitAtomAnim; using TH1Renderer; using UnityEngine; namespace TH1_Anim.Fragments { public class FragmentCityLevelUp : FragmentBase { public GridRenderer GridRenderer; public CityInfoRenderer CityInfoRenderer; public int Level; public int LevelExp; private float _step1_time; private float _step2_time; private bool _step1_levelup; private bool _step2_treasure; public FragmentCityLevelUp(FragmentCityExpUpData data) : base() { GridRenderer = data.GridRenderer; CityInfoRenderer = data.CityInfoRenderer; Level = data.Level; LevelExp = data.LevelExp; _step1_time = 0f; _step2_time = 0.4f; _step1_levelup = false; _step2_treasure = false; Duration = _step2_time + 0.2f; } public override bool CheckDone(float progressTime) { //超时保险 if (progressTime > Duration * 2) { Debug.Log($"Fragement Timeout {this.GetType()}"); return true; } if (!_step1_levelup || !_step2_treasure) return false; if (progressTime <= Duration) return false; return true; } public override void OnUpdate(float progressTime) { //Step #1执行第一步 升级,宝藏动画 if (progressTime >= _step1_time && !_step1_levelup) { _step1_levelup = true; GridRenderer.SetBounceAnim(false ,true); return; } if (progressTime >= _step2_time && !_step2_treasure) { _step2_treasure = true; GridRenderer.InstantUpdateCityBuilding(Level,GridRenderer.NowCityCiv); GridRenderer.PlayVFX(new GridVFXParams(GridVFXType.Treasure){}); GridRenderer.PlayVFX(new GridVFXParams(GridVFXType.Fog){}); CityInfoRenderer.UpdateLevelShow(Level,LevelExp); CityInfoRenderer.InstantUpdateCityGDP(); //如果是真人玩家,发起界面提示 var interaction = new ShowUIInteractionCityUpgrade() { CityId = (int)CityInfoRenderer.GetCid(),CityLevel = Level - 1}; EventManager.Publish(interaction); return; } } } }