示例#1
0
        public async Task Buy(Lot lot, uint count, Player player)
        {
            await using var ctx = new CdClientContext();

            var itemComponent = await ctx.ItemComponentTable.FirstAsync(
                i => i.Id == lot.GetComponentId(ComponentId.ItemComponent)
                );

            if (count == default || itemComponent.BaseValue <= 0)
            {
                return;
            }

            var cost = (uint)((itemComponent.BaseValue ?? 0) * count);

            if (cost > player.Currency)
            {
                return;
            }

            player.Currency -= cost;

            await player.GetComponent <InventoryManagerComponent>().AddItemAsync(lot, count);

            player.Message(new VendorTransactionResultMessage
            {
                Associate = GameObject,
                Result    = TransactionResult.Success
            });

            await OnBuy.InvokeAsync(lot, count, player);
        }
        public Task <BinaryOptionsResult> BuyBinaryAsync(BuyModel buyModel)
        {
            OnBuy?.Invoke(buyModel);

            return(WsClient?.BuyBinaryAsync(
                       buyModel.Pair,
                       buyModel.Size,
                       buyModel.Direction,
                       buyModel.Expiration,
                       Profile.BalanceId));
        }
示例#3
0
    public void BuildTurretOn(Node node)
    {
        if (ps.ModifyMoney() < turretToBuild.cost)
        {
            Debug.Log("Not enough money");
            return;
        }

        OnBuy?.Invoke(ps.ModifyMoney());
        GameObject turret = Instantiate(turretToBuild.prefab, node.GetBuildPosition(), Quaternion.identity);

        node.turret = turret;
        Debug.Log("turret build, money left: " + ps.ModifyMoney());
    }
示例#4
0
        public async Task Buy(Lot lot, uint count, Player player)
        {
            var componentId   = lot.GetComponentId(ComponentId.ItemComponent);
            var itemComponent = await ClientCache.FindAsync <ItemComponent>(componentId);

            if (count == default || itemComponent.BaseValue <= 0)
            {
                return;
            }

            var character = player.GetComponent <CharacterComponent>();
            var cost      = (uint)((itemComponent.BaseValue ?? 0) * count);

            if (cost > character.Currency)
            {
                return;
            }

            // If we have to buy this with an alternative currency
            if (itemComponent.CurrencyLOT != null)
            {
                var alternativeCurrencyLot  = (Lot)itemComponent.CurrencyLOT;
                var alternativeCurrencyCost = itemComponent.AltCurrencyCost ?? 0;
                var inventory = player.GetComponent <InventoryManagerComponent>();

                if (alternativeCurrencyCost > inventory.FindItems(alternativeCurrencyLot)
                    .Select(i => (int)i.Count).Sum())
                {
                    return;
                }

                await inventory.RemoveLotAsync(alternativeCurrencyLot, (uint)alternativeCurrencyCost);
            }

            character.Currency -= cost;

            await player.GetComponent <InventoryManagerComponent>().AddLotAsync(lot, count, lootType: LootType.Vendor);

            player.Message(new VendorTransactionResultMessage
            {
                Associate = GameObject,
                Result    = TransactionResult.Success
            });

            await OnBuy.InvokeAsync(lot, count, player);
        }
示例#5
0
        public void BuyTicket(Passenger passenger)
        {
            String finishPoint;

            Console.Write("\nВведите пункт назначения: ");
            finishPoint = Console.ReadLine();

            Console.Write("\nВам подойдут следующие рейсы: ");
            for (int i = 0; i < _ticketBase.Count; i++)
            {
                if (_ticketBase[i].FindSuitable(finishPoint))
                {
                    Console.Write("\nНомер билета: " + i);
                    Console.WriteLine(_ticketBase[i].Info());
                    _suitable++;
                }
            }

            if (_suitable == 0)
            {
                Console.Write("\nСожалеем, но подходящих рейсов не найдено.");
                return;
            }

            int indexTic;

            do
            {
                Console.Write("Ваш выбор: ");
            }while (!int.TryParse(Console.ReadLine(), out indexTic));

            if (indexTic < _ticketBase.Count && indexTic >= 0)
            {
                Ticket temp = _ticketBase[indexTic];
                passenger.InPropertyTicket.Add(temp);
                OnBuy?.Invoke();
                return;
            }

            Console.Write("\nТакого билета нет в базе.");
        }
示例#6
0
文件: Airport.cs 项目: relsa228/ISP
        public void BuyTicket(Passenger passenger)
        {
            String finishPoint;

            Console.Write("\nВведите пункт назначения: ");
            finishPoint = Console.ReadLine();

            Console.Write("\nВам подойдут следующие рейсы: ");
            for (int i = 1; i <= _ticketBase.Count; i++)
            {
                if (_ticketBase[i].FindSuitable(finishPoint))
                {
                    Console.Write("\nНомер билета: " + i);
                    Console.WriteLine(_ticketBase[i].Info());
                    _suitable++;
                }
            }

            if (_suitable == 0)
            {
                Console.WriteLine("\nСожалеем, но подходящих рейсов не найдено.");
                return;
            }

            Console.Write("\nВаш выбор: ");
            int indexTic = Convert.ToInt32(Console.ReadLine());

            if (indexTic <= _ticketBase.Count)
            {
                Ticket temp = _ticketBase[indexTic];
                _totalSum          += temp.Price;
                passenger.TotalSum += temp.Price;
                OnBuy?.Invoke();
                return;
            }

            Console.Write("\nТакого билета нет в базе.");
        }
示例#7
0
 public BuyButton(OnBuy onBuy, Vector2 position, Vector2 size, Menu menu, Map map)
     : base("Buy", position, size, menu, map)
 {
     this.onBuy         = onBuy;
     textBox.UpdateRate = 0;
 }