public void HandleAction(GameAction action) { switch (action) { case GameAction.CoinFlip: OnCoinFlipped?.Invoke(this, new PlayerEventArgs(_gameState.CurrentPlayer)); break; case GameAction.PlayerMakeMove: OnPlayerBeginTurn?.Invoke(this, new PlayerEventArgs(_gameState.CurrentPlayer)); OnGetPlayerMove?.Invoke(this, new PlayerEventArgs(_gameState.CurrentPlayer)); //evaluate the move _evaluateMove(); OnPlayerEndTurn?.Invoke(this, new PlayerEventArgs(_gameState.CurrentPlayer)); break; case GameAction.GameOverCatGame: OnGameEnded?.Invoke(this, new GameStateEventArgs(_gameState)); break; case GameAction.GameOverPlayerWins: OnGameEnded?.Invoke(this, new GameStateEventArgs(_gameState)); break; } }
private IEnumerator <float> CPUTurnCoroutine() { OnPlayerEndTurn?.Invoke(this, new OnPlayerEndTurnArgs()); _Interaction.Locked = true; yield return(Timing.WaitForSeconds(4f)); foreach (var player in _CPUPlayers) { OnCPUStartTurn?.Invoke(this, new OnCPUStartTurnArgs(player)); player.PlayTurn(); yield return(Timing.WaitForSeconds(4f)); //todo: move to settings OnCPUEndTurn?.Invoke(this, new OnCPUEndTurnArgs(player)); } _Interaction.Locked = false; OnPlayerStartTurn?.Invoke(this, new OnPlayerStartTurnArgs()); }
public void OnInteraction(Card card, ICardCollection source) { if (!_IsInitialized || Locked) { return; } if (!_CurrentInteractionRule.CanInteract(source.Type)) { return; } _CurrentInteractionRule.Interact(card, source); if (_CurrentInteractionRule.NextRule == InteractionRules.InteractionRuleType.Default) { OnPlayerEndTurn?.Invoke(this, new OnPlayerEndTurnArgs()); } _CurrentInteractionRule = _RuleBook[_CurrentInteractionRule.NextRule]; }
public void CharactersTurn() { int amount = 0; foreach (var kvp in BoardManager.Instance.dict) { foreach (var thisChar in charBattle) { string color = thisChar.GetComponent <CharacterManager>().color.ToString().ToLower(); int damage = thisChar.GetComponent <CharacterManager>().damage; if (color == kvp.Key.ToLower()) { thisChar.GetComponent <ManaSystem>().IncreaseMana(kvp.Value.Count); amount += kvp.Value.Count * damage; } } } OnPlayerEndTurn?.Invoke(this, EventArgs.Empty); GameObject target = enemyBattle.Find(enemy => enemy.GetComponent <EnemyManager>().isSelected == true); target.GetComponent <EnemyManager>().healthSystem.TakeDamage(amount); Debug.Log("enemy " + target.name + " take " + amount + " damage"); }