// Update is called once per frame void Update() { if (Started) { ClickedState Result = CheckCubes(); if (Result == ClickedState.Win) { //Debug.Log("Correct"); ++LevelHandler.GetComponent <LevelHandler>().Level; DeleteCubes(); GenerateCubes(); } else if (Result == ClickedState.Fail) { //Debug.Log("Incorrect"); if (LevelHandler.GetComponent <LevelHandler>().Level > 0) { --LevelHandler.GetComponent <LevelHandler>().Level; } DeleteCubes(); GenerateCubes(); } } }
/// <summary> /// Handles click event on the tile /// </summary> /// <param name="e">MouseEventArgs contining the mouse button pressed, location, press count and </param> public void Click(MouseEventArgs e) { if (state == ClickedState.unClicked && e.Button == MouseButtons.Left) // if state of mouse click is left mouse click { state = ClickedState.clicked; // state of the clicked state is click if (bombsNear == 0) // if bombs near is 0 { neighbours.ForEach( (Tile t) => { t.Click(new MouseEventArgs(MouseButtons.Left, 1, 0, 0, 0)); } ); } } else if (state == ClickedState.unClicked && e.Button == MouseButtons.Right) // if state of mouse click is right mouse click { state = ClickedState.flagged; // state is clicked and is flagged } else if (state == ClickedState.flagged && e.Button == MouseButtons.Right) // if state of mouse click is right mouse click on a flagged tile { state = ClickedState.unClicked; // state is unclicked and flag is removed } else if (state == ClickedState.clicked && e.Button == MouseButtons.Right) // if state of mouse click is right mouse click on a tile { // open up minefields int flagsNear = 0; // flags nearby is 0 neighbours.ForEach((Tile t) => { if (t.state == ClickedState.flagged) { flagsNear++; } }); // count how many flags are on the tiles surrounding this one if (flagsNear == bombsNear) // if number of flags is equailvalent to bombs { neighbours.ForEach((Tile t) => t.Click(new MouseEventArgs(MouseButtons.Left, 0, 0, 0, 0))); // open up more tiles } } }