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); }
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); } }
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); } } }
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); } } } }
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(); }