private void OnBuy(EntityUid uid, UplinkComponent uplink, UplinkBuyListingMessage message)
        {
            var player = message.Session.AttachedEntity;

            if (player == null)
            {
                return;
            }
            if (uplink.UplinkAccount == null)
            {
                return;
            }

            if (!_accounts.TryPurchaseItem(uplink.UplinkAccount, message.ItemId,
                                           player.Transform.Coordinates, out var entity))
            {
                SoundSystem.Play(Filter.SinglePlayer(message.Session), uplink.InsufficientFundsSound.GetSound(),
                                 uplink.Owner, AudioParams.Default);
                RaiseNetworkEvent(new UplinkInsufficientFundsMessage(), message.Session.ConnectedClient);
                return;
            }

            if (player.TryGetComponent(out HandsComponent? hands) &&
                entity.TryGetComponent(out ItemComponent? item))
            {
                hands.PutInHandOrDrop(item);
            }

            SoundSystem.Play(Filter.SinglePlayer(message.Session), uplink.BuySuccessSound.GetSound(),
                             uplink.Owner, AudioParams.Default.WithVolume(-2f));

            RaiseNetworkEvent(new UplinkBuySuccessMessage(), message.Session.ConnectedClient);
        }
Exemple #2
0
        private void OnBuy(EntityUid uid, UplinkComponent uplink, UplinkBuyListingMessage message)
        {
            if (message.Session.AttachedEntity is not {
                Valid: true
            } player)
            {
                return;
            }
            if (uplink.UplinkAccount == null)
            {
                return;
            }

            if (!_accounts.TryPurchaseItem(uplink.UplinkAccount, message.ItemId,
                                           EntityManager.GetComponent <TransformComponent>(player).Coordinates, out var entity))
            {
                SoundSystem.Play(uplink.InsufficientFundsSound.GetSound(),
                                 Filter.SinglePlayer(message.Session), uplink.Owner, AudioParams.Default);
                RaiseNetworkEvent(new UplinkInsufficientFundsMessage(), message.Session.ConnectedClient);
                return;
            }

            _handsSystem.PickupOrDrop(player, entity.Value);

            SoundSystem.Play(uplink.BuySuccessSound.GetSound(),
                             Filter.SinglePlayer(message.Session), uplink.Owner, AudioParams.Default.WithVolume(-8f));

            RaiseNetworkEvent(new UplinkBuySuccessMessage(), message.Session.ConnectedClient);
        }