示例#1
0
        public override void Run()
        {
            _randomGenOffset    = new Random();
            _randomGenFirePower = new Random();

            IsAdjustRadarForGunTurn = true;
            IsAdjustGunForRobotTurn = true;
            SetTurnRadarRightRadians(double.PositiveInfinity);
            while (true)
            {
                _scanlessTime++;

                SetMoveGun();

                if (_enemy.Fired)
                {
                    _robotController.RandomDodge();
                }

                _robotController.SetMoveToWallAndBack(_position.X, _position.Y, true);

                if (_isAiming)
                {
                    //If we fire the gun, reset aiming state
                    if (_robotController.CheckFire(_bulletToFire.Power))
                    {
                        _isAiming          = false;
                        _desiredGunBearing = null;

                        _bulletToFire.UpdateInfo(GunHeadingRadians);
                        _bulletsFired.Add(_bulletToFire);
                        _bulletToFire = null;
                    }
                }
                //Fire at disabled enemy!
                if (_enemy.LastEnergy <= 0d)
                {
                    _robotController.CheckFire(Rules.MIN_BULLET_POWER);
                }
                if (_scanlessTime > 3)
                {
                    SetTurnRadarRightRadians(double.PositiveInfinity);
                }
                Execute();
            }
        }