void load_terrain( JsonObject &jo, const std::string &src ) { if( terrain_data.empty() ) { // @todo: This shouldn't live here terrain_data.insert( null_terrain_t() ); } terrain_data.load( jo, src ); }
void load_terrain(JsonObject &jsobj) { if( terrain_data.empty() ) { // todo@ This shouldn't live here terrain_data.insert( null_terrain_t() ); } terrain_data.load( jsobj ); }
void load_terrain(JsonObject &jsobj) { if ( terlist.empty() ) { ter_t new_null = null_terrain_t(); termap[new_null.id] = new_null; terlist.push_back(new_null); } ter_t new_terrain; new_terrain.id = jsobj.get_string("id"); if ( new_terrain.id == "t_null" ) { return; } new_terrain.name = _(jsobj.get_string("name").c_str()); //Special case for the LINE_ symbols std::string symbol = jsobj.get_string("symbol"); if("LINE_XOXO" == symbol) { new_terrain.sym = LINE_XOXO; } else if("LINE_OXOX" == symbol) { new_terrain.sym = LINE_OXOX; } else { new_terrain.sym = symbol.c_str()[0]; } new_terrain.color = color_from_string(jsobj.get_string("color")); new_terrain.movecost = jsobj.get_int("move_cost"); if(jsobj.has_member("trap")) { // Store the string representation of the trap id. // Overwrites the trap field in set_trap_ids() once ids are assigned.. new_terrain.trap_id_str = jsobj.get_string("trap"); } new_terrain.trap = tr_null; new_terrain.max_volume = jsobj.get_int("max_volume", MAX_VOLUME_IN_SQUARE); new_terrain.transparent = false; new_terrain.bitflags = 0; JsonArray flags = jsobj.get_array("flags"); while(flags.has_more()) { new_terrain.set_flag(flags.next_string()); } if(jsobj.has_member("examine_action")) { std::string function_name = jsobj.get_string("examine_action"); new_terrain.examine = iexamine_function_from_string(function_name); } else { //If not specified, default to no action new_terrain.examine = iexamine_function_from_string("none"); } //if the terrain has something harvestable it will have a product & season to be harvested in the json if (jsobj.has_member("harvestable")) { new_terrain.harvestable = jsobj.get_string("harvestable"); if (jsobj.get_string("harvest_season") == "SPRING") {new_terrain.harvest_season = 0;} //convert the season to int for calendar compare if (jsobj.get_string("harvest_season") == "SUMMER") {new_terrain.harvest_season = 1;} if (jsobj.get_string("harvest_season") == "AUTUMN") {new_terrain.harvest_season = 2;} if (jsobj.get_string("harvest_season") == "WINTER") {new_terrain.harvest_season = 3;} } new_terrain.open = ""; if ( jsobj.has_member("open") ) { new_terrain.open = jsobj.get_string("open"); } new_terrain.close = ""; if ( jsobj.has_member("close") ) { new_terrain.close = jsobj.get_string("close"); } new_terrain.bash.load(jsobj, "bash", false); new_terrain.deconstruct.load(jsobj, "deconstruct", false); new_terrain.loadid=terlist.size(); termap[new_terrain.id]=new_terrain; terlist.push_back(new_terrain); }
void load_terrain(JsonObject &jsobj) { if ( terlist.empty() ) { ter_t new_null = null_terrain_t(); termap[new_null.id] = new_null; terlist.push_back(new_null); } ter_t new_terrain; new_terrain.id = jsobj.get_string("id"); if ( new_terrain.id == "t_null" ) { return; } new_terrain.name = _(jsobj.get_string("name").c_str()); //Special case for the LINE_ symbols std::string symbol = jsobj.get_string("symbol"); if("LINE_XOXO" == symbol) { new_terrain.sym = LINE_XOXO; } else if("LINE_OXOX" == symbol) { new_terrain.sym = LINE_OXOX; } else { new_terrain.sym = symbol.c_str()[0]; } new_terrain.color = color_from_string(jsobj.get_string("color")); new_terrain.movecost = jsobj.get_int("move_cost"); if(jsobj.has_member("trap")) { // Store the string representation of the trap id. // Overwrites the trap field in set_trap_ids() once ids are assigned.. new_terrain.trap_id_str = jsobj.get_string("trap"); } new_terrain.trap = tr_null; new_terrain.transparent = false; new_terrain.bitflags = 0; JsonArray flags = jsobj.get_array("flags"); while(flags.has_more()) { new_terrain.set_flag(flags.next_string()); } if(jsobj.has_member("examine_action")) { std::string function_name = jsobj.get_string("examine_action"); new_terrain.examine = iexamine_function_from_string(function_name); } else { //If not specified, default to no action new_terrain.examine = iexamine_function_from_string("none"); } new_terrain.open = ""; if ( jsobj.has_member("open") ) { new_terrain.open = jsobj.get_string("open"); } new_terrain.close = ""; if ( jsobj.has_member("close") ) { new_terrain.close = jsobj.get_string("close"); } new_terrain.bash.load(jsobj, "bash", false); new_terrain.loadid=terlist.size(); termap[new_terrain.id]=new_terrain; terlist.push_back(new_terrain); }
void load_terrain(JsonObject &jsobj) { if ( terlist.empty() ) { ter_t new_null = null_terrain_t(); termap[new_null.id] = new_null; terlist.push_back(new_null); } ter_t new_terrain; new_terrain.id = jsobj.get_string("id"); if ( new_terrain.id == "t_null" ) { return; } new_terrain.name = _(jsobj.get_string("name").c_str()); new_terrain.load_symbol( jsobj ); new_terrain.movecost = jsobj.get_int("move_cost"); if(jsobj.has_member("trap")) { // Store the string representation of the trap id. // Overwrites the trap field in set_trap_ids() once ids are assigned.. new_terrain.trap_id_str = jsobj.get_string("trap"); } new_terrain.trap = tr_null; new_terrain.max_volume = jsobj.get_int("max_volume", MAX_VOLUME_IN_SQUARE); new_terrain.transparent = false; new_terrain.connect_group = TERCONN_NONE; for( auto & flag : jsobj.get_string_array( "flags" ) ) { new_terrain.set_flag( flag ); } // connect_group is initialised to none, then terrain flags are set, then finally // connections from JSON are set. This is so that wall flags can set wall connections // but can be overridden by explicit connections in JSON. if(jsobj.has_member("connects_to")) { new_terrain.set_connects( jsobj.get_string("connects_to") ); } if(jsobj.has_member("examine_action")) { std::string function_name = jsobj.get_string("examine_action"); new_terrain.examine = iexamine_function_from_string(function_name); } else { // if not specified, default to no action new_terrain.examine = iexamine_function_from_string("none"); } // if the terrain has something harvestable if (jsobj.has_member("harvestable")) { new_terrain.harvestable = jsobj.get_string("harvestable"); // get the harvestable } if (jsobj.has_member("transforms_into")) { new_terrain.transforms_into = jsobj.get_string("transforms_into"); // get the terrain to transform into later on } if (jsobj.has_member("roof")) { new_terrain.roof = jsobj.get_string("roof"); // Get the terrain to create above this one if there would be open air otherwise } if (jsobj.has_member("harvest_season")) { //get the harvest season if (jsobj.get_string("harvest_season") == "SPRING") {new_terrain.harvest_season = 0;} // convert the season to int for calendar compare else if (jsobj.get_string("harvest_season") == "SUMMER") {new_terrain.harvest_season = 1;} else if (jsobj.get_string("harvest_season") == "AUTUMN") {new_terrain.harvest_season = 2;} else {new_terrain.harvest_season = 3;} } new_terrain.open = ""; if ( jsobj.has_member("open") ) { new_terrain.open = jsobj.get_string("open"); } new_terrain.close = ""; if ( jsobj.has_member("close") ) { new_terrain.close = jsobj.get_string("close"); } new_terrain.bash.load(jsobj, "bash", false); new_terrain.deconstruct.load(jsobj, "deconstruct", false); new_terrain.loadid = ter_id( terlist.size() ); termap[new_terrain.id]=new_terrain; terlist.push_back(new_terrain); }