/// <summary> /// /// Create a new player deck /// /// </summary> public DeckData CreatePlayerDeck(DeckData deckTemplate, string deckName, int?campaignId = null) { //Generate the ID of the deck. Takes the last deck id in the list and adds one to it var newId = 0; if (PlayerDeckList.Count > 0) { newId = PlayerDeckList.LastOrDefault().Id.Value + 1; } //Adds the deck to the list var newDeck = new DeckData(deckTemplate) { Id = newId, Name = deckName, }; PlayerDeckList.Add(newDeck); if (campaignId.HasValue) { newDeck.CampaignTracker = new CampaignProgression(newDeck.Id.Value, campaignId.Value); } //Save decks to file SaveDecks(); return(newDeck); }
private void Receiver_OnReceived(string action, string data) { switch (action) { case "BattleReady": Dispatcher.Invoke(() => { EnemyDeckList.Clear(); }); break; case "Load": Sender.Initialize(int.Parse(data)); Sender.Send($"Setting:{Settings.ToString()}"); break; case "EnemyPlay": case "EnemyAdd": Dispatcher.Invoke(() => { EnemyDeckList.Add(CardData.Parse(data, action == "EnemyPlay" ? 1 : -1)); }); break; case "PlayerDeck": var cardList = new List <CardData>(); var cards = data.Split('\n'); foreach (var card in cards) { cardList.Add(CardData.Parse(card)); } Dispatcher.Invoke(() => { PlayerDeckList.Clear(); PlayerDeckList.Add(cardList); }); break; case "PlayerDraw": Dispatcher.Invoke(() => { PlayerDeckList.Add(CardData.Parse(data, -1)); }); break; case "ReplayDetail": Dispatcher.Invoke(() => { ReplayGrid.DataContext = ReplayData.Parse(data); }); break; } Dispatcher.Invoke(() => { LogText.Text = $"{action}:{data}\n{LogText.Text}"; }); }
/// <summary> /// /// Removes a player deck from the list /// /// </summary> public void DeletePlayerDeck(DeckData deck) { PlayerDeckList.Remove(deck); //Resets the deck indexes for the remaining decks for (int deckIndex = 0; deckIndex < PlayerDeckList.Count; deckIndex++) { PlayerDeckList[deckIndex].Id = deckIndex; } SaveDecks(); }
/// <summary> /// /// Gets a list of player decks based on whether it is for a campaign or not /// /// </summary> public List <DeckData> GetPlayerDecks(bool isCampaign = false) { //Note that if is campaign return(PlayerDeckList.Where(x => x.IsCampaign == isCampaign && (!isCampaign || isCampaign && !x.CampaignTracker.CompletedCampaign)).ToList()); }
/// <summary> /// /// Gets a player deck of a particular ID /// /// </summary> public DeckData GetPlayerDeck(int id) { return(PlayerDeckList.FirstOrDefault(x => x.Id == id)); }