private void OnStartSelectingOpponentPokemon(object message, NetworkId messageId) { selectedCards.Clear(); var selectOpponentMessage = ((SelectOpponentPokemonMessage)message); var maxCount = selectOpponentMessage.MaxCount; var minCount = selectOpponentMessage.MinCount; minSelectedCardCount = minCount; maxSelectedCardCount = maxCount; if (selectOpponentMessage.Filter != null) { currentDeckFilters.Add(selectOpponentMessage.Filter); } SpecialState = SpecialGameState.SelectingOpponentsPokemon; EnableButtons(); if (!string.IsNullOrEmpty(selectOpponentMessage.Info)) { infoText.text = selectOpponentMessage.Info; } else { var countString = maxCount == minCount?maxCount.ToString() : "up to " + maxCount; infoText.text = $"Select {countString} of your opponents Pokémon"; } }
private void OnStartEnterAmount(object message, NetworkId messageId) { SpecialState = SpecialGameState.EnteringAmount; EnterAmountPanel.gameObject.SetActive(true); EnterAmountPanel.Init((AskForAmountMessage)message); EnableButtons(); }
internal void StartAttachingEnergy(EnergyCard card) { SpecialState = SpecialGameState.AttachingEnergyToPokemon; currentEnergyCard = card; infoText.text = "Select a Pokémon to attach your energy to"; EnableButtons(); }
internal void StartEvolving(PokemonCard card) { SpecialState = SpecialGameState.SelectPokemonToEvolveOn; currentEvolvingCard = card; infoText.text = "Select a Pokémon to evolve"; EnableButtons(); }
private void OnYesNoMessage(object message, NetworkId messageId) { infoText.text = ((YesNoMessage)message).Message; SpecialState = SpecialGameState.SelectingYesNo; YesButton.SetActive(true); NoButton.SetActive(true); }
private void OnBeginSelectStatus(object message, NetworkId arg2) { SpecialState = SpecialGameState.SelectingStatus; EnableButtons(); SelectStatusPanel.gameObject.SetActive(true); SelectStatusPanel.Init((PickStatusMessage)message); }
private void OnBeginSelectYourPokemon(object message, NetworkId messageId) { var selectMessage = (SelectFromYourPokemonMessage)message; SpecialState = SpecialGameState.SelectPokemonMatchingFilter; EnableButtons(); minSelectedCardCount = 1; maxSelectedCardCount = 1; if (!string.IsNullOrWhiteSpace(selectMessage.Info)) { infoText.text = selectMessage.Info; currentDeckFilters.Add(new PokemonOwnerAndTypeFilter(myId)); } else if (selectMessage.TargetTypes.Any()) { var typeText = string.Join(" ", selectMessage.TargetTypes.Select(type => Enum.GetName(typeof(EnergyTypes), type))); infoText.text = $"Select one of your {typeText} Pokémon"; currentDeckFilters.Add(new PokemonOwnerAndTypeFilter(myId, selectMessage.TargetTypes[0])); } else { infoText.text = "Select one of your Pokémon"; currentDeckFilters.Add(new PokemonOwnerAndTypeFilter(myId)); } if (selectMessage.Filter != null) { currentDeckFilters.Add(selectMessage.Filter); } }
public void OnCancelClick() { SpecialState = SpecialGameState.None; selectFromListPanel.SetActive(false); if (IsMyTurn) { infoText.text = "Your turn!"; } else { infoText.text = "Opponent's turn!"; } foreach (var card in selectedCards) { ToggleCardSelected(GetCardRendererById(card.Id)); } selectedCards.Clear(); currentDeckFilters.Clear(); currentEnergyCard = null; currentEvolvingCard = null; EnableButtons(); }
private void OnStartDiscardCards(object message, NetworkId messageId) { var discardMessage = ((DiscardCardsMessage)message); selectedCards.Clear(); SpecialState = SpecialGameState.DiscardingCards; minSelectedCardCount = discardMessage.MinCount; maxSelectedCardCount = discardMessage.Count; currentDeckFilters.AddRange(discardMessage.Filters); EnableButtons(); if (minSelectedCardCount > 1) { doneButton.SetActive(true); } if (!string.IsNullOrEmpty(discardMessage.Info)) { infoText.text = discardMessage.Info; } else if (minSelectedCardCount != maxSelectedCardCount) { string cardsText = maxSelectedCardCount > 1 ? "cards" : "card"; infoText.text = $"Discard up to {maxSelectedCardCount} {cardsText} from your hand"; } else { string cardsText = minSelectedCardCount > 1 ? "cards" : "card"; infoText.text = $"Discard {minSelectedCardCount} {cardsText} from your hand"; } }
internal void StartRetreating(PokemonCard pokemonCard) { var totalAttachedEnergy = pokemonCard.AttachedEnergy.Sum(energy => energy.GetEnergry().Amount); int retreatCost = Math.Max(pokemonCard.RetreatCost + gameField.GetRetreatCostModified(), 0); if (retreatCost == 0) { infoText.text = "Select new active Pokémon"; SpecialState = SpecialGameState.SelectingRetreatTarget; selectedCards.Clear(); } else if (totalAttachedEnergy == retreatCost) { infoText.text = "Select new active Pokémon"; SpecialState = SpecialGameState.SelectingRetreatTarget; selectedCards.Clear(); selectedCards.AddRange(pokemonCard.AttachedEnergy); } else { infoText.text = "Pick energy to use for retreat"; SpecialState = SpecialGameState.SelectEnergyToRetreat; selectedCards.Clear(); selectFromListPanel.SetActive(true); selectFromListPanel.GetComponent <SelectFromListPanel>().InitEnergyCountSelect(pokemonCard.AttachedEnergy, pokemonCard.RetreatCost); } EnableButtons(); }
public void OnAttackSelected(Attack attack) { selectAttackPanel.GetComponentInChildren <VerticalLayoutGroup>().gameObject.DestroyAllChildren(); selectAttackPanel.SetActive(false); SpecialState = SpecialGameState.None; NetworkManager.Instance.SendToServer(new AttackMessage(attack), true); }
internal void SelectedEnergyForRetreat(List <Card> payedEnergy) { infoText.text = "Select new active Pokémon"; SpecialState = SpecialGameState.SelectingRetreatTarget; selectedCards.Clear(); selectedCards.AddRange(payedEnergy); EnableButtons(); }
private void OnStartPickPrize(object message, NetworkId messageId) { infoText.text = "Select 1 prize card"; SpecialState = SpecialGameState.SelectingPrize; selectFromListPanel.SetActive(true); selectFromListPanel.GetComponent <SelectFromListPanel>().Init((SelectPrizeCardsMessage)message, Player.PrizeCards); EnableButtons(); }
private void OnStartSelectColor(object message, NetworkId messageId) { var colorMessage = (SelectColorMessage)message; selectColorPanel.gameObject.SetActive(true); selectColorPanel.Init(colorMessage); SpecialState = SpecialGameState.SelectingColor; }
public void OnStatusSelected(StatusEffect status) { NetworkManager.Instance.SendToServer(new StatusEffectMessage() { StatusEffect = status }, true); SpecialState = SpecialGameState.None; EnableButtons(); }
public void OnNoClicked() { SpecialState = SpecialGameState.None; NetworkManager.Instance.SendToServer(new YesNoMessage { AnsweredYes = false }, true); YesButton.SetActive(false); NoButton.SetActive(false); }
internal void OnEnergyTypeClicked(EnergyTypes energyType) { if (SpecialState == SpecialGameState.SelectingColor) { SpecialState = SpecialGameState.None; NetworkManager.Instance.SendToServer(new SelectColorMessage(energyType), true); selectColorPanel.gameObject.SetActive(false); EnableButtons(); } }
private void OnCardsRevealed(object message, NetworkId arg2) { var revealMessage = (RevealCardsMessage)message; NetworkManager.Instance.RespondingTo = arg2; SpecialState = SpecialGameState.LookingAtRevealedCards; selectFromListPanel.SetActive(true); selectFromListPanel.GetComponent <SelectFromListPanel>().InitView(revealMessage.Cards); infoText.text = "Look at the revealed cards!"; EnableButtons(); }
private void OnDeckSearch(object message, NetworkId messageId) { var deckSearch = (DeckSearchMessage)message; minSelectedCardCount = deckSearch.CardCount; maxSelectedCardCount = minSelectedCardCount; SpecialState = SpecialGameState.SelectingFromList; selectFromListPanel.SetActive(true); selectFromListPanel.GetComponent <SelectFromListPanel>().Init(deckSearch); EnableButtons(); }
private void OnRetreatTargetSelected(CardRenderer clickedCard) { if (clickedCard.card.Id.Equals(Player.ActivePokemonCard.Id)) { return; } SpecialState = SpecialGameState.None; NetworkManager.Instance.gameService.RetreatPokemon(gameField.Id, clickedCard.card.Id, selectedCards.Select(card => card.Id).ToList()); selectedCards.Clear(); EnableButtons(); }
private void OnStartPickFromList(object message, NetworkId messageId) { var pickFromListMessage = (PickFromListMessage)message; SpecialState = SpecialGameState.SelectingFromList; selectFromListPanel.SetActive(true); selectFromListPanel.GetComponent <SelectFromListPanel>().Init(pickFromListMessage); if (!string.IsNullOrEmpty(pickFromListMessage.Info)) { infoText.text = pickFromListMessage.Info; } EnableButtons(); }
private void OnStartAttachingEnergyBench(object message, NetworkId messageId) { energyCardsToAttach.Clear(); SpecialState = SpecialGameState.AttachingEnergyToBenchedPokemon; EnableButtons(); var realMessage = (AttachEnergyCardsToBenchMessage)message; foreach (var card in realMessage.EnergyCards) { energyCardsToAttach.Enqueue(card); } infoText.text = $"Select one of your benched Pokémon to attach {realMessage.EnergyCards.First().GetName()} to"; }
private void TryEvolvePokemon(CardRenderer cardRenderer) { PokemonCard pokemon = cardRenderer.card as PokemonCard; if (pokemon == null) { return; } NetworkManager.Instance.gameService.EvolvePokemon(gameField.Id, pokemon.Id, currentEvolvingCard.Id); currentEvolvingCard = null; SpecialState = SpecialGameState.None; infoText.text = string.Empty; EnableButtons(); }
private void OnTryAttachEnergy(CardRenderer cardRenderer) { PokemonCard pokemon = cardRenderer.card as PokemonCard; if (pokemon == null || Player.Hand.Contains(pokemon) || !pokemon.Owner.Id.Equals(myId)) { return; } NetworkManager.Instance.gameService.AttachEnergy(gameField.Id, pokemon.Id, currentEnergyCard.Id); currentEnergyCard = null; SpecialState = SpecialGameState.None; infoText.text = string.Empty; EnableButtons(); }
private void OnStartSelectAttack(object message, NetworkId messageId) { SpecialState = SpecialGameState.SelectingAttack; var selectAttackMessage = (SelectAttackMessage)message; selectAttackPanel.SetActive(true); var parent = selectAttackPanel.GetComponentInChildren <VerticalLayoutGroup>().gameObject; EnableButtons(); foreach (var attack in selectAttackMessage.AvailableAttacks) { var buttonObject = Instantiate(attackButtonPrefab, parent.transform); buttonObject.GetComponentInChildren <Text>().text = attack.Name; buttonObject.GetComponent <Button>().onClick.AddListener(() => { OnAttackSelected(attack); }); } }
private void OnSelectPokemonWithFilter(CardRenderer clickedCard) { if (currentDeckFilters == null || currentDeckFilters.All(f => f.IsCardValid(clickedCard.card))) { if (Player.Hand.Contains(clickedCard.card)) { return; } else if (minSelectedCardCount == 1 && maxSelectedCardCount == 1) { var message = new CardListMessage(new[] { clickedCard.card.Id }.ToList()); NetworkManager.Instance.SendToServer(message, true); SpecialState = SpecialGameState.None; infoText.text = string.Empty; currentDeckFilters.Clear(); return; } ToggleCardSelected(clickedCard); } }
public void OnGameUpdated(object message, NetworkId messageId) { var gameMessage = message is GameFieldMessage ? ((GameFieldMessage)message).Game : (GameField)message; Debug.Log("Game updated, handling message"); GameFieldState oldState = gameField.GameState; gameField = gameMessage; if (gameField.GameState == GameFieldState.WaitingForConnection) { return; } IsMyTurn = gameField.ActivePlayer.Id.Equals(myId); SpecialState = SpecialGameState.None; selectColorPanel.gameObject.SetActive(false); selectedCards.Clear(); selectFromListPanel.SetActive(false); SetInfoAndEnableButtons(); Player me = gameField.Players.First(p => p.Id.Equals(myId)); Player opponent = gameField.Players.First(p => !p.Id.Equals(myId)); playerHand.SetHand(me.Hand); SetActivePokemon(playerActivePokemon, me.ActivePokemonCard); SetActivePokemon(opponentActivePokemon, opponent.ActivePokemonCard); SetBenchedPokemon(playerBench, me.BenchedPokemon); SetBenchedPokemon(opponentBench, opponent.BenchedPokemon); stadiumCard.SetCard(gameField.StadiumCard, false, false); EnableButtons(); }
public void DoneButtonClicked() { if (gameField.GameState == GameFieldState.GameOver) { EnableButtons(); SceneManager.LoadScene("MainMenu"); return; } if (gameField.GameState == GameFieldState.BothSelectingBench) { NetworkManager.Instance.gameService.AddToBench(gameField.Id, myId, selectedCards.OfType <PokemonCard>().Select(card => card.Id).ToList()); selectedCards.Clear(); } else if (SpecialState == SpecialGameState.SelectingFromList) { var message = new CardListMessage(selectedCards.Select(card => card.Id).ToList()); NetworkManager.Instance.SendToServer(message, true); SpecialState = SpecialGameState.None; infoText.text = string.Empty; } else if (SpecialState == SpecialGameState.LookingAtRevealedCards) { NetworkManager.Instance.RespondingTo = null; return; } else if (SpecialState == SpecialGameState.SelectingOpponentsPokemon || SpecialState == SpecialGameState.SelectPokemonMatchingFilter) { if (selectedCards.Count < minSelectedCardCount || selectedCards.Count > maxSelectedCardCount) { return; } foreach (var selectedCard in selectedCards) { GetCardRendererById(selectedCard.Id).SetSelected(false); } var message = new CardListMessage(selectedCards.Select(card => card.Id).ToList()); NetworkManager.Instance.SendToServer(message, true); SpecialState = SpecialGameState.None; infoText.text = string.Empty; currentDeckFilters.Clear(); } else if (SpecialState == SpecialGameState.SelectingOpponentsBenchedPokemon || SpecialState == SpecialGameState.SelectingYourBenchedPokemon || SpecialState == SpecialGameState.DiscardingCards) { if (selectedCards.Count < minSelectedCardCount || selectedCards.Count > maxSelectedCardCount) { return; } foreach (var selectedCard in selectedCards) { GetCardRendererById(selectedCard.Id).SetSelected(false); } var message = new CardListMessage(selectedCards.Select(card => card.Id).ToList()); NetworkManager.Instance.SendToServer(message, true); SpecialState = SpecialGameState.None; infoText.text = string.Empty; selectedCards.Clear(); currentDeckFilters.Clear(); } NetworkManager.Instance.RespondingTo = null; EnableButtons(); currentDeckFilters.Clear(); }
internal void OnCardPicked() { SpecialState = SpecialGameState.None; }