Exemplo n.º 1
0
    //применение результата торговли к игровым объектам
    public static void TradeApply(NetworkPlayer playerFrom, NetworkPlayer playerFor, NetworkGameCanvas GC,
                                  int moneyFromFirstPlayer,
                                  int moneyFromSecondPlayer)
    {
        //доавление денег, которые игроки зотят передать друг другу
        AddMoneyToList(playerFrom, playerFor, moneyFromFirstPlayer);
        AddMoneyToList(playerFor, playerFrom, moneyFromSecondPlayer);

        //очистка канвы торговли
        GC.ClearTradeMenu();

        if (playerFrom.IdPlayer < playerFor.IdPlayer)
        {
            foreach (NetworkThingForTrade thingForTrade in things[playerFrom.IdPlayer, playerFor.IdPlayer])
            {
                if (thingForTrade.PathforTrade != null)
                {
                    thingForTrade.PathforTrade.IdPlayer = thingForTrade.ForWhichPlayer.IdPlayer;
                }
                else
                {
                    thingForTrade.ForWhichPlayer.Money  += thingForTrade.Price;
                    thingForTrade.FromWhichPlayer.Money -= thingForTrade.Price;
                }
            }
        }
        else if (playerFrom.IdPlayer > playerFor.IdPlayer)
        {
            foreach (NetworkThingForTrade thingForTrade in things[playerFor.IdPlayer, playerFrom.IdPlayer])
            {
                if (thingForTrade.PathforTrade != null)
                {
                    thingForTrade.PathforTrade.IdPlayer = thingForTrade.ForWhichPlayer.IdPlayer;
                }
                else
                {
                    thingForTrade.ForWhichPlayer.Money  += thingForTrade.Price;
                    thingForTrade.FromWhichPlayer.Money -= thingForTrade.Price;
                }
            }
        }
        //если игрок закладывает
        else
        {
            //для каждой улице в списке
            foreach (NetworkThingForTrade thingForTrade in things[playerFor.IdPlayer, playerFrom.IdPlayer])
            {
                if (thingForTrade.PathforTrade != null)
                {
                    BlockStreetPath(thingForTrade.PathforTrade, playerFor);
                }
            }
        }

        TradeClear(playerFor, playerFrom);
    }