void Update() { //simple fsm implementation switch (currentState) { case TowerState.LookingForTargets: if (LookForTargets()) { TargetFoundEvent?.Invoke(); currentState = TowerState.Attacking; } break; case TowerState.Attacking: if (TargetIsOutOfRange() || currentTarget.IsDead) { TargetIsOutOfRangeEvent?.Invoke(); currentTarget = null; currentState = TowerState.LookingForTargets; } else { Attack(); } break; } }
public static void OnTargetFoundEvent() { TargetFoundEvent handler = OnTargetFound; if (handler != null) { handler(); } }