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"); }
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"); }