예제 #1
0
        public static void HandleDeckDelete(object packet, Session session)
        {
            var packetDeckDeleteCli = (PacketDeckDelete)packet;

            var deck = session.Player.GetDeck(packetDeckDeleteCli.Name);
            if (deck == null)
            {
                LogManager.Write("Player", "Player {0} requested deletion of non existant deck {1}!",
                    session.Player.Id, packetDeckDeleteCli.Name);
                return;
            }

            session.Player.Decks.Remove(deck);
            deck.Delete();

            session.SendOkPacket("DeckDelete");
        }
예제 #2
0
        public static void HandleDeckSave(object packet, Session session)
        {
            if (session.Player.ValidatedDeck.Count == 0)
            {
                LogManager.Write("Player", "Player {0} tried to save a deck without validating it!", session.Player.Id);
                return;
            }

            // scrolls sent are completly ignored by server, saved scrolls from DeckValidate are used instead
            var packetDeckSaveCli = (PacketDeckSave)packet;

            var deck = session.Player.GetDeck(packetDeckSaveCli.Name);
            if (deck != null)
            {
                // update current deck
                deck.Scrolls.Clear();
                foreach (var scrollId in session.Player.ValidatedDeck)
                    deck.Scrolls.Add(session.Player.GetScroll(scrollId));

                deck.Timestamp = (ulong)DateTime.UtcNow.Ticks;
                deck.CalculateResources();
                deck.Save();
            }
            else
            {
                // create new deck
                var newDeck = new Deck(session.Player, AssetManager.GetNewDeckInstanceId(), packetDeckSaveCli.Name,
                    (ulong)DateTime.UtcNow.Ticks, DeckFlags.None);

                foreach (var scrollId in session.Player.ValidatedDeck)
                    newDeck.Scrolls.Add(session.Player.GetScroll(scrollId));

                newDeck.CalculateResources();
                newDeck.Save();

                session.Player.Decks.Add(newDeck);
            }

            session.Player.ValidatedDeck.Clear();
            session.SendOkPacket("DeckSave");
        }