public void Update() { Hitbox = new Rectangle((int)Position.X, (int)Position.Y, (int)Sprite.Size.X, (int)Sprite.Size.Y); switch (State) { case (States.MonsterState.Spawning): StateMachine.SpawnState(); break; case (States.MonsterState.Attacking): StateMachine.AttackState(); break; case (States.MonsterState.Idle): StateMachine.IdleState(); break; case (States.MonsterState.Moving): StateMachine.MoveState(); break; case (States.MonsterState.Damaged): StateMachine.DamagedState(); break; case (States.MonsterState.Dead): StateMachine.DeadState(); break; default: State = States.MonsterState.Idle; break; } }
public Monster(MonsterSprite sprite, Vector2 spawn, string name, Game1 game) { Sprite = sprite; Name = name; Game = game; sprite.UpdatePosition(spawn); Position = spawn; Hitbox = new Rectangle((int)Position.X, (int)Position.Y, (int)Sprite.Size.X, (int)Sprite.Size.Y); State = States.MonsterState.Spawning; Direction = States.Direction.Up; }
public void TakeDamage(States.Direction directionHit, int damage) { CanDamage = false; if (State == States.MonsterState.Attacking || State == States.MonsterState.Moving || State == States.MonsterState.Idle) { HP -= damage; if (HP <= 0) { State = States.MonsterState.Dead; } else { Sprite.ChangeSpriteAnimation(Name + "Damaged"); Direction = directionHit; State = States.MonsterState.Damaged; } } }
public void Unpause() { State = States.MonsterState.Idle; BaseSpeed = BaseSpeedRestore; }
public void Pause() { State = States.MonsterState.Idle; BaseSpeedRestore = BaseSpeed; BaseSpeed = 0f; }