using Components; using GeometryTD.Entity.EntityData; using UnityGameFramework.Runtime; namespace GeometryTD.Entity { public class DefenseTowerEntity : EntityBase { private DefenseTowerController _towerController; protected override void OnInit(object userData) { base.OnInit(userData); _towerController = GetComponent(); 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 DefenseTowerData towerData) { Log.Warning("DefenseTowerData is invalid for tower entity '{0}'.", Id); _towerController.OnReset(); GameEntry.Entity.HideEntity(Entity); return; } _towerController.SetAutoUpdate(false); _towerController.OnInit(towerData.Stats); } protected override void OnUpdate(float elapseSeconds, float realElapseSeconds) { base.OnUpdate(elapseSeconds, realElapseSeconds); _towerController?.OnUpdate(elapseSeconds); } protected override void OnHide(bool isShutdown, object userData) { _towerController?.OnReset(); base.OnHide(isShutdown, userData); } } }