Пример #1
0
 private void Detonate(Bomb bomb)
 {
     Physics.OverlapSphere(bomb.View.transform.position, bomb.Data.DamageRadius)
     .ToList()
     .ForEach(_ =>
     {
         var unit = _.GetComponent <UnitView>();
         if (unit != null)
         {
             _signalService.FireSignal(new UnitViewUnderAttackSignal(bomb.Data.Damage, unit, bomb.View.transform.position));
         }
     });
     _signalService.FireSignal(new DestroyBombSignal(bomb));
 }
Пример #2
0
        void ISignalListener <SpawnBombSignal> .SignalFired(SpawnBombSignal signal)
        {
            var viewInstance = Object.Instantiate(signal.View, signal.Position, Quaternion.identity);
            var bomb         = new Entities.Bomb(signal.Data, viewInstance);

            _signalService.FireSignal(new BombSpawnedSignal(bomb));
        }
Пример #3
0
        void ISignalListener <SpawnUnitSignal> .SignalFired(SpawnUnitSignal signal)
        {
            ClientOnlyConditionalDebug.Log("spawn");
            var viewInstance = Object.Instantiate(signal.View, signal.Position, Quaternion.identity);
            var unit         = new Entities.Unit(signal.Data, viewInstance);

            _signalService.FireSignal(new UnitSpawnedSignal(unit));
        }
Пример #4
0
 void IService.Initialize()
 {
     _spawnTimer = Observable.Timer(TimeSpan.FromSeconds(_settings.GenerationRateInSeconds))
                   .Repeat()
                   .Subscribe(_ =>
     {
         var bomb = _settings.GeneratedObjects[Random.Range(0, _settings.GeneratedObjects.Count)];
         _signalService.FireSignal(new SpawnBombSignal(bomb.View, bomb.Data,
                                                       GenerationExtensions.GetRandomPoint(_settings.MinGenerationPoint, _settings.MaxGenerationPoint, _settings.DefaultStartHeight)));
     });
 }
Пример #5
0
 void IService.Initialize()
 {
     _spawnTimer = Observable.Timer(TimeSpan.FromSeconds(_settings.GenerationRateInSeconds))
                   .Repeat()
                   .Subscribe(_ =>
     {
         var unit           = _settings.GeneratedObjects[Random.Range(0, _settings.GeneratedObjects.Count)];
         var targetPosition =
             GenerationExtensions.GetRandomPoint(_settings.MinGenerationPoint, _settings.MaxGenerationPoint, _settings.DefaultStartHeight);
         if (UnitCanBeSpawned(targetPosition, unit.View.transform.localScale))
         {
             _signalService.FireSignal(new SpawnUnitSignal(unit.View, unit.Data, targetPosition));
         }
     });
 }
Пример #6
0
        void ISignalListener <UnitViewUnderAttackSignal> .SignalFired(UnitViewUnderAttackSignal signal)
        {
            ClientOnlyConditionalDebug.LogWarning("hey, I got apply damage signal :)");
            var view   = signal.View;
            var damage = signal.Damage;
            var unit   = GetUnitByView(view);

            if (unit == null)
            {
                ClientOnlyConditionalDebug.LogWarning("unit not found");
                return;
            }

            unit.Damagable.CurrentHealth -= GetCalculatedDamage(damage.Amount, signal.DamagerPosition, unit.View.transform.position);
            if (unit.Damagable.CurrentHealth > 0)
            {
                return;
            }
            _units.Remove(unit);
            _signalService.FireSignal(new DestroyUnitSignal(unit));
        }