/// <summary> /// Constructor. /// Creates all the necessary objects and attches all initial event handlers. /// </summary> public Game() { highScore = LoadHighScore(); currentState = GameState.stop; Rows = new NumberHolder[Game.RowMax]; for(int i = 0; i < Rows.Length; ++i) { Rows[i] = new NumberHolder(NumberHolder.RowMax); Rows[i].ZeroSum += ZeroSum; } Columns = new NumberHolder[Game.ColMax]; for (int i = 0; i < Columns.Length; ++i) { Columns[i] = new NumberHolder(NumberHolder.ColMax); Columns[i].ZeroSum += ZeroSum; } LoadNumber += EmptyLoad; MoveNumber += EmptyLoad; GameOverEvent += GameOver; HighScoreUpdate += SaveHighScore; LevelUp += LevelUpCatch; Numbers = new List<Number>(); GenerateNextNumber(); }
/// <summary> /// End the current game. /// Sets up the game object for a new game. /// </summary> public void GameOver() { currentState = GameState.stop; foreach (NumberHolder nh in Columns) { for (int index = 0; index < nh.NumberCount; ++index) { if (nh[index] != null) { nh[index].CurrentState = NumberState.remove; } } } Rows = new NumberHolder[Game.RowMax]; for (int i = 0; i < Rows.Length; ++i) { Rows[i] = new NumberHolder(NumberHolder.RowMax); Rows[i].ZeroSum += ZeroSum; } Columns = new NumberHolder[Game.ColMax]; for (int i = 0; i < Columns.Length; ++i) { Columns[i] = new NumberHolder(NumberHolder.ColMax); Columns[i].ZeroSum += ZeroSum; } Numbers = new List<Number>(); CurrentNumber = null; NextNumber = null; if (score > highScore) { highScore = score; HighScoreUpdate(); } GenerateNextNumber(); }