+
+ // World directory
+ std::string world_path;
+ bool is_legacy_world = false;
+ if(commanded_world != ""){
+ world_path = commanded_world;
+ }
+ else{
+ // No specific world was commanded
+ // Check if the world is found from the default directory, and if
+ // not, see if the legacy world directory exists.
+ world_path = porting::path_user + DIR_DELIM + "server" + DIR_DELIM + "worlds" + DIR_DELIM + "world";
+ std::string legacy_world_path = porting::path_user+DIR_DELIM+".."+DIR_DELIM+"world";
+ if(!fs::PathExists(world_path) && fs::PathExists(legacy_world_path)){
+ errorstream<<"Warning: Using legacy world directory \""
+ <<legacy_world_path<<"\""<<std::endl;
+ world_path = legacy_world_path;
+ is_legacy_world = true;
+ }
+ }
+
+ // Gamespec
+ std::string world_gameid = getWorldGameId(world_path, is_legacy_world);
+ SubgameSpec gamespec = findSubgame(world_gameid);
+ if(commanded_gamespec.isValid() &&
+ commanded_gamespec.id != world_gameid){
+ errorstream<<"WARNING: Overriding gameid from \""
+ <<world_gameid<<"\" to \""
+ <<commanded_gamespec.id<<"\""<<std::endl;
+ gamespec = commanded_gamespec;
+ }
+
+ if(!gamespec.isValid()){
+ errorstream<<"Invalid gamespec. (world_gameid="
+ <<world_gameid<<")"<<std::endl;
+ return 1;
+ }