[Fix] Flag bug

This commit is contained in:
2026-06-07 01:17:25 +07:00
parent 5a58c9031a
commit 492c1ea9f9
2 changed files with 18 additions and 52 deletions
+4 -50
View File
@@ -311,30 +311,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 1c906a10872edd04480e534703fc4fea, type: 3} m_Script: {fileID: 11500000, guid: 1c906a10872edd04480e534703fc4fea, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Minesweeper.Presentation.Views.GameView m_EditorClassIdentifier: Assembly-CSharp::Minesweeper.Presentation.Views.GameView
gameRoot: {fileID: 289057768}
pauseRoot: {fileID: 0}
resultRoot: {fileID: 0}
boardPanel: {fileID: 0}
gridLayoutGroup: {fileID: 0}
pauseButton: {fileID: 0}
restartButton: {fileID: 0}
resumeButton: {fileID: 0}
mainMenuButton: {fileID: 0}
resultRestartButton: {fileID: 0}
resultMainMenuButton: {fileID: 0}
resultText: {fileID: 0}
timerText: {fileID: 751542998}
mineText: {fileID: 805410199}
uiConfig: {fileID: 0}
boardInputEnabled: 1
currentRevealUnflaggedMines: 0
resizeRefreshPending: 0
currentBoardWidth: 0
currentBoardHeight: 0
currentContentPadding: 1
currentPixelsPerUnitMultiplier: 1
resizeStableAt: 0
lastObservedLayoutSize: {x: 0, y: 0}
--- !u!1 &519420028 --- !u!1 &519420028
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -556,28 +532,6 @@ Transform:
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &751542998 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 2799103337096245725, guid: 212298b6cdb61bb41bcf765ca9467ef2, type: 3}
m_PrefabInstance: {fileID: 1980798338579462618}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI
--- !u!114 &805410199 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 823287330887192061, guid: 212298b6cdb61bb41bcf765ca9467ef2, type: 3}
m_PrefabInstance: {fileID: 1980798338579462618}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI
--- !u!224 &1101876292 stripped --- !u!224 &1101876292 stripped
RectTransform: RectTransform:
m_CorrespondingSourceObject: {fileID: 3873756121358901088, guid: 212298b6cdb61bb41bcf765ca9467ef2, type: 3} m_CorrespondingSourceObject: {fileID: 3873756121358901088, guid: 212298b6cdb61bb41bcf765ca9467ef2, type: 3}
@@ -631,10 +585,10 @@ MonoBehaviour:
uiConfig: {fileID: 11400000, guid: c8b7785713c7c8b49b853f7e5028a4fa, type: 2} uiConfig: {fileID: 11400000, guid: c8b7785713c7c8b49b853f7e5028a4fa, type: 2}
contentRoot: {fileID: 1373940536} contentRoot: {fileID: 1373940536}
topPanelView: {fileID: 1101876296} topPanelView: {fileID: 1101876296}
mainMenuViewPrefab: {fileID: 0} mainMenuViewPrefab: {fileID: 5456992800552396061, guid: 66407cd7142d6a945b37ca8dc5e7c6b7, type: 3}
boardViewPrefab: {fileID: 0} boardViewPrefab: {fileID: -4096144217532421454, guid: 91c5885a4fbe47540abf4bfd814a32d0, type: 3}
pauseViewPrefab: {fileID: 0} pauseViewPrefab: {fileID: 7010459690024596299, guid: ec358f6fec19e3b469f516bd1ade70cd, type: 3}
resultViewPrefab: {fileID: 0} resultViewPrefab: {fileID: -2277025653673582644, guid: 73d5a09dc8885e64a8c20a68ea82c5dc, type: 3}
--- !u!4 &1287266282 --- !u!4 &1287266282
Transform: Transform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
+14 -2
View File
@@ -251,12 +251,13 @@ namespace Minesweeper.Core
while (queue.Count > 0) while (queue.Count > 0)
{ {
var cell = queue.Dequeue(); var cell = queue.Dequeue();
if (visited[cell.X, cell.Y] || cell.IsMine || cell.IsFlagged) if (visited[cell.X, cell.Y] || cell.IsMine)
{ {
continue; continue;
} }
visited[cell.X, cell.Y] = true; visited[cell.X, cell.Y] = true;
ClearFlag(cell);
OpenSafeCell(cell); OpenSafeCell(cell);
if (cell.NeighborMines != 0) if (cell.NeighborMines != 0)
@@ -274,7 +275,7 @@ namespace Minesweeper.Core
} }
var neighbor = cells[x, y]; var neighbor = cells[x, y];
if (!visited[x, y] && !neighbor.IsMine && !neighbor.IsFlagged && !neighbor.IsOpened) if (!visited[x, y] && !neighbor.IsMine && !neighbor.IsOpened)
{ {
queue.Enqueue(neighbor); queue.Enqueue(neighbor);
} }
@@ -295,6 +296,17 @@ namespace Minesweeper.Core
AddChangedCell(cell); AddChangedCell(cell);
} }
private void ClearFlag(CellData cell)
{
if (!cell.IsFlagged)
{
return;
}
cell.IsFlagged = false;
FlaggedCellsCount--;
}
private void AddChangedCell(CellData cell) private void AddChangedCell(CellData cell)
{ {
changedCells.Add(ToData(cell)); changedCells.Add(ToData(cell));