public override void Undo() { _recreateClustersCommand.Undo(); while (_floodClusterCommands.Count > 0) { _floodClusterCommands.Pop().Undo(); } while (_pumpWaterCommands.Count > 0) { _pumpWaterCommands.Pop().Undo(); } _floodWaterTilesCommand.Undo(); }
public override void Execute() { WaterClusterManager.Instance.ClearPossibleFloodTiles(); FloodWaterTilesCommand temporaryFloodCommand = new FloodWaterTilesCommand(); temporaryFloodCommand.Execute(); foreach (WaterCluster cluster in WaterClusterManager.Instance.clusters) { cluster.RecountFloodLevel(); if (cluster.FloodLevel >= WaterClusterManager.floodThreshold) { int neighboursToFlood = cluster.FloodLevel / WaterClusterManager.floodThreshold; for (int i = 0; i < neighboursToFlood; i++) { WaterClusterManager.Instance.RegisterRandomFloodableTile(cluster); } } } temporaryFloodCommand.Undo(); }