public void Run()
        {
#if DEBUG
            GunshotWound2.LastSystem = nameof(BodyHitSystem);
#endif

            for (var i = 0; i < _events.EntitiesCount; i++)
            {
                var pedEntity = _events.Components1[i].Entity;
                if (!_ecsWorld.IsEntityExists(pedEntity))
                {
                    continue;
                }

                var woundedPed = _ecsWorld.GetComponent <WoundedPedComponent>(pedEntity);
                if (woundedPed == null)
                {
                    continue;
                }

                var bodyPart = GetDamagedBodyPart(woundedPed.ThisPed);

                var bodyDamage = _ecsWorld.CreateEntityWith <BodyPartWasHitEvent>();
                bodyDamage.Entity      = pedEntity;
                bodyDamage.DamagedPart = bodyPart;
            }
        }
Exemple #2
0
        private void ReceiveConnects()
        {
            for (int i = 0; i < _connectedClients.EntitiesCount; i++)
            {
                _connectedClients.Components1[i].ConnectedClient = null;
                _ecsWorld.RemoveEntity(_connectedClients.Entities[i]);
            }

            foreach (ClientInfo clientInfo in _config.Data.EcsNetworkListener.GetConnectedClients())
            {
                _ecsWorld.CreateEntityWith <ClientConnectedEvent>().ConnectedClient = clientInfo;
            }

            for (int i = 0; i < _disconnectedClients.EntitiesCount; i++)
            {
                _disconnectedClients.Components1[i].DisconnectedClient = null;
                _ecsWorld.RemoveEntity(_disconnectedClients.Entities[i]);
            }

            foreach (ClientInfo clientInfo in _config.Data.EcsNetworkListener.GetDisconnectedClients())
            {
                _ecsWorld.CreateEntityWith <ClientDisconnectedEvent>().DisconnectedClient = clientInfo;
            }

            for (int i = 0; i < _connectEvents.EntitiesCount; i++)
            {
                ConnectToEvent connectEvent = _connectEvents.Components1[i];
                _config.Data.EcsNetworkListener.Connect(connectEvent.Address, connectEvent.Port);
                _ecsWorld.RemoveEntity(_connectEvents.Entities[i]);
            }
        }
        public void Run()
        {
            GunshotWound2.LastSystem = nameof(BodyHitSystem);

            for (int i = 0; i < _requests.EntitiesCount; i++)
            {
                int pedEntity  = _requests.Components1[i].PedEntity;
                var woundedPed = _ecsWorld
                                 .GetComponent <WoundedPedComponent>(pedEntity);
                if (woundedPed == null)
                {
                    continue;
                }

                var bodyPart = GetDamagedBodyPart(woundedPed.ThisPed);
                if (bodyPart == BodyParts.NOTHING)
                {
                    continue;
                }

                var bodyDamage = _ecsWorld.CreateEntityWith <BodyHitComponent>();
                bodyDamage.PedEntity   = pedEntity;
                bodyDamage.DamagedPart = bodyPart;
            }
        }
Exemple #4
0
        public void Run()
        {
#if DEBUG
            GunshotWound2.LastSystem = nameof(DebugInfoSystem);
#endif

            for (int i = 0; i < _events.EntitiesCount; i++)
            {
#if DEBUG
                int pedEntity = _events.Components1[i].Entity;
                if (!_ecsWorld.IsEntityExists(pedEntity))
                {
                    continue;
                }

                var woundedPed = _ecsWorld.GetComponent <WoundedPedComponent>(pedEntity);
                if (woundedPed == null)
                {
                    continue;
                }

                SendDebug($"{woundedPed}");
                _ecsWorld.CreateEntityWith <ShowHealthStateEvent>().Entity = pedEntity;
#endif
            }
            _events.RemoveAllEntities();
        }
Exemple #5
0
        public void Run()
        {
            for (int i = 0; i < _deathComponents.EntitiesCount; i++)
            {
                int playerEntity      = _deathComponents.Components1[i].PlayerEntity;
                var targetPlayer      = _ecsWorld.GetComponent <PlayerComponent>(playerEntity);
                var deadMoveComponent = _ecsWorld.GetComponent <MoveComponent>(playerEntity);

                if (--targetPlayer.Lifes <= 0)
                {
                    targetPlayer.IsDead = true;
                    if (deadMoveComponent != null)
                    {
                        deadMoveComponent.Transform.gameObject.SetActive(false);
                    }
                }

                Vector3 respawnVector = targetPlayer.Lifes > 0
                    ? targetPlayer.StartPosition
                    : Vector3.zero;

                var teleportComponent = _ecsWorld.CreateEntityWith <TeleportComponent>();
                teleportComponent.MoveEntity     = playerEntity;
                teleportComponent.TargetPosition = respawnVector;

                _ecsWorld.CreateEntityWith <UpdateGuiComponent>();
                RemoveEntitiesWith(playerEntity);
            }
        }
Exemple #6
0
        public void Run()
        {
#if DEBUG
            GunshotWound2.LastSystem = nameof(IncreasePainSystem);
#endif
            var woundConfig = _config.Data.WoundConfig;

            for (var i = 0; i < _events.EntitiesCount; i++)
            {
                var component = _events.Components1[i];
                var pedEntity = component.Entity;
                if (!_ecsWorld.IsEntityExists(pedEntity))
                {
                    _ecsWorld.RemoveEntity(_events.Entities[i]);
                    continue;
                }

                var woundedPed = _ecsWorld.GetComponent <WoundedPedComponent>(pedEntity);
                if (woundedPed != null && component.PainAmount > 0f)
                {
                    var pain = _ecsWorld.EnsureComponent <PainComponent>(pedEntity, out var firstPain);
                    if (firstPain)
                    {
                        pain.CurrentPain = 0f;
                    }

                    var newPain       = component.PainAmount;
                    var painDeviation = GunshotWound2.Random.NextFloat(
                        -woundConfig.PainDeviation * newPain,
                        woundConfig.PainDeviation * newPain);
                    pain.CurrentPain += woundConfig.PainMultiplier * newPain + painDeviation;

                    var painAnimIndex = GunshotWound2.Random.Next(1, 6);
                    PainRecoverySystem.PlayFacialAnim(woundedPed, $"pain_{painAnimIndex.ToString()}");

                    var painfulWound = woundConfig.PainfulWoundPercent * woundedPed.MaximalPain;
                    if (woundedPed.IsPlayer && newPain > painfulWound / 2f)
                    {
                        _ecsWorld.CreateEntityWith <AddCameraShakeEvent>().Length = CameraShakeLength.ONE_TIME;
                    }

                    if (newPain > painfulWound)
                    {
                        if (woundConfig.RagdollOnPainfulWound)
                        {
                            _ecsWorld.CreateEntityWith(out SetPedToRagdollEvent ragdoll);
                            ragdoll.Entity       = pedEntity;
                            ragdoll.RagdollState = RagdollStates.SHORT;
                        }

                        if (woundedPed.IsPlayer)
                        {
                            _ecsWorld.CreateEntityWith <AddFlashEvent>();
                        }
                    }
                }

                _ecsWorld.RemoveEntity(_events.Entities[i]);
            }
        }
        protected void SendMessage(string message, NotifyLevels level = NotifyLevels.COMMON)
        {
            var notification = EcsWorld.CreateEntityWith <NotificationComponent>();

            notification.Level        = level;
            notification.StringToShow = message;
        }
        public void Run()
        {
            for (int i = 0; i < _players.EntitiesCount; i++)
            {
                int   playerNum = _players.Components1[i].Num;
                float yAxis     = Input.GetAxis(string.Format("Player{0}Y", playerNum));
                float xAxis     = Input.GetAxis(string.Format("Player{0}X", playerNum));

                if (yAxis > 0)
                {
                    SendCommand(Directions.UP, playerNum);
                }
                else if (yAxis < 0)
                {
                    SendCommand(Directions.DOWN, playerNum);
                }
                else if (xAxis > 0)
                {
                    SendCommand(Directions.RIGHT, playerNum);
                }
                else if (xAxis < 0)
                {
                    SendCommand(Directions.LEFT, playerNum);
                }

                if (Input.GetKeyUp(KeyCode.Escape))
                {
                    _ecsWorld.CreateEntityWith <GameStateComponent>().State = Time.timeScale < 1
                        ? GameStates.START
                        : GameStates.PAUSE;
                }
            }
        }
        private void OnKeyUp(object sender, KeyEventArgs eventArgs)
        {
            if (_mainConfig.HelmetKey != null && eventArgs.KeyCode == _mainConfig.HelmetKey)
            {
                _ecsWorld.CreateEntityWith <HelmetRequestComponent>();
                return;
            }

            if (_mainConfig.CheckKey != null && eventArgs.KeyCode == _mainConfig.CheckKey)
            {
                CheckPlayer();
                return;
            }

            if (_mainConfig.HealKey != null && eventArgs.KeyCode == _mainConfig.HealKey)
            {
                HealPlayer();
                return;
            }

            switch (eventArgs.KeyCode)
            {
            case Keys.PageDown:
                ReduceRange(5);
                break;

            case Keys.PageUp:
                IncreaseRange(5);
                break;
            }
        }
        public void Run()
        {
#if DEBUG
            GunshotWound2.LastSystem = nameof(WoundSystem);
#endif

            for (int i = 0; i < _components.EntitiesCount; i++)
            {
                ProcessWoundEvent component = _components.Components1[i];
                int pedEntity = component.Entity;
                if (!_ecsWorld.IsEntityExists(pedEntity))
                {
                    continue;
                }

                var woundedPed = _ecsWorld.GetComponent <WoundedPedComponent>(pedEntity);
                if (woundedPed == null)
                {
                    continue;
                }

                float damageDeviation = component.Damage > 0
                    ? _config.Data.WoundConfig.DamageDeviation * component.Damage
                    : 0;
                float bleedingDeviation = component.BleedSeverity > 0
                    ? _config.Data.WoundConfig.BleedingDeviation * component.BleedSeverity
                    : 0;

                if (!woundedPed.IsDead)
                {
                    woundedPed.Health -= _config.Data.WoundConfig.DamageMultiplier * component.Damage +
                                         Random.NextFloat(-damageDeviation, damageDeviation);
                    woundedPed.ThisPed.Health = (int)woundedPed.Health;
                }

                CreateBleeding(woundedPed, pedEntity, component.BleedSeverity +
                               Random.NextFloat(-bleedingDeviation, bleedingDeviation), component.Name);
                woundedPed.BleedingCount++;

                CreatePain(pedEntity, component.Pain);
                CreateCritical(pedEntity, component.Crits);

                if (component.ArterySevered)
                {
                    CreateBleeding(woundedPed, pedEntity, 1f, _locale.Data.SeveredArtery);
                    woundedPed.BleedingCount++;
                }

#if DEBUG
                _ecsWorld.CreateEntityWith <ShowDebugInfoEvent>().Entity = pedEntity;
#endif
                SendWoundInfo(component, woundedPed);
            }
            _components.RemoveAllEntities();
        }
        public void Initialize()
        {
            const string CheckPointTag = "CheckPoint";

            foreach (var unityObject in GameObject.FindGameObjectsWithTag(CheckPointTag))
            {
                var tr         = unityObject.transform;
                var checkPoint = _world.CreateEntityWith <CheckPoint>();
                checkPoint.Coords = tr.localPosition;
            }
        }
Exemple #12
0
 void IEcsInitSystem.Initialize()
 {
     foreach (var unityObject in GameObject.FindGameObjectsWithTag(FoodTag))
     {
         var tr   = unityObject.transform;
         var food = _world.CreateEntityWith <Food> ();
         food.Coords.X  = (int)tr.localPosition.x;
         food.Coords.Y  = (int)tr.localPosition.y;
         food.Transform = tr;
     }
 }
        public void Initialize()
        {
            var scoreTables = Object.FindObjectsOfType <ScoreTableBehaviour>();

            foreach (ScoreTableBehaviour behaviour in scoreTables)
            {
                _ecsWorld.CreateEntityWith <ScoreTableComponent>().ScoreText = behaviour.GetComponent <Text>();
            }

            _ecsWorld.CreateEntityWith <UpdateScoreTableEvent>();
        }
Exemple #14
0
        public void Initialize()
        {
            var menus = Object.FindObjectsOfType <PauseMenuBehaviour>();

            foreach (PauseMenuBehaviour behaviour in menus)
            {
                _ecsWorld.CreateEntityWith <PauseMenuComponent>().GameObject = behaviour.gameObject;
            }

            _ecsWorld.CreateEntityWith <ChangeGameStateEvent>().State = GameStates.START;
        }
        public void Run()
        {
#if DEBUG
            GunshotWound2.LastSystem = nameof(BaseWeaponHitSystem);
#endif

            var config = _config.Data;
            for (var i = 0; i < _peds.EntitiesCount; i++)
            {
                var ped = _peds.Components1[i].ThisPed;
                if (!ped.IsAlive)
                {
                    continue;
                }

                var pedEntity = _peds.Entities[i];

                if (CheckDamageAndSendIfNeed <LightImpactHitEvent>(config.LightImpactHashes, ped, pedEntity))
                {
                    continue;
                }
                if (CheckDamageAndSendIfNeed <CuttingHitEvent>(config.CuttingHashes, ped, pedEntity))
                {
                    continue;
                }
                if (CheckDamageAndSendIfNeed <HeavyImpactHitEvent>(config.HeavyImpactHashes, ped, pedEntity))
                {
                    continue;
                }
                if (CheckDamageAndSendIfNeed <SmallCaliberHitEvent>(config.SmallCaliberHashes, ped, pedEntity))
                {
                    continue;
                }
                if (CheckDamageAndSendIfNeed <ShotgunHitEvent>(config.ShotgunHashes, ped, pedEntity))
                {
                    continue;
                }
                if (CheckDamageAndSendIfNeed <MediumCaliberHitEvent>(config.MediumCaliberHashes, ped, pedEntity))
                {
                    continue;
                }
                if (CheckDamageAndSendIfNeed <HighCaliberHitEvent>(config.HighCaliberHashes, ped, pedEntity))
                {
                    continue;
                }
                if (CheckDamageAndSendIfNeed <ExplosionHitEvent>(config.ExplosiveHashes, ped, pedEntity))
                {
                    continue;
                }

                _ecsWorld.CreateEntityWith <ShowNotificationEvent>().StringToShow = "~r~Ped damaged by unknown weapon! Please, update weapon hashes.";
            }
        }
Exemple #16
0
        public static void SendComponentToNetwork <TComponent>(this EcsWorld ecsWorld, int entity)
            where TComponent : class, new()
        {
            PrepareComponentToSendEvent <TComponent> prepare;

            ecsWorld.CreateEntityWith(out prepare);
            prepare.LocalEntityUid = entity;
            prepare.ComponentFlags = 0;

#if DEBUG
            ecsWorld.CreateEntityWith <PrepareToSendCountEvent>();
#endif
        }
        protected void SendMessage(string message, NotifyLevels level = NotifyLevels.COMMON)
        {
#if !DEBUG
            if (level == NotifyLevels.DEBUG)
            {
                return;
            }
#endif

            var notification = EcsWorld.CreateEntityWith <ShowNotificationEvent>();
            notification.Level        = level;
            notification.StringToShow = message;
        }
        public void Run()
        {
            GunshotWound2.LastSystem = nameof(InstantHealSystem);

            for (int i = 0; i < _components.EntitiesCount; i++)
            {
                int pedEntity  = _components.Components1[i].PedEntity;
                var woundedPed = _ecsWorld.GetComponent <WoundedPedComponent>(pedEntity);

                if (woundedPed != null)
                {
                    if (woundedPed.IsPlayer)
                    {
                        Function.Call(Hash._SET_CAM_EFFECT, 0);
                        Function.Call(Hash.SET_PLAYER_SPRINT, Game.Player, true);
                        Function.Call(Hash._STOP_ALL_SCREEN_EFFECTS);
                        woundedPed.Health = _mainConfig.Data.PlayerConfig.MaximalHealth;
                        _ecsWorld.CreateEntityWith <AdrenalineComponent>().Revert = true;
                        Game.Player.IgnoredByEveryone = false;
                    }
                    else
                    {
                        woundedPed.Health           = _random.Next(50, _mainConfig.Data.NpcConfig.MaximalStartHealth);
                        woundedPed.ThisPed.Accuracy = woundedPed.DefaultAccuracy;
                    }

                    woundedPed.IsDead       = false;
                    woundedPed.DamagedParts = 0;
                    woundedPed.PainMeter    = 0;
                    Function.Call(Hash.CLEAR_PED_BLOOD_DAMAGE, woundedPed.ThisPed);
                    Function.Call(Hash.SET_PED_MOVE_RATE_OVERRIDE, woundedPed.ThisPed, 1f);
                    woundedPed.ThisPed.Health = (int)woundedPed.Health;
                    woundedPed.Armor          = woundedPed.ThisPed.Armor;

                    _ecsWorld.CreateEntityWith <NoPainStateComponent>().PedEntity = pedEntity;
                }

                for (int bleedIndex = 0; bleedIndex < _bleedingComponents.EntitiesCount; bleedIndex++)
                {
                    if (_bleedingComponents.Components1[bleedIndex].PedEntity != pedEntity)
                    {
                        continue;
                    }

                    _ecsWorld.RemoveEntity(_bleedingComponents.Entities[bleedIndex]);
                }

                _ecsWorld.RemoveEntity(_components.Entities[i]);
            }
        }
Exemple #19
0
 private void OnTriggerEnter2D(Collider2D other)
 {
     //Debug.Log("TOUCH");
     if (other.CompareTag(Utils.BackgroundTag))
     {
         TriggerBackgroundEvent triggerEvent = _world.CreateEntityWith <TriggerBackgroundEvent>();
         triggerEvent.ObstacleTransform = other.transform;
     }
     else
     {
         TriggerForegroundEvent triggerEvent = _world.CreateEntityWith <TriggerForegroundEvent>();
         triggerEvent.ObstacleTransform = other.transform;
     }
 }
Exemple #20
0
    void IEcsInitSystem.Initialize()
    {
        foreach (var unityObject in GameObject.FindGameObjectsWithTag(SnakeTag))
        {
            var tr = unityObject.transform;

            var snake = _world.CreateEntityWith <Snake> ();

            var head = _world.CreateEntityWith <SnakeSegment> ();
            head.Coords.X  = (int)tr.localPosition.x;
            head.Coords.Y  = (int)tr.localPosition.y;
            head.Transform = tr;
            snake.Body.Add(head);
        }
    }
Exemple #21
0
        public void Initialize()
        {
            worldEntity        = _world.CreateEntityWith <WorldComponent>();
            worldEntity.Width  = 320;
            worldEntity.Height = 240;

            LoadMap(Resources.Birb);



            var ballEntity = MakeBall();

            BuildWalls();
            BuildPaddle();
        }
        public void Initialize()
        {
            PlayerConfigComponent playerConfig = _playerConfig.Components1[0];

            GameObject[] playerObjects = GameObject.FindGameObjectsWithTag("Player");

            foreach (GameObject player in playerObjects)
            {
                PlayerComponent playerComponent;
                MoveComponent   moveComponent;
                int             playerEntity = _ecsWorld.CreateEntityWith(out playerComponent, out moveComponent);

                Vector2Int startPosition = player.transform.position.ToVector2Int();
                moveComponent.Heading = playerConfig.PlayerCount % 2 != 0
                    ? Directions.RIGHT
                    : Directions.LEFT;
                moveComponent.DesiredPosition = startPosition;
                moveComponent.Speed           = playerConfig.StartSpeed;

                playerComponent.Lives         = playerConfig.StartLives;
                playerComponent.Num           = ++playerConfig.PlayerCount;
                playerComponent.StartPosition = startPosition;

                _ecsWorld.AddComponent <CreateWorldObjectEvent>(playerEntity).Transform = player.transform;
            }
        }
 public void Run()
 {
     if (_takenEnergizers.EntitiesCount > 0)
     {
         _ecsWorld.CreateEntityWith <EnableGhostFearStateEvent>();
     }
 }
Exemple #24
0
 void IEcsInitSystem.Initialize()
 {
     for (var i = 0; i < ITERATIONS; i++)
     {
         _world.CreateEntityWith <EcsComponent1> (_componentId);
     }
 }
        public void Run()
        {
#if DEBUG
            GunshotWound2.LastSystem = nameof(HelmetRequestSystem);
#endif

            if (_requests.EntitiesCount <= 0)
            {
                return;
            }

            var player = Game.Player;
            var ped    = player.Character;
            if (ped.IsWearingHelmet)
            {
                ped.RemoveHelmet(false);
            }
            else if (!ped.IsRagdoll)
            {
                if (player.Money > _config.Data.PlayerConfig.MoneyForHelmet)
                {
                    player.Money -= _config.Data.PlayerConfig.MoneyForHelmet;
                    ped.GiveHelmet(false, Helmet.RegularMotorcycleHelmet, GunshotWound2.Random.Next(0, 15));
                }
                else
                {
                    var message = _ecsWorld.CreateEntityWith <ShowNotificationEvent>();
                    message.StringToShow = _locale.Data.DontHaveMoneyForHelmet;
                    message.Level        = NotifyLevels.COMMON;
                }
            }

            _requests.CleanFilter();
        }
        protected override void ExecuteState(WoundedPedComponent woundedPed, int pedEntity)
        {
            base.ExecuteState(woundedPed, pedEntity);

            SendPedToRagdoll(pedEntity, RagdollStates.PERMANENT);

            if (woundedPed.IsPlayer && Config.Data.PlayerConfig.CanDropWeapon)
            {
                woundedPed.ThisPed.Weapons.Drop();
            }
            else if (!woundedPed.IsPlayer)
            {
                woundedPed.ThisPed.Weapons.Drop();
            }

            if (!woundedPed.IsPlayer)
            {
                return;
            }
            Game.Player.IgnoredByEveryone = true;
            EcsWorld.CreateEntityWith <ChangeSpecialAbilityEvent>().Lock = true;

            if (Config.Data.PlayerConfig.PoliceCanForgetYou)
            {
                Game.Player.WantedLevel = 0;
            }

            if (woundedPed.Crits.HasFlag(CritTypes.NERVES_DAMAGED) || woundedPed.IsDead)
            {
                return;
            }
            SendMessage(Locale.Data.UnbearablePainMessage, NotifyLevels.WARNING);
        }
Exemple #27
0
        private void TriggerStartGameEvent(bool isActive)
        {
            GameStartEvent eventData;
            var            entity = _world.CreateEntityWith <GameStartEvent>(out eventData);

            eventData.IsActive = isActive;
        }
Exemple #28
0
        protected override void ExecuteState(WoundedPedComponent woundedPed, int pedEntity)
        {
            base.ExecuteState(woundedPed, pedEntity);

            SendPedToRagdoll(pedEntity, RagdollStates.WAKE_UP);
            ChangeWalkingAnimation(pedEntity, woundedPed.IsPlayer
                ? Config.Data.PlayerConfig.NoPainAnim
                : Config.Data.NpcConfig.NoPainAnim);
            if (woundedPed.IsMale)
            {
                Function.Call(Hash.PLAY_FACIAL_ANIM, woundedPed.ThisPed, "mood_happy_1", "facials@gen_male@base");
            }
            else
            {
                Function.Call(Hash.PLAY_FACIAL_ANIM, woundedPed.ThisPed, "mood_happy_1", "facials@gen_female@base");
            }

            if (!woundedPed.IsPlayer)
            {
                return;
            }
            if (!woundedPed.Crits.HasFlag(CritTypes.ARMS_DAMAGED))
            {
                EcsWorld.CreateEntityWith <AddCameraShakeEvent>().Length = CameraShakeLength.CLEAR;
            }

            EcsWorld.CreateEntityWith <ChangeSpecialAbilityEvent>().Lock = false;
        }
Exemple #29
0
        protected override void ExecuteState(WoundedPedComponent woundedPed, int pedEntity)
        {
            base.ExecuteState(woundedPed, pedEntity);

            SwitchAnimationComponent anim;

            EcsWorld.CreateEntityWith(out anim);
            anim.PedEntity     = pedEntity;
            anim.AnimationName = woundedPed.IsPlayer
                ? Config.Data.PlayerConfig.IntensePainAnim
                : Config.Data.NpcConfig.IntensePainAnim;

            if (woundedPed.DamagedParts.HasFlag(DamageTypes.ARMS_DAMAGED))
            {
                return;
            }

            var backPercent = 1f - woundedPed.PainMeter / woundedPed.MaximalPain;

            if (woundedPed.IsPlayer)
            {
                Function.Call(Hash._SET_CAM_EFFECT, 2);
            }
            else
            {
                woundedPed.ThisPed.Accuracy = (int)(backPercent * woundedPed.DefaultAccuracy);
            }
        }
Exemple #30
0
        public void Run()
        {
            GunshotWound2.LastSystem = nameof(HelmetRequestSystem);

            if (_requests.EntitiesCount == 0)
            {
                return;
            }

            var player = Game.Player;

            if (player.Character.IsWearingHelmet)
            {
                player.Character.RemoveHelmet(false);
            }
            else
            {
                if (player.Money > _config.Data.PlayerConfig.MoneyForHelmet)
                {
                    player.Money -= _config.Data.PlayerConfig.MoneyForHelmet;
                    player.Character.GiveHelmet(false, HelmetType.RegularMotorcycleHelmet, Random.Next(0, 20));
                }
                else
                {
                    var message = _ecsWorld.CreateEntityWith <NotificationComponent>();
                    message.StringToShow = "You don't have enough money to buy helmet";
                    message.Level        = NotifyLevels.COMMON;
                }
            }

            for (int i = 0; i < _requests.EntitiesCount; i++)
            {
                _ecsWorld.RemoveEntity(_requests.Entities[i]);
            }
        }