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