/// <summary> /// Handles the card list logic. /// </summary> /// <param name="page">The page to build</param> private void ViewCardsPageInit(DialogPage page) { var model = GetDataModel <Model>(); var player = GetPC(); var playerId = GetObjectUUID(player); var dbPlayerTripleTriad = DB.Get <PlayerTripleTriad>(playerId) ?? new PlayerTripleTriad(); var availableCards = TripleTriad.GetAllCardsAtLevel(model.SelectedCardLevel); page.Header = $"{ColorToken.Green("Level: ")} {model.SelectedCardLevel}\n\n" + $"The following is the list of cards available at this level. Cards in {ColorToken.Green("GREEN")} have been acquired. Those in {ColorToken.Red("RED")} have not. Only one card per type can be collected.\n\n" + "Please select a card."; foreach (var(type, card) in availableCards) { if (!card.IsVisibleInMenu) { continue; } var option = dbPlayerTripleTriad.AvailableCards.ContainsKey(type) ? ColorToken.Green(card.Name) : ColorToken.Red(card.Name); page.AddResponse(option, () => { model.SelectedCardType = type; SetLocalInt(player, "CARD_MENU_SELECTED_CARD_ID", (int)model.SelectedCardType); ChangePage(ViewCardDetailsPageId); }); } }
/// <summary> /// Handles the card selection logic for deck building. /// This differs from the card viewer in that cards show based on which cards the player owns. /// </summary> /// <param name="page">The page to build.</param> private void DeckCardSelectionListPageInit(DialogPage page) { var player = GetPC(); var playerId = GetObjectUUID(player); var dbPlayerTripleTriad = DB.Get <PlayerTripleTriad>(playerId); var model = GetDataModel <Model>(); var cardsAtLevel = TripleTriad.GetAllCardsAtLevel(model.SelectedCardLevel); page.Header = $"{ColorToken.Green("Level: ")} {model.SelectedCardLevel}\n\n" + "Please select cards to add to this deck."; if (model.CurrentCardNumber > 1) { page.AddResponse(ColorToken.Red("Remove Card"), RemoveTopMostCard); } foreach (var(cardType, card) in cardsAtLevel) { if (!card.IsVisibleInMenu) { continue; } // Only one of each card type can be added to decks. if (IsInActiveDeck(cardType)) { continue; } if (dbPlayerTripleTriad.AvailableCards.ContainsKey(cardType)) { page.AddResponse($"Add: {card.Name}", () => { SetLocalInt(player, $"CARD_MENU_DECK_CARD_{model.CurrentCardNumber}", (int)cardType); model.CurrentCardNumber++; // This was the last card. if (model.CurrentCardNumber > 5) { ChangePage(DeckCardSelectionConfirmDeckPageId); } }); } } }