Beispiel #1
0
        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();
            }
        }