Beispiel #1
0
    private void CreateGame()
    {
        Clear();

        animationQuery = new AnimationQuery(animationSettings);
        currentSession = new BubbleGame(gameSettings.GridSizeX,
                                        gameSettings.GridSizeY,
                                        gameSettings.StartingRowCount,
                                        gameSettings.RowsAtPerTurn,
                                        gameSettings.RowCrowdness);

        gridRenderer.transform.localPosition = new Vector3((gameSettings.GridSizeX - 1) / 2f, -(gameSettings.GridSizeY - 1) / 2f, 0.01f);
        gridRenderer.transform.localScale    = new Vector3(gameSettings.GridSizeX, gameSettings.GridSizeY);
        gridRenderer.material.SetVector("_Tiling", gridRenderer.transform.localScale);

        // Register outputs to the game.
        currentSession.GameEvents.OnActiveBallCreated     += ActiveBallCreated;
        currentSession.GameEvents.OnBubbleCombined        += BubbleCombined;
        currentSession.GameEvents.OnBubbleMixed           += BubbleMixed;
        currentSession.GameEvents.OnBubbleIsNowFree       += BubbleIsNowFree;
        currentSession.GameEvents.OnBubblePositionUpdate  += BubblePositionUpdate;
        currentSession.GameEvents.OnBubblePlacement       += BubblePlacement;
        currentSession.GameEvents.OnBubbleSpawned         += BubbleSpawned;
        currentSession.GameEvents.OnBubbleValueUpdate     += BubbleValueUpdate;
        currentSession.GameEvents.OnNextBallSpawned       += NextBallSpawned;
        currentSession.GameEvents.OnNextBallBecomeActive  += NextBallBecomeActive;
        currentSession.GameEvents.OnReadyForVisualization += ReadyForVisualization;
        currentSession.GameEvents.OnBubbleExploded        += BubbleExploded;

        // Bubble<-->GamePlayEvents
        currentSession.GameEvents.OnGameScoreUpdate += (int value) => { gamePlayEvents.OnScoreUpdate?.Invoke(value); };
        currentSession.GameEvents.OnGameFinished    += (int value) => {
            Debug.Log("OnGameFinished()");
            gamePlayEvents.OnGameplayStatusChange?.Invoke(false);
            gamePlayEvents.OnGameOver?.Invoke(value);
        };
        //

        gamePlayEvents.OnGameStarted?.Invoke();

        gamePlayEvents.OnScoreUpdate?.Invoke(0);

        currentSession.NextTurn();

        gamePlayEvents.OnGameplayStatusChange?.Invoke(true);
    }
Beispiel #2
0
    private void Clear()
    {
        if (currentSession != null)
        { /// Clear old game.
            StopAllCoroutines();

            foreach (var obj in spawneds)
            {
                obj.Value.gameObject.SetActive(false);
            }

            spawneds.Clear();

            currentSession.Dispose();

            currentSession = null;
        }
    }