/// <summary> /// Adjust player money and initialize card effects according to the players ChosenCards /// </summary> private void InitializeCardEffects() { if (Player1.ChosenCard == null || Player2.ChosenCard == null) { throw new Exception("Called InitializeCardEffects() without both players having chosen a card."); } // Reduce money of players according to card costs Player1.Money -= Player1.ChosenCard.Cost; Player2.Money -= Player2.ChosenCard.Cost; // Update Player bar to show new money if (Visual) { MatchUI.UpdatePlayerBar(); } // Queue actions of the chosen cards (and show chosen cards if visual) if (Visual) { Effects.Enqueue(() => { VisualActions.Add(new VA_ShowChosenCards(Player1, Player1.ChosenCard, MatchUI)); }); } Effects.Enqueue(() => { Player1.ChosenCard.Action(this, Player1, Player2); }); if (Visual) { Effects.Enqueue(() => { VisualActions.Add(new VA_ShowChosenCards(Player2, Player2.ChosenCard, MatchUI)); }); } Effects.Enqueue(() => { Player2.ChosenCard.Action(this, Player2, Player1); }); }
public void StartMatch(VisualPlayer v_player = null, VisualMinion v_minion = null, int visualBoardHeight = 0, MatchUI matchUI = null) { V_Player = v_player; V_Minion = v_minion; VisualBoardHeight = visualBoardHeight; if (Visual) { // UI MatchUI = matchUI; MatchUI.Match = this; MatchUI.UpdatePlayerBar(); MatchUI.UpdateTurnText(); if (MatchType == MatchType.AI_vs_AI) { MatchUI.UpdatePlayerGenomes(); } // Summon Players Player1.Visual = GameObject.Instantiate(V_Player, new Vector3(0, 0, -(VisualBoardHeight / 2)), Quaternion.identity); Player2.Visual = GameObject.Instantiate(V_Player, new Vector3(0, 0, VisualBoardHeight / 2), Quaternion.identity); Player1.Color = PlayerColor; Player2.Color = PlayerColor; VisualActions.Add(new VA_SummonPlayer(Player1.Visual, PlayerColor)); VisualActions.Add(new VA_SummonPlayer(Player2.Visual, PlayerColor)); } // Let's go Phase = MatchPhase.GameReady; }