public override void OnEnter(BaseEnemy entity)
            {
                entity.AttackBase();
                var rnd = new Random();

                entity.Position =
                    new Vector2(rnd.Next(-50, 60) + entity.Position.x, entity.Position.y);
            }
            public override void Update(BaseEnemy entity, float delta)
            {
                if (entity.IsDead() && !entity.EnemyStateMachine.IsInState(Dead))
                {
                    entity.EnemyStateMachine.ChangeState(Dead);
                }

                // GD.Print(entity.HasReachedBase());
            }
 public override void Update(BaseEnemy entity, float delta)
 {
     entity.AttackTimer += delta;
     if (!(entity.AttackTimer >= entity.EnemyType.AttackRate))
     {
         return;
     }
     entity.AttackBase();
     entity.AttackTimer = 0;
 }
 public override void Update(BaseEnemy entity, float delta)
 {
     if (entity.HasReachedBase)
     {
         entity.EnemyStateMachine.ChangeState(Attacking);
     }
     else
     {
         entity.Travel(delta, entity.IsDead());
     }
 }
 public override void OnEnter(BaseEnemy entity)
 {
     GameInfo.GameCurrency.EnemyKillBonus(entity);
     entity.QueueFree();
 }
 public override void OnExit(BaseEnemy entity) => entity.AttackTimer = 0;