Exemplo n.º 1
0
    private void CardPlayed(CardBoardPartView _playedCardBoardArea)
    {
        Debug.LogFormat("GameController::CardPlayed");
        playerViewByNumber[CurrentPlayer].RemoveCard(_playedCardBoardArea.Card);
        playerViewByNumber[CurrentPlayer].Enable(false);

        turnResultByPhase = game.PlayCard(CurrentPlayer, _playedCardBoardArea.Card.Model, _playedCardBoardArea.BoardPosition);

        AnimatorFSM.SetTrigger(nextStateTriggerId);
    }
Exemplo n.º 2
0
    public void OnPointerUp(PointerEventData eventData)
    {
        if (Interactable)
        {
            Animator.SetInteger(overPlayerIntId, (int)PlayerNumber.None);

            transform.localPosition = beforeDragPosition;

            if (currentAreaSelected != null)
            {
                currentAreaSelected.Card = this;
                currentAreaSelected      = null;
            }

            AudioManager.Instance.PlaySound(selectCardSound);
        }
    }
Exemplo n.º 3
0
    private void CardAnimationFinished(CardBoardPartView _cardTarget)
    {
        cardsRotationFinishedCount++;

        if (cardsRotationFinishedCount == cardsRotateCount)
        {
            cardsRotationFinishedCount = 0;
            cardsRotateCount           = 0;

            if (currentPhaseResult.comboCardList != null && currentPhaseResult.comboCardList.Count > 0)
            {
                Debug.LogFormat("GameController::CardAnimationFinished -> COMBO");
                SpecialRuleText comboRuleText = Instantiate(comboRuleTextPrefab, uiCanvas.transform);
                ProcessWonCardsList(currentPhaseResult.comboCardList.Dequeue());
            }
            else
            {
                AnimatorFSM.SetTrigger(nextStateTriggerId);
            }
        }
    }
Exemplo n.º 4
0
    public void OnDrag(PointerEventData eventData)
    {
        if (Interactable)
        {
            transform.position = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, zDistanceToCamera));

            List <RaycastResult> raycastResults = new List <RaycastResult>();
            PointerEventData     pointerData    = new PointerEventData(EventSystem.current);
            pointerData.position = Input.mousePosition;
            EventSystem.current.RaycastAll(pointerData, raycastResults);

            CardBoardPartView hitArea = null;
            foreach (RaycastResult raycastItem in raycastResults)
            {
                hitArea = raycastItem.gameObject.GetComponent <CardBoardPartView>();
                if (hitArea != null)
                {
                    break;
                }
            }

            if (currentAreaSelected != hitArea)
            {
                if (currentAreaSelected != null)
                {
                    currentAreaSelected.OnPointerExit(eventData);
                }

                currentAreaSelected = hitArea;

                if (currentAreaSelected != null)
                {
                    currentAreaSelected.OnPointerEnter(eventData);
                }
            }
        }
    }
Exemplo n.º 5
0
    private void IntroState()
    {
        GameRule?customGameRules = CustomGameHolder.NextGameRules;

        randomRules = randomRules || CustomGameHolder.IsRandomRules;

        if (randomRules && !CustomGameHolder.IsSuddenDeathNewGame)
        {
            activeGameRules = default(GameRule);

            float openRuleRandomValue = Random.value;
            if (openRuleRandomValue > 0.5)
            {
                activeGameRules |= GameRule.AllOpen;
            }
            else if (openRuleRandomValue > 0.25)
            {
                activeGameRules |= GameRule.ThreeOpen;
            }

            activeGameRules |= Random.value > 0.4 ? GameRule.Same : GameRule.None;
            activeGameRules |= Random.value > 0.4 ? GameRule.Plus : GameRule.None;

            float borderRuleRandomValue = Random.value;
            if (borderRuleRandomValue > 0.8)
            {
                activeGameRules |= GameRule.Borderless;
            }
            else if (borderRuleRandomValue > 0.6 && activeGameRules.HasFlag(GameRule.Same))
            {
                activeGameRules |= GameRule.SameWalls;
            }

            activeGameRules |= Random.value > 0.9 ? GameRule.Reversed : GameRule.None;
            activeGameRules |= Random.value > 0.9 ? GameRule.FallenAce : GameRule.None;

            activeGameRules |= Random.value > 0.45 ? GameRule.SuddenDeath : GameRule.None;
        }
        else if (customGameRules.HasValue)
        {
            activeGameRules = customGameRules.Value;
        }

        ruleBarHolder.Init(activeGameRules);
        game = new Game(cardsListArray, cardsPerPlayer, activeGameRules);

        playerOneView.Init(game.GetPlayerByNumber(PlayerNumber.One), false);
        playerOneView.OnHandReady += PlayerHandReady;

        playerTwoView.Init(game.GetPlayerByNumber(PlayerNumber.Two), false);
        playerTwoView.OnHandReady += PlayerHandReady;

        playerViewByNumber[PlayerNumber.One] = playerOneView;
        playerViewByNumber[PlayerNumber.Two] = playerTwoView;

        for (int positionX = 0; positionX < selectableAreasList.GetLength(0); positionX++)
        {
            for (int positionY = 0; positionY < selectableAreasList.GetLength(1); positionY++)
            {
                CardBoardPartView newSelectableArea = verticalListableAreasList[positionX][positionY];
                newSelectableArea.OnCardPlayed            += CardPlayed;
                newSelectableArea.OnCardAnimationFinished += CardAnimationFinished;
                newSelectableArea.BoardPosition            = new Vector2Int(positionX, positionY);
                selectableAreasList[positionX, positionY]  = newSelectableArea;
            }
        }

        currentPlayer = Random.Range(0, 2) < 1 ? PlayerNumber.One : PlayerNumber.Two;

        AudioManager.Instance.PlayGameMusic();
    }