Пример #1
0
    private static void HandleLockOffer(GameSession session)
    {
        TradeInventory tradeInventory = session.Player.TradeInventory;

        tradeInventory.IsLocked = true;

        session.Send(TradePacket.FinalizeOffer(true));
        tradeInventory.OtherPlayer.Session?.Send(TradePacket.FinalizeOffer(false));
    }
Пример #2
0
 public void SetUp(Survivor survivor)
 {
     this.survivor = survivor;
     survivor.action.survivorCard = this;
     rearrangeInventory           = GetComponent <RearrangeInventory>();
     tradeInventory = GetComponent <TradeInventory>();
     storeInventory = GetComponent <StoreInventory>();
     itemStats      = GetComponent <ItemStats>();
     rearrangeInventory.survivor = survivor;
     tradeInventory.survivor     = survivor;
     storeInventory.survivor     = survivor;
 }
Пример #3
0
    private static void HandleFinalizeTrade(GameSession session)
    {
        TradeInventory tradeInventory = session.Player.TradeInventory;
        Player         otherPlayer    = tradeInventory.OtherPlayer;

        if (!otherPlayer.Session.Connected())
        {
            HandleCloseTrade(session);
            return;
        }

        TradeInventory otherPlayerTradeInventory = tradeInventory.OtherPlayer?.TradeInventory;

        if (otherPlayerTradeInventory is null)
        {
            return;
        }

        if (!otherPlayerTradeInventory.IsLocked && !tradeInventory.IsLocked)
        {
            return;
        }

        session.Send(TradePacket.FinalizeTrade(true));
        otherPlayer.Session.Send(TradePacket.FinalizeTrade(false));

        // Trade items
        GetSumMesos(session.Player, -tradeInventory.Mesos, otherPlayerTradeInventory.Mesos);
        otherPlayerTradeInventory.SendItems(session.Player, true);
        GetSumMesos(otherPlayer, -otherPlayerTradeInventory.Mesos, tradeInventory.Mesos);
        tradeInventory.SendItems(otherPlayer, true);

        session.Send(TradePacket.TradeStatus(true));
        otherPlayer.Session?.Send(TradePacket.TradeStatus(true));

        session.Player.TradeInventory = null;
        otherPlayer.TradeInventory    = null;
    }
Пример #4
0
    private static void HandleCloseTrade(GameSession session)
    {
        TradeInventory tradeInventory = session.Player.TradeInventory;

        if (tradeInventory is null)
        {
            return;
        }

        Player otherPlayer = tradeInventory.OtherPlayer;

        // Return items back to player's inventory
        tradeInventory.SendItems(session.Player, false);
        tradeInventory = null;

        if (otherPlayer?.TradeInventory is null)
        {
            return;
        }

        session.Send(TradePacket.TradeStatus(false));
        otherPlayer.Session?.Send(TradePacket.TradeStatus(false));
    }