예제 #1
0
        public FireDictionary(Type type, IFireDelegate fireDelegate, IFireControl uiSubscriber, string userId = null, bool initWithCache = false)
        {
            List <IFireControl> controlList = new List <IFireControl>();

            controlList.Add(uiSubscriber);
            InitDictionary(type, fireDelegate, controlList, userId, initWithCache);
        }
 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
        };
    }
예제 #4
0
    // Use this for initialization
    void Start()
    {
        _colerer = GetComponent <ColourSetter>();
        _targetChoosingMechanism = GetComponent <IKnowsCurrentTarget>();
        _enemyTagKnower          = GetComponent <IKnowsEnemyTags>();
        var emitterCount = EmitterParent.childCount;

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

        _reload = LoadTime;

        _fireControl = GetComponent <IFireControl>();
    }
예제 #5
0
    private void Awake()
    {
        GetWeapons();
        IFireControl replacement = GetComponent <IFireControl>();

        if (replacement != null)
        {
            _fireControl = replacement;
        }

        foreach (IWeapon weapon in _weapons)
        {
            weapon.OnFire       += Weapon_OnFire;
            weapon.OnProjectile += Weapon_OnProjectile;
            weapon.OnHit        += Weapon_OnHit;
            weapon.OnKill       += Weapon_OnKill;
        }
    }
예제 #6
0
        private void Awake()
        {
            _muzzles       = GetMuzzles();
            _fireParticles = GetFireParticles(_muzzles);

            _fireAnimation = GetComponent <IFireAnimation>() ?? new NoFireAnimation();
            _fireControl   = GetComponent <IFireSequence>() ?? new InstantFireSequence();
            _fireSync      = GetComponent <IFireControl>() ?? new NoFireControl();

            _pool           = new NoGameObjectPool <IProjectile>(ProjectilePrefab);
            _projectilePool = new ProjectilePool(_pool);
            _pool.OnNew    += OnNewProjectile;


            if (isActiveAndEnabled)
            {
                _chambered = false;
                StartCoroutine(Rechamber(Cooldown));
            }
        }
    // Use this for initialization
    void Start()
    {
        var emitterCount = BeamsParent.childCount;

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

        _fireControl = GetComponent <IFireControl>();
    }
예제 #8
0
        public FireList(FirebaseApp firebaseApp, Type type, IFireDelegate fireDelegate, IFireControl uiSubscriber, string userId = null, bool initWithCache = false, string userIDKey = USERIDKEY)
        {
            List <IFireControl> controlList = new List <IFireControl>();

            controlList.Add(uiSubscriber);
            InitDictionary(firebaseApp, type, fireDelegate, controlList, userId, initWithCache, userIDKey);
        }
    // 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
        };
    }
예제 #10
0
 public void Synchronize(IFireControl sync)
 {
     _fireSync = sync;
 }