void npc_favor::deserialize(JsonIn &jsin) { JsonObject jo = jsin.get_object(); type = npc_favor_type(jo.get_int("type")); jo.read("value", value); jo.read("itype_id", item_id); skill = NULL; if (jo.has_int("skill_id")) { skill = Skill::skill(jo.get_int("skill_id")); } else if (jo.has_string("skill_id")) { skill = Skill::skill(jo.get_string("skill_id")); } }
void SkillLevel::deserialize(JsonIn & jsin) { JsonObject data = jsin.get_object(); int lastpractice=0; data.read( "level", _level ); data.read( "exercise", _exercise ); data.read( "istraining", _isTraining ); data.read( "lastpracticed", lastpractice ); if(lastpractice == 0) { _lastPracticed = HOURS(OPTIONS["INITIAL_TIME"]); } else { _lastPracticed = lastpractice; } }
/* * Load vehicle from a json blob that might just exceed player in size. */ void vehicle::deserialize(JsonIn &jsin) { JsonObject data = jsin.get_object(); int fdir, mdir; data.read("type", type); data.read("posx", posx); data.read("posy", posy); data.read("levx", levx); data.read("levy", levy); data.read("om_id", om_id); data.read("faceDir", fdir); data.read("moveDir", mdir); data.read("turn_dir", turn_dir); data.read("velocity", velocity); data.read("cruise_velocity", cruise_velocity); data.read("cruise_on", cruise_on); data.read("engine_on", engine_on); data.read("has_pedals", has_pedals); data.read("has_hand_rims", has_hand_rims); data.read("tracking_on", tracking_on); data.read("lights_on", lights_on); data.read("overhead_lights_on", overhead_lights_on); data.read("fridge_on", fridge_on); data.read("recharger_on", recharger_on); data.read("skidding", skidding); data.read("turret_mode", turret_mode); data.read("of_turn_carry", of_turn_carry); face.init (fdir); move.init (mdir); data.read("name",name); data.read("parts", parts); /* for(int i=0;i < parts.size();i++ ) { parts[i].setid(parts[i].id); } */ /* After loading, check if the vehicle is from the old rules and is missing * frames. */ if ( savegame_loading_version < 11 ) { add_missing_frames(); } refresh(); data.read("tags",tags); }
void stomach_contents::deserialize( JsonIn &json ) { JsonObject jo = json.get_object(); jo.read( "vitamins", vitamins ); jo.read( "vitamins_absorbed", vitamins_absorbed ); jo.read( "calories", calories ); std::string str; jo.read( "water", str ); water = string_to_ml( str ); jo.read( "max_volume", str ); max_volume = string_to_ml( str ); jo.read( "contents", str ); contents = string_to_ml( str ); jo.read( "last_ate", last_ate ); }
void auto_pickup::deserialize(JsonIn &jsin) { vRules[(bChar) ? CHARACTER : GLOBAL].clear(); jsin.start_array(); while (!jsin.end_array()) { JsonObject jo = jsin.get_object(); const std::string sRule = jo.get_string("rule"); const bool bActive = jo.get_bool("active"); const bool bExclude = jo.get_bool("exclude"); vRules[(bChar) ? CHARACTER : GLOBAL].push_back(cRules(sRule, bActive, bExclude)); } }
/* * Load vehicle from a json blob that might just exceed player in size. */ void vehicle::deserialize(JsonIn &jsin) { JsonObject data = jsin.get_object(); int fdir, mdir; data.read("type", type); data.read("posx", posx); data.read("posy", posy); data.read("levx", levx); data.read("levy", levy); data.read("om_id", om_id); data.read("faceDir", fdir); data.read("moveDir", mdir); data.read("turn_dir", turn_dir); data.read("velocity", velocity); data.read("cruise_velocity", cruise_velocity); data.read("cruise_on", cruise_on); data.read("engine_on", engine_on); data.read("has_pedals", has_pedals); data.read("tracking_on", tracking_on); data.read("lights_on", lights_on); data.read("overhead_lights_on", overhead_lights_on); data.read("fridge_on", fridge_on); data.read("skidding", skidding); data.read("turret_mode", turret_mode); data.read("of_turn_carry", of_turn_carry); face.init (fdir); move.init (mdir); data.read("name",name); data.read("parts", parts); /* After loading, check if the vehicle is from the old rules and is missing * frames. */ if ( savegame_loading_version < 11 ) { add_missing_frames(); } find_horns (); find_power (); find_fuel_tanks (); find_exhaust (); insides_dirty = true; precalc_mounts (0, face.dir()); data.read("tags",tags); }
void npc_personality::deserialize(JsonIn &jsin) { JsonObject data = jsin.get_object(); int tmpagg, tmpbrav, tmpcol, tmpalt; if ( data.read("aggression", tmpagg) && data.read("bravery", tmpbrav) && data.read("collector", tmpcol) && data.read("altruism", tmpalt) ) { aggression=(signed char)tmpagg; bravery=(signed char)tmpbrav; collector=(signed char)tmpcol; altruism=(signed char)tmpalt; } else { debugmsg("npc_personality: bad data"); } }
// The loaded name is one of usage with optional gender. // The combinations used in names files are as follows. // // Backer | (Female|Male|Unisex) // Given | (Female|Male) // unisex names are duplicated in each group // Family | Unisex // City // World static void load( JsonIn &jsin ) { jsin.start_array(); while( !jsin.end_array() ) { JsonObject jo = jsin.get_object(); // get flags of name. const nameFlags type = usage_flag( jo.get_string( "usage" ) ) | gender_flag( jo.get_string( "gender", "" ) ); // find group type and add name to group names[type].push_back( jo.get_string( "name" ) ); } }
void translation::deserialize( JsonIn &jsin ) { if( jsin.test_string() ) { ctxt = cata::nullopt; raw = jsin.get_string(); needs_translation = true; } else { JsonObject jsobj = jsin.get_object(); if( jsobj.has_string( "ctxt" ) ) { ctxt = jsobj.get_string( "ctxt" ); } else { ctxt = cata::nullopt; } raw = jsobj.get_string( "str" ); needs_translation = true; } }
void player_activity::deserialize(JsonIn &jsin) { JsonObject data = jsin.get_object(); int tmptype; int tmpinv; if ( !data.read( "type", tmptype ) || type >= NUM_ACTIVITIES ) { debugmsg( "Bad activity data:\n%s", data.str().c_str() ); } type = activity_type(tmptype); data.read( "moves_left", moves_left ); data.read( "index", index ); data.read( "invlet", tmpinv ); invlet = (char)tmpinv; data.read( "name", name ); data.read( "placement", placement ); values = data.get_int_array("values"); str_values = data.get_string_array("str_values"); }
void npc_chatbin::deserialize(JsonIn &jsin) { JsonObject data = jsin.get_object(); int tmptopic; std::string skill_ident; data.read("first_topic", tmptopic); first_topic = talk_topic(tmptopic); if ( data.read("skill",skill_ident) ) { skill = Skill::skill(skill_ident); } data.read("tempvalue", tempvalue); data.read("mission_selected", mission_selected); data.read( "missions", missions ); data.read( "missions_assigned", missions_assigned ); }
void player_activity::deserialize(JsonIn &jsin) { JsonObject data = jsin.get_object(); int tmptype; int tmppos; if ( !data.read( "type", tmptype ) || type >= NUM_ACTIVITIES ) { debugmsg( "Bad activity data:\n%s", data.str().c_str() ); } if ( !data.read( "position", tmppos)) { tmppos = INT_MIN; // If loading a save before position existed, hope. } type = activity_type(tmptype); data.read( "moves_left", moves_left ); data.read( "index", index ); position = tmppos; data.read( "name", name ); data.read( "placement", placement ); values = data.get_int_array("values"); str_values = data.get_string_array("str_values"); }
void safemode::deserialize( JsonIn &jsin ) { auto &temp_rules = ( is_character ) ? character_rules : global_rules; temp_rules.clear(); jsin.start_array(); while( !jsin.end_array() ) { JsonObject jo = jsin.get_object(); const std::string rule = jo.get_string( "rule" ); const bool active = jo.get_bool( "active" ); const bool whitelist = jo.get_bool( "whitelist" ); const Creature::Attitude attitude = ( Creature::Attitude ) jo.get_int( "attitude" ); const int proximity = jo.get_int( "proximity" ); temp_rules.push_back( rules_class( rule, active, whitelist, attitude, proximity ) ); } }
void monster::deserialize(JsonIn &jsin) { JsonObject data = jsin.get_object(); int iidtmp; std::string sidtmp; // load->str->int if ( ! data.read("typeid", sidtmp) ) { // or load->int->str->possibly_shifted_int data.read("typeid", iidtmp); sidtmp = legacy_mon_id[ iidtmp ]; } type = GetMType(sidtmp); data.read("posx", _posx); data.read("posy", _posy); data.read("wandx", wandx); data.read("wandy", wandy); data.read("wandf", wandf); data.read("moves", moves); data.read("speed", speed); data.read("hp", hp); data.read("sp_timeout", sp_timeout); data.read("friendly", friendly); data.read("faction_id", faction_id); data.read("mission_id", mission_id); data.read("no_extra_death_drops", no_extra_death_drops); data.read("dead", dead); data.read("anger", anger); data.read("morale", morale); data.read("hallucination", hallucination); data.read("onstairs", onstairs); data.read("stairscount", staircount); // really? data.read("plans", plans); data.read("effects", effects); data.read("inv", inv); if (!data.read("ammo", ammo)) { ammo = 100; } }
void color_manager::deserialize( JsonIn &jsin ) { jsin.start_array(); while( !jsin.end_array() ) { JsonObject joColors = jsin.get_object(); const std::string name = joColors.get_string( "name" ); const std::string name_custom = joColors.get_string( "custom" ); const std::string name_invert_custom = joColors.get_string( "invertcustom" ); color_id id = name_to_id( name ); auto &entry = color_array[id]; if( !name_custom.empty() ) { entry.name_custom = name_custom; } if( !name_invert_custom.empty() ) { entry.name_invert_custom = name_invert_custom; } } }
addiction get_next( JsonIn &jin ) const { JsonObject jo = jin.get_object(); return addiction( addiction_type( jo.get_string( "type" ) ), jo.get_int( "intensity" ) ); }
std::pair<skill_id, int> get_next( JsonIn &jin ) const { JsonObject jo = jin.get_object(); return std::pair<skill_id, int>( skill_id( jo.get_string( "name" ) ), jo.get_int( "level" ) ); }
/* * load player from ginormous json blob */ void player::deserialize(JsonIn &jsin) { JsonObject data = jsin.get_object(); JsonArray parray; json_load_common_variables( data ); std::string prof_ident="(null)"; if ( data.read("profession",prof_ident) && profession::exists(prof_ident) ) { prof = profession::prof(prof_ident); } else { debugmsg("Tried to use non-existent profession '%s'", prof_ident.c_str()); } data.read("activity",activity); data.read("backlog",backlog); data.read("driving_recoil",driving_recoil); data.read("in_vehicle",in_vehicle); data.read("controlling_vehicle",controlling_vehicle); data.read("grab_point", grab_point); std::string grab_typestr="OBJECT_NONE"; if( grab_point.x != 0 || grab_point.y != 0 ) { grab_typestr = "OBJECT_VEHICLE"; data.read( "grab_type", grab_typestr); } if ( obj_type_id.find(grab_typestr) != obj_type_id.end() ) { grab_type = (object_type)obj_type_id[grab_typestr]; } data.read( "blocks_left", num_blocks); data.read( "focus_pool", focus_pool); data.read( "style_selected", style_selected ); data.read( "health", health ); data.read( "mutations", my_mutations ); set_highest_cat_level(); drench_mut_calc(); parray = data.get_array("temp_cur"); if ( parray.size() == num_bp ) { for(int i=0; i < num_bp; i++) { temp_cur[i]=parray.get_int(i); } } else { debugmsg("Error, incompatible temp_cur in save file %s",parray.str().c_str()); } parray = data.get_array("temp_conv"); if ( parray.size() == num_bp ) { for(int i=0; i < num_bp; i++) { temp_conv[i]=parray.get_int(i); } } else { debugmsg("Error, incompatible temp_conv in save file %s",parray.str().c_str()); } parray = data.get_array("frostbite_timer"); if ( parray.size() == num_bp ) { for(int i=0; i < num_bp; i++) { frostbite_timer[i]=parray.get_int(i); } } else { debugmsg("Error, incompatible frostbite_timer in save file %s",parray.str().c_str()); } parray = data.get_array("learned_recipes"); if ( !parray.empty() ) { learned_recipes.clear(); std::string pstr=""; while ( parray.has_more() ) { if ( parray.read_next(pstr) ) { learned_recipes[ pstr ] = recipe_by_name( pstr ); } } } data.read("morale", morale); data.read( "active_mission", active_mission ); data.read( "active_missions", active_missions ); data.read( "failed_missions", failed_missions ); data.read( "completed_missions", completed_missions ); stats & pstats = *lifetime_stats(); data.read("player_stats",pstats); inv.clear(); if ( data.has_member("inv") ) { JsonIn* jip = data.get_raw("inv"); inv.json_load_items( *jip ); } if ( data.has_member("invcache") ) { JsonIn* jip = data.get_raw("invcache"); inv.json_load_invcache( *jip ); } worn.clear(); data.read("worn", worn); weapon.contents.clear(); data.read("weapon", weapon); }
/* * load npc */ void npc::deserialize(JsonIn &jsin) { JsonObject data = jsin.get_object(); json_load_common_variables(data); int misstmp, classtmp, flagstmp, atttmp, tmpid; data.read("id",tmpid); setID(tmpid); data.read("name",name); data.read("marked_for_death", marked_for_death); data.read("dead", dead); if ( data.read( "myclass", classtmp) ) { myclass = npc_class( classtmp ); } data.read("personality", personality); data.read("wandx",wandx); data.read("wandy",wandy); data.read("wandf",wandf); data.read("omx",omx); data.read("omy",omy); data.read("omz",omz); data.read("mapx",mapx); data.read("mapy",mapy); data.read("plx",plx); data.read("ply",ply); data.read("goalx",goal.x); data.read("goaly",goal.y); data.read("goalz",goal.z); if ( data.read("mission",misstmp) ) { mission = npc_mission( misstmp ); } if ( data.read( "flags", flagstmp) ) { flags = flagstmp; } if ( data.read( "attitude", atttmp) ) { attitude = npc_attitude(atttmp); } inv.clear(); if ( data.has_member("inv") ) { JsonIn *invin = data.get_raw("inv"); inv.json_load_items( *invin ); } worn.clear(); data.read("worn",worn); weapon.contents.clear(); data.read("weapon",weapon); data.read("op_of_u",op_of_u); data.read("chatbin",chatbin); data.read("combat_rules",combat_rules); }
mon_effect_data get_next( JsonIn &jin ) const { JsonObject e = jin.get_object(); return load_mon_effect_data( e ); }
void overmap_connection::subtype::deserialize( JsonIn &jsin ) { JsonObject jo = jsin.get_object(); load( jo ); }
mon_effect_data get_next( JsonIn &jin ) const { JsonObject e = jin.get_object(); return mon_effect_data( efftype_id( e.get_string( "id" ) ), e.get_int( "duration", 0 ), get_body_part_token( e.get_string( "bp", "NUM_BP" ) ), e.get_bool( "permanent", false ), e.get_int( "chance", 100 ) ); }