// Use this for initialization void Start() { _rigidbody = GetComponent <Rigidbody>(); var initialAngularDrag = _rigidbody.angularDrag; var torqueApplier = new MultiTorquerTorqueAplier(_rigidbody, TorqueMultiplier, initialAngularDrag); _pilot = new RocketPilot(torqueApplier, _rigidbody, Engines, StartDelay) { LocationAimWeighting = LocationAimWeighting, TurningStartDelay = TurningStartDelay, VectorArrow = VectorArrow, TimeThresholdForMaximumEvasion = TimeThresholdForMaximumEvasion, TimeThresholdForMediumEvasion = TimeThresholdForMediumEvasion, TimeThresholdForMinimalEvasion = TimeThresholdForMinimalEvasion, EvasionModeTime = EvasionModeTime, MinimumFriendlyDetectionDistance = MinimumFriendlyDetectionDistance }; var exploder = new ShrapnelExploder(_rigidbody, Shrapnel, ExplosionEffect, ShrapnelCount) { EnemyTags = TargetChoosingMechanism.EnemyTagKnower.KnownEnemyTags, TagShrapnel = TagShrapnel, SetEnemyTagOnShrapnel = SetEnemyTagOnShrapnel, ShrapnelSpeed = ShrapnelSpeed }; _detonator = new ProximityApproachDetonator(exploder, _rigidbody, TimeToTargetForDetonation, ShrapnelSpeed); _runner = new RocketRunner(TargetChoosingMechanism, _pilot, _detonator, Tank) { name = transform.name }; }
public RocketRunner(IDeactivateableTargetKnower knower, IPilot engineControl, IDetonator detonator, FuelTank tank) { _pilot = engineControl; _detonator = detonator; _targetKnower = knower; _tank = tank; }
public RocketRunner(ITargetDetector targetDetector, ITargetPicker targetPicker, IPilot engineControl, IDetonator detonator, IKnowsCurrentTarget knower) { _targetDetector = targetDetector; _targetPicker = targetPicker; _pilot = engineControl; _detonator = detonator; _knower = knower; }
// Use this for initialization void Start() { _rigidbody = GetComponent <Rigidbody>(); _detector = new MultiTagTargetDetector() { EnemyTags = EnemyTags }; var pickers = new List <ITargetPicker> { new ProximityTargetPicker(_rigidbody) { DistanceMultiplier = PickerDistanceMultiplier, InRangeBonus = PickerInRangeBonus, Range = PickerRange }, new LookingAtTargetPicker(_rigidbody) { Multiplier = PickerAimedAtMultiplier }, new ApproachingTargetPicker(_rigidbody, PickerApproachWeighting) }; if (MinimumMass > 0 || PickerMasMultiplier != 0) { pickers.Add(new MassTargetPicker { MinMass = MinimumMass, MassMultiplier = PickerMasMultiplier, OverMinMassBonus = PickerOverMinMassBonus }); } _targetPicker = new CombinedTargetPicker(pickers); var initialAngularDrag = _rigidbody.angularDrag; var torqueApplier = new MultiTorquerTorqueAplier(_rigidbody, TorqueMultiplier, initialAngularDrag); _pilot = new RocketPilot(torqueApplier, _rigidbody, Engines, ShootAngle, StartDelay) { LocationAimWeighting = LocationAimWeighting, TurningStartDelay = TurningStartDelay, VectorArrow = VectorArrow }; var exploder = new ShrapnelAndDamageExploder(_rigidbody, Shrapnel, ExplosionEffect, ShrapnelCount) { ExplosionForce = ExplosionForce, EnemyTags = EnemyTags, TagShrapnel = TagShrapnel, SetEnemyTagOnShrapnel = SetEnemyTagOnShrapnel, ExplosionBaseDamage = ExplosionDamage, ShrapnelSpeed = ShrapnelSpeed, ExplosionRadius = ExplosionRadius }; _detonator = new ProximityApproachDetonator(exploder, _rigidbody, TimeToTargetForDetonation, ShrapnelSpeed); _runner = new RocketRunner(_detector, _targetPicker, _pilot, _detonator, this) { name = transform.name }; //Debug.Log("starting"); }