Exemplo n.º 1
0
    //удаляем пулю, регистрируем попадание у остальных игроков
    private void HitInUpdate()
    {
        if (_hitBulletPool.Count > 0)
        {
            foreach (var hitModel in _hitBulletPool)
            {
                foreach (var bullet in BulletsInGame)
                {
                    int bulletNetworkID = bullet.GetComponent <SignalRIdentity>().NetworkID;
                    int bulletDamage    = bullet.GetComponent <BulletStats>().Damage;

                    if (bulletNetworkID == hitModel.bulletID)
                    {
                        foreach (var target in _gameHelper.AllPlayers)
                        {
                            int targetHealth    = target.GetComponent <PlayerStats>().Health;
                            int targetNetworkID = target.GetComponent <SignalRIdentity>().NetworkID;
                            BulletController bulletController = bullet.GetComponent <BulletController>();

                            if (bulletNetworkID == hitModel.targetID)
                            {
                                targetHealth -= bulletDamage;

                                //если мало здоровья то отключаем игрока, надо будет переделать под рестарт игрока, либо переход его в меню со статистикой.
                                if (targetHealth <= 0)
                                {
                                    SyncObjectModel syncObjectModel = new SyncObjectModel();
                                    syncObjectModel.Id = targetNetworkID;
                                    _signalRClient._disconnectedModels.Add(syncObjectModel);
                                }

                                if (!bullet.GetComponent <BulletStats>().Perforation)
                                {
                                    bulletController.BulletOff();
                                }
                            }
                        }
                    }
                }
            }
        }
        _hitBulletPool.Clear();
    }