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); }
public GuessFactorData GetGuessFactorData() { GuessFactorData value = GuessFactorStats.GetGuessFactorData(this); return(value); }