public void Save(BinaryWriter writer) { GameSave.WriteVector3(writer, Camera.CameraPos); writer.Write(Camera.Rotation); writer.Write(ExitRoom.X); writer.Write(ExitRoom.Y); int xsize = Visited.GetLength(0); int ysize = Visited.GetLength(1); writer.Write(xsize); writer.Write(ysize); for (int i = 0; i < xsize; i++) { for (int j = 0; j < ysize; j++) { writer.Write(Visited[i, j]); for (int k = 0; k < 4; k++) { writer.Write(CorridorLayout[i, j, k]); } Collectible.Type?type = Collectibles[i, j]; writer.Write(type == null ? -1 : (int)type.Value); } } writer.Write(zones.Count); foreach (Zone zone in zones) { zone.Save(writer); } writer.Write(gameObjects.Count); foreach (GameObject gameObject in gameObjects) { gameObject.Save(writer); } obstacles.Save(writer); }