Exemplo n.º 1
0
 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();
    }