/// <summary> /// Set readonly property /// </summary> public void UpdateIsReadOnly() { // if all panels are locked readonly is true IsReadOnly = Panels.All(panel => (bool)TypeDescriptor.GetProperties(panel.Controls[0])["Locked"].GetValue(panel.Controls[0])); }
public void Reveal(int x, int y) { //1. Encontrar o painel var selectedPanel = Panels.First(panel => panel.X == x && panel.Y == y); //2. Apenas revelar se não estiver marcado if (!selectedPanel.IsFlagged) { var first = false; //3. Se não há nenhum painel revelado é o primeiro movimento if (Panels.All(panel => !panel.IsRevealed)) { //O primeiro movimento adiciona as minas FirstMove(x, y, rand); first = true; } //4. Spawnar cogumelo if (selectedPanel.IsMushroom) { coroutines.Start(SpawnMushroom(x, y, rand)); } //Revelar o painel selectedPanel.IsRevealed = true; selectedPanel.ShowSelection = false; //5. Checar se o painel clicado é mina if (selectedPanel.IsMine) { //Se o jogador não tiver mais chances terminar o jogo if (chances <= 0) { GameOver(); } else { chances--; } } //6. se o painel é um zero, revelar vizinhos em cascata if (!selectedPanel.IsMine && selectedPanel.AdjacentMines == 0) { RevealZeros(x, y); } //7. Adicionar Cogumelos se for o primeiro movimento if (first) { PlaceMushrooms(rand); } //8. se o movimento causar o fim do jogo, terminar o jogo if (!selectedPanel.IsMine) { CompletionCheck(); } } }