73 lines
2.0 KiB
C#
73 lines
2.0 KiB
C#
using Components;
|
|
using GeometryTD.Definition;
|
|
using GeometryTD.Entity.EntityData;
|
|
using UnityGameFramework.Runtime;
|
|
|
|
namespace GeometryTD.Entity
|
|
{
|
|
public class TowerEntity : EntityBase
|
|
{
|
|
private TowerController _towerController;
|
|
|
|
public void SetAttackRangeVisible(bool visible)
|
|
{
|
|
_towerController?.SetAttackRangeVisible(visible);
|
|
}
|
|
|
|
public bool TryApplyStats(TowerStatsData stats, int towerLevel)
|
|
{
|
|
if (_towerController == null || stats == null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
_towerController.OnInit(stats, towerLevel);
|
|
return true;
|
|
}
|
|
|
|
protected override void OnInit(object userData)
|
|
{
|
|
base.OnInit(userData);
|
|
|
|
_towerController = GetComponent<TowerController>();
|
|
if (_towerController == null)
|
|
{
|
|
Log.Error("DefenseTowerController is missing on tower entity '{0}'.", name);
|
|
}
|
|
}
|
|
|
|
protected override void OnShow(object userData)
|
|
{
|
|
base.OnShow(userData);
|
|
|
|
if (_towerController == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (userData is not TowerData towerData)
|
|
{
|
|
Log.Warning("DefenseTowerData is invalid for tower entity '{0}'.", Id);
|
|
_towerController.OnReset();
|
|
GameEntry.Entity.HideEntity(Entity);
|
|
return;
|
|
}
|
|
|
|
_towerController.OnInit(towerData.Stats, towerData.TowerLevel);
|
|
}
|
|
|
|
protected override void OnUpdate(float elapseSeconds, float realElapseSeconds)
|
|
{
|
|
base.OnUpdate(elapseSeconds, realElapseSeconds);
|
|
_towerController?.OnUpdate(elapseSeconds);
|
|
}
|
|
|
|
protected override void OnHide(bool isShutdown, object userData)
|
|
{
|
|
_towerController?.SetAttackRangeVisible(false);
|
|
_towerController?.OnReset();
|
|
base.OnHide(isShutdown, userData);
|
|
}
|
|
}
|
|
}
|