public override Vector GetFuturePosition(IEnemy target, long delta)
        {
            if (
                Context != null &&
                Context.MyLocation != null &&
                target != null &&
                target.LastBlipDirect != null &&
                target.BulletPower.HasValue
                )
            {
                GuessFactorData gfData = target.GetGuessFactorData();
                if (gfData != null)
                {
                    _stats       = gfData.Data;
                    _guessFactor = target.Energy > 0d ? gfData.GuessFactor : 0d;

                    _location = Context.MyLocation;
                    _direct   = target.LastBlipDirect;

                    _power          = target.BulletPower.Value;
                    _speed          = Rules.GetBulletSpeed(_power);
                    _maxEscapeAngle = VirtualBullet.GetMaximumEscapeAngle(_speed);

                    _minEscapeAngleRelativeVector = new Vector(
                        _direct.Magnitude,
                        new Angle(
                            _direct.Heading.Degrees
                            - _maxEscapeAngle));

                    _maxEscapeAngleRelativeVector = new Vector(
                        _direct.Magnitude,
                        new Angle(
                            _direct.Heading.Degrees
                            + _maxEscapeAngle));

                    _guessFactorRelativeVector = new Vector(
                        _direct.Magnitude,
                        new Angle(
                            _direct.Heading.Degrees
                            + _guessFactor * _maxEscapeAngle));

                    return(_location + _guessFactorRelativeVector);
                }
            }

            return(null);
        }
Esempio n. 2
0
        public GuessFactorData GetGuessFactorData()
        {
            GuessFactorData value = GuessFactorStats.GetGuessFactorData(this);

            return(value);
        }