public int SimulateCommands(List<VMArchitectureCommand> commands, bool visualChange)
{
int cost;
if (commands.Count == 0)
{
if (visualChange)
{
//direct copy, no changes to make
WorldUI.Walls = Walls;
WorldUI.WallsAt = WallsAt;
WorldUI.Floors = Floors;
}
return 0;
}
else
{
RealMode = false;
var oldWalls = Walls;
var oldWallsAt = WallsAt;
var oldFloors = Floors;
WallsAt = new List<int>[Stories];
for (int i = 0; i < Stories; i++)
{
Array.Copy(Floors[i], VisFloors[i], Floors[i].Length);
Array.Copy(Walls[i], VisWalls[i], Walls[i].Length);
WallsAt[i] = new List<int>(oldWallsAt[i]);
}
Floors = VisFloors;
Walls = VisWalls;
cost = RunCommands(commands, visualChange);
if (visualChange)
{
//upload modified walls to blueprint
WorldUI.Walls = Walls;
WorldUI.WallsAt = WallsAt;
WorldUI.Floors = Floors;
}
Floors = oldFloors;
Walls = oldWalls;
WallsAt = oldWallsAt;
RealMode = true;
}
return cost;
}