public void InitGridWithRules(MainGameData gameData, Action <GridAnswer[]> completion) { rules = gameData.Ruleset; gridSquares = tileContainer.GetComponentsInChildren <GridSquareScript>(); targets = new List <GridSquareScript>(); //allSquares = new int[0]; currentSelection = null; completionCallback = completion; levelTitle.text = $"LEVEL {gameData.Level}"; int[] levelData = rules.levelData.Select(x => Int32.Parse(x.ToString())).ToArray(); print($"Level data count: {levelData.Length}"); if (levelData.Length == gridSquares.Length) { for (int i = 0; i < levelData.Length; i++) { bool isTarget = rules.targetIndexes.Contains(i); gridSquares[i].SetupGridSquare(i, levelData[i], isTarget, SquareSelected); if (isTarget) { targets.Add(gridSquares[i]); } } } keyboardController.SetKeyboardClickHandler(KeyboardInput); keyboardController.SetKeyboardEnabled(false); keyboardController.ShowKeyboard(); if (gameData.answers != null) { GridAnswer[] errors = gameData.answers.Where(x => x.correct == false).ToArray(); GridAnswer[] corrects = gameData.answers.Where(x => x.correct == true).ToArray(); if (errors.Length > 0) { StartCoroutine(ShowPreviousErrors(errors, ShowNextTarget)); if (corrects.Length == 0) { return; } } if (corrects.Length > 0) { StartCoroutine(ShowPreviousCorrects(corrects)); return; } } ShowNextTarget(); }
/// <summary> /// Fires when one game exits /// </summary> //public event GameExitHandler SessionExited; #endregion #region Unity callbacks public void SetupGame(MainGameData gameData) { currentSessionRuleset = gameData.Ruleset; // create & initialize gameplay = SceneActivationBehaviour <MainMenuActivator> .Instance.Gameplay; gameplay.Configure(gameData); // handlers gameplay.OnGameTimeChanged += GameTimeChangedHandler; gameplay.OnGameStarted += GameStartedHandler; gameplay.OnPaused += PausedHandler; gameplay.OnResumed += ResumedHandler; gameplay.OnGameOver += GameOverHandler; gameplay.OnGameQuit += GameQuitHandler; }
/// <summary> /// Fires when one game exits /// </summary> //public event GameExitHandler SessionExited; #endregion #region Unity callbacks public void SetupGame(MainGameData gameData) { currentSessionRuleset = gameData.Ruleset; // create & initialize gameplay = SceneActivationBehaviour <SPEGameSceneActivator> .Instance.Gameplay; //Instantiate(currentSessionRuleset.GameBoardPrefab); gameplay.Configure(gameData); // handlers gameplay.OnGameTimeChanged += GameTimeChangedHandler; gameplay.OnGameStarted += GameStartedHandler; gameplay.OnPaused += PausedHandler; gameplay.OnResumed += ResumedHandler; gameplay.OnGameOver += GameOverHandler; gameplay.OnGameQuit += GameQuitHandler; //gameplay.OnGameExit += GameExitHandler; //// go! //gameplay.StartSession(); //return gameplay; }
public void ConfigureCreator(MainGameData mainGameData) { gameData = mainGameData; gameBoard.InitCreatorGridWithRules(mainGameData.Ruleset, EndSession); }
public void ConfigureFtue(MainGameData mainGameData) { gameData = mainGameData; gameBoard.InitFtueGridWithRules(mainGameData, EndSession); //TODO: override end session??? }
/// <summary> /// Initialize the gameplay /// </summary> public void Configure(MainGameData mainGameData) { gameData = mainGameData; gameBoard.InitGridWithRules(mainGameData, EndSession); }
private void ResumedHandler(MainGameData gameData) { print($"[SESSION] Resumed"); SessionResumed?.Invoke(gameData); }
private void PausedHandler(MainGameData gameData) { print($"[SESSION] Paused"); SessionPaused?.Invoke(gameData); }
private void GameStartedHandler(MainGameData gameData) { print($"[SESSION] Started"); SessionStarted?.Invoke(gameData); }