Esempio n. 1
0
        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());
        }
Esempio n. 3
0
        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];
        }
Esempio n. 4
0
    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");
    }