void Load(Player player, Command cmd) { lock ( loadLock ) { if (world.loadInProgress || world.loadSendingInProgress) { player.Message("Loading already in progress, please wait."); return; } world.loadInProgress = true; } if (!player.Can(Permissions.SaveAndLoad)) { world.NoAccessMessage(player); world.loadInProgress = false; return; } string mapName = cmd.Next(); if (mapName == null) { player.Message("Syntax: " + Color.Help + "/load mapName"); world.loadInProgress = false; return; } string mapFileName = mapName + ".fcm"; if (!File.Exists(mapFileName)) { player.Message("No backup file \"" + mapName + "\" found."); world.loadInProgress = false; return; } Map newMap = Map.Load(world, mapFileName); if (newMap == null) { player.Message("Could not load \"" + mapFileName + "\". Check logfile for details."); world.loadInProgress = false; return; } if (newMap.widthX != world.map.widthX || newMap.widthY != world.map.widthY || newMap.height != world.map.height) { player.Message("Map sizes of \"" + mapName + "\" and the current map do not match."); world.loadInProgress = false; return; } world.log.Log("{0} is loading the map \"{1}\".", LogType.UserActivity, player.name, mapName); player.Message("Loading map \"" + mapName + "\"..."); world.BeginLockDown(); MapSenderParams param = new MapSenderParams() { map = newMap, player = player, world = world }; world.tasks.Add(MapSender.StreamLoad, param, true); }