public void GameSetup() { scoreboard = new ScoreboardRound(); foreach (Player player in playerList) { scoreboard.AddPlayer(player); } Random rand = new Random(); int r = rand.Next(100); MapDirector mapDirector; if (r < 30) { mapDirector = new MapDirector(new ConcreteMapBuilder()); } else if (r < 60) { mapDirector = new MapDirector(new DefaultMapBuilder()); } else { mapDirector = new MapDirector(new TeleporterMapBuilder()); } Map mapFromCache = Server.GetMapByName(mapDirector.getMap().mapName); //If the map was already generated, clone it //If the map was not generated before, generate it and put a copy of it in cache if (mapFromCache != null) { map = new MapAdapter(mapFromCache); } else { mapDirector.constructMap(); Map temp = mapDirector.getMap(); map = new MapAdapter(temp); Server.AddMap(temp); } Server.current = map.GetMapFacade(); }