public override void Main() { if (_state != State.DEAD) { _movementVector = _movementManager.GetMovementVector(_position, _knownTiles, _movementVector, _destination, _selected); _position.X += _movementVector.X; _position.Y += _movementVector.Y; if (_position.X < _size) { _position.X = 0 + _size; } else if (_position.X > SwinGame.ScreenWidth() - _size) { _position.X = SwinGame.ScreenWidth() - _size; } if (_position.Y < _size) { _position.Y = 0 + _size; } else if (_position.Y > SwinGame.ScreenHeight() - _size) { _position.Y = SwinGame.ScreenHeight() - _size; } } TileCheck(); if (_enLastSeen.X != -404) { if (_enLastSeen.X + _enLastHeading.X > 0 && _enLastSeen.X + _enLastHeading.X < SwinGame.ScreenWidth()) { if (_enLastSeen.Y + _enLastHeading.Y > 0 && _enLastSeen.Y + _enLastHeading.Y < SwinGame.ScreenHeight()) { if (_allTiles[(int)Math.Floor((_enLastSeen.X + _enLastHeading.X) / 60), (int)Math.Floor((_enLastSeen.Y + _enLastHeading.Y) / 60)].GetTileType() != TileType.WALL) { _enLastSeen.X += _enLastHeading.X; _enLastSeen.Y += _enLastHeading.Y; } } } } if (!_ignoreEnemy) { if (_state == State.AIMING) { Aiming(); } else if (_state == State.DEAD) { Dead(); } else if (_state == State.HIDING) { Hiding(); } else if (_state == State.ON_LAST_SEEN) { OnLastSeen(); } else if (_state == State.PURSUING_ENEMY) { PursuingEnemy(); } else if (_state == State.RELOADING) { Reloading(); } else if (_state == State.SEEKING_ENEMY) { SeekingEnemy(); } else if (_state == State.SEEKING_HIDING) { SeekingHiding(); } else if (_state == State.FINDING_HIDING) { FindingHiding(); } else if (_state == State.SHOOTING) { Shooting(); } } if (_health <= 0) { _state = State.DEAD; } if (CanSee(_enemy.GetPos(), false)) { _enLastSeen = _enemy.GetPos(); _enLastHeading = _enemy.GetCurrentVelocity(); } }