public TurretRunner(ITargetDetector targetDetector, ITargetPicker targetPicker, ITurretTurner turretTurner, IFireControl fireControl, IKnowsCurrentTarget knower)
 {
     _targetDetector = targetDetector;
     _targetPicker   = targetPicker;
     _turretTurner   = turretTurner;
     _fireControl    = fireControl;
     _knower         = knower;
 }
    // Use this for initialization
    void Start()
    {
        var rigidbody    = GetComponent <Rigidbody>();
        var emitterCount = EmitterParent.childCount;

        _emitters = new List <Transform>();
        for (int i = 0; i < emitterCount; i++)
        {
            _emitters.Add(EmitterParent.GetChild(i));
        }

        _reload = LoadTime;

        _detector = new MultiTagTargetDetector()
        {
            ProjectileSpeed = ProjectileSpeed,
            EnemyTags       = EnemyTags
        };

        var pickers = new List <ITargetPicker>
        {
            new AboveTurnTableTargetPicker(rigidbody),
            new ProximityTargetPicker(rigidbody)
            {
                DistanceMultiplier = PickerDistanceMultiplier,
                InRangeBonus       = PickerInRangeBonus,
                Range = PickerRange
            },
            new LookingAtTargetPicker(ElevationHub)
            {
                ProjectileSpeed = ProjectileSpeed,
                Multiplier      = PickerAimedAtMultiplier
            },
            new ApproachingTargetPicker(rigidbody, PickerApproachWeighting)
        };

        if (PickerMinimumMass > 0 || PickerMasMultiplier != 0)
        {
            pickers.Add(new MassTargetPicker
            {
                MinMass          = PickerMinimumMass,
                MassMultiplier   = PickerMasMultiplier,
                OverMinMassBonus = PickerOverMinMassBonus
            });
        }

        _targetPicker = new CombinedTargetPicker(pickers);

        _turner = new UnityTurretTurner(rigidbody, TurnTable, ElevationHub, RestTarget, ProjectileSpeed);

        _fireControl = new UnityFireControl(this, ElevationHub.transform, ShootAngle);

        _runner = new TurretRunner(_detector, _targetPicker, _turner, _fireControl, this)
        {
            name = transform.name
        };
    }
示例#3
0
    // Use this for initialization
    void Start()
    {
        _targetChoosingMechanism = GetComponent <IKnowsCurrentTarget>();
        var speedKnower     = GetComponent <IKnowsProjectileSpeed>();
        var projectileSpeed = speedKnower != null ? speedKnower.KnownProjectileSpeed : null;
        var rigidbody       = GetComponent <Rigidbody>();

        _turner = new EyeballTurretTurner(rigidbody, Ball, RestTarget, projectileSpeed)
        {
            Torque      = MotorForce,
            VectorArrow = VectorArrow
        };

        _runner = new TurretRunner(_targetChoosingMechanism, _turner);
    }
示例#4
0
    // Use this for initialization
    void Start()
    {
        _targetChoosingMechanism = GetComponent <IKnowsCurrentTarget>();
        var speedKnower     = GetComponent <IKnowsProjectileSpeed>();
        var projectileSpeed = speedKnower != null ? speedKnower.KnownProjectileSpeed : null;
        var rigidbody       = GetComponent <Rigidbody>();

        _turner = new UnityTurretTurner(rigidbody, TurnTable, ElevationHub, RestTarget, projectileSpeed)
        {
            TurnTableTorque          = TurnTableMotorFoce,
            TurnTableSpeedMultiplier = TurnTableMotorSpeedMultiplier,
            TurnTableSpeedCap        = TurnTableMotorSpeedCap,
            EHTorque          = ElevationHubMotorFoce,
            EHSpeedMultiplier = ElevationHubMotorSpeedMultiplier,
            EHSpeedCap        = ElevationHubMotorSpeedCap
        };

        _runner = new TurretRunner(_targetChoosingMechanism, _turner);
    }
    // Use this for initialization
    void Start()
    {
        var rigidbody    = GetComponent <Rigidbody>();
        var emitterCount = BeamsParent.childCount;

        _beams = new List <Beam>();
        for (int i = 0; i < emitterCount; i++)
        {
            var beam = BeamsParent.GetChild(i);
            beam.localScale = Vector3.zero;
            beam.SetColor(BeamColour);
            _beams.Add(new Beam(beam, ShootTime, LoadTime)
            {
                BeamForce     = BeamForce,
                HitEffect     = HitEffect,
                BeamDamage    = BeamDamage,
                FriendlyTag   = tag,
                InitialRadius = InitialRadius,
                Divergence    = Divergence
            });
        }

        _detector = new MultiTagTargetDetector()
        {
            ProjectileSpeed = 0,
            EnemyTags       = EnemyTags
        };

        var pickers = new List <ITargetPicker>
        {
            new AboveTurnTableTargetPicker(rigidbody),
            new ProximityTargetPicker(rigidbody)
            {
                DistanceMultiplier = PickerDistanceMultiplier,
                InRangeBonus       = PickerInRangeBonus,
                Range = PickerRange
            },
            new LookingAtTargetPicker(ElevationHub)
            {
                Multiplier = PickerAimedAtMultiplier
            },
            new ApproachingTargetPicker(rigidbody, PickerApproachWeighting)
        };

        if (PickerMinimumMass > 0 || PickerMasMultiplier != 0)
        {
            pickers.Add(new MassTargetPicker
            {
                MinMass          = PickerMinimumMass,
                MassMultiplier   = PickerMasMultiplier,
                OverMinMassBonus = PickerOverMinMassBonus
            });
        }

        _targetPicker = new CombinedTargetPicker(pickers);

        _turner = new UnityTurretTurner(rigidbody, TurnTable, ElevationHub, RestTarget, null);

        _fireControl = new UnityFireControl(this, ElevationHub.transform, ShootAngle);

        _runner = new TurretRunner(_detector, _targetPicker, _turner, _fireControl, this)
        {
            name = transform.name
        };
    }
示例#6
0
 public TurretRunner(IKnowsCurrentTarget knower, ITurretTurner turretTurner)
 {
     _turretTurner = turretTurner;
     _knower       = knower;
 }