93 lines
2.9 KiB
C#
93 lines
2.9 KiB
C#
/*
|
|
* @Author: 白哉
|
|
* @Description:
|
|
* @Date: 2025年07月01日 星期二 14:07:05
|
|
* @Modify:
|
|
*/
|
|
|
|
|
|
using JetBrains.Annotations;
|
|
using Logic.Audio;
|
|
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.PlayVFXInSight(new GridVFXParams(GridVFXType.Treasure){});
|
|
GridRenderer.PlayVFXInSight(new GridVFXParams(GridVFXType.Fog){});
|
|
CityInfoRenderer.UpdateLevelShow(Level,LevelExp);
|
|
CityInfoRenderer.InstantUpdateCityCoinTech();
|
|
//如果是真人玩家,发起界面提示
|
|
AudioManager.Instance.PlayAudio("SFX/CITY_levelup");
|
|
var interaction = new ShowUIInteractionCityUpgrade() { CityId = (int)CityInfoRenderer.GetCid(),CityLevel = Level - 1};
|
|
EventManager.Publish(interaction);
|
|
return;
|
|
}
|
|
|
|
}
|
|
}
|
|
} |