void Messages::serialize( JsonOut &json ) { json.member( "player_messages" ); json.start_object(); json.member( "messages", player_messages.impl_->messages ); json.member( "curmes", player_messages.impl_->curmes ); json.end_object(); }
//////////////////////////////////////////////////////////////////////////////////////////////////// ///// skill.h void SkillLevel::serialize(JsonOut &json) const { json.start_object(); json.member("level", level() ); json.member("exercise", exercise(true) ); json.member("istraining", isTraining() ); json.member("lastpracticed", int ( lastPracticed() ) ); json.end_object(); }
static void write_array( JsonIn &jsin, JsonOut &jsout, int depth, bool force_wrap ) { jsout.start_array( force_wrap ); jsin.start_array(); while( !jsin.end_array() ) { format( jsin, jsout, depth ); } jsout.end_array(); }
void serialize( JsonOut &js ) const override { js.start_object(); js.member( "type", "vehicle" ); js.member( "pos", position() ); js.member( "part", cur.part ); if( target() != &cur.veh.parts[ cur.part ].base ) { js.member( "idx", find_index( cur, target() ) ); } js.end_object(); }
static void write_object( JsonIn &jsin, JsonOut &jsout, int depth, bool force_wrap ) { jsout.start_object( force_wrap ); jsin.start_object(); while( !jsin.end_object() ) { std::string name = jsin.get_member_name(); jsout.member( name ); format( jsin, jsout, depth ); } jsout.end_object(); }
/* * save all items. Just this->items, invlet cache saved seperately */ void inventory::json_save_items(JsonOut &json) const { json.start_array(); for (invstack::const_iterator iter = items.begin(); iter != items.end(); ++iter) { for (std::list<item>::const_iterator stack_iter = iter->begin(); stack_iter != iter->end(); ++stack_iter) { stack_iter->serialize(json, true); } } json.end_array(); }
void player_activity::serialize(JsonOut &json) const { json.start_object(); json.member( "type", int(type) ); json.member( "moves_left", moves_left ); json.member( "index", index ); json.member( "position", position ); json.member( "name", name ); json.member( "placement", placement ); json.member( "values", values ); json.member( "str_values", str_values ); json.end_object(); }
void stomach_contents::serialize( JsonOut &json ) const { json.start_object(); json.member( "vitamins", vitamins ); json.member( "vitamins_absorbed", vitamins_absorbed ); json.member( "calories", calories ); json.member( "water", ml_to_string( water ) ); json.member( "max_volume", ml_to_string( max_volume ) ); json.member( "contents", ml_to_string( contents ) ); json.member( "last_ate", last_ate ); json.end_object(); }
void zone_data::serialize( JsonOut &json ) const { json.start_object(); json.member( "name", name ); json.member( "type", type ); json.member( "invert", invert ); json.member( "enabled", enabled ); json.member( "is_vehicle", is_vehicle ); json.member( "start", start ); json.member( "end", end ); get_options().serialize( json ); json.end_object(); }
void npc_chatbin::serialize(JsonOut &json) const { json.start_object(); json.member( "first_topic", (int)first_topic ); json.member( "mission_selected", mission_selected ); json.member( "tempvalue", tempvalue ); //No clue what this value does, but it is used all over the place. So it is NOT temp. if ( skill ) { json.member("skill", skill->ident() ); } json.member( "missions", missions ); json.member( "missions_assigned", missions_assigned ); json.end_object(); }
void npc_opinion::serialize(JsonOut &json) const { json.start_object(); json.member( "trust", trust ); json.member( "fear", fear ); json.member( "value", value ); json.member( "anger", anger ); json.member( "owed", owed ); json.member( "favors", favors ); json.end_object(); }
void safemode::serialize( JsonOut &json ) const { json.start_array(); auto &temp_rules = ( is_character ) ? character_rules : global_rules; for( auto &elem : temp_rules ) { json.start_object(); json.member( "rule", elem.rule ); json.member( "active", elem.active ); json.member( "whitelist", elem.whitelist ); json.member( "attitude", elem.attitude ); json.member( "proximity", elem.proximity ); json.end_object(); } json.end_array(); }
/* * Save invlet cache */ void inventory::json_save_invcache(JsonOut &json) const { json.start_array(); for( std::map<std::string, std::vector<char> >::const_iterator invlet_id = invlet_cache.begin(); invlet_id != invlet_cache.end(); ++invlet_id ) { json.start_object(); json.member( invlet_id->first ); json.start_array(); for( std::vector<char>::const_iterator sym = invlet_id->second.begin(); sym != invlet_id->second.end(); ++sym ) { json.write( int(*sym) ); } json.end_array(); json.end_object(); } json.end_array(); }
void npc_personality::serialize(JsonOut &json) const { json.start_object(); json.member( "aggression", (int)aggression ); json.member( "bravery", (int)bravery ); json.member( "collector", (int)collector ); json.member( "altruism", (int)altruism ); json.end_object(); };
void Messages::game_message::serialize( JsonOut &jsout ) const { jsout.start_object(); jsout.member( "turn", static_cast<int>( turn ) ); jsout.member( "message", message ); jsout.member( "count", count ); jsout.member( "type", static_cast<int>( type ) ); jsout.end_object(); }
static void format( JsonIn &jsin, JsonOut &jsout, int depth ) { depth++; if( jsin.test_array() ) { format_collection( jsin, jsout, depth, write_array ); } else if( jsin.test_object() ) { format_collection( jsin, jsout, depth, write_object ); } else if( jsin.test_string() ) { std::string str = jsin.get_string(); jsout.write( str ); } else if( jsin.test_number() ) { // Have to introspect into the string to distinguish integers from floats. // Otherwise they won't serialize correctly. const int start_pos = jsin.tell(); double num = jsin.get_float(); const int end_pos = jsin.tell(); std::string str_form = jsin.substr( start_pos, end_pos - start_pos ); if( str_form.find( '.' ) == std::string::npos ) { jsout.write( static_cast<long>( num ) ); } else { // This is QUITE insane, but as far as I can tell there is NO way to configure // an ostream to output a float/double meeting two constraints: // Always emit a decimal point (and single trailing 0 after a bare decimal point). // Don't emit trailing zeroes otherwise. std::string double_str = std::to_string( num ); double_str.erase( double_str.find_last_not_of( '0' ) + 1, std::string::npos ); if( double_str.back() == '.' ) { double_str += "0"; } jsout.write_separator(); *jsout.get_stream() << double_str; jsout.set_need_separator(); } jsin.seek( end_pos ); } else if( jsin.test_bool() ) { bool tf = jsin.get_bool(); jsout.write( tf ); } else if( jsin.test_null() ) { jsout.write_null(); } else { std::cerr << "Encountered unrecognized json element \""; const int start_pos = jsin.tell(); jsin.skip_value(); const int end_pos = jsin.tell(); for( int i = start_pos; i < end_pos; ++i ) { jsin.seek( i ); std::cerr << jsin.peek(); } std::cerr << "\"" << std::endl; } }
void npc_combat_rules::serialize(JsonOut &json) const { json.start_object(); json.member("engagement", (int)engagement ); json.member("use_guns", use_guns ); json.member("use_grenades", use_grenades ); json.member("use_silent", use_silent ); //todo json.member("guard_pos", guard_pos ); json.end_object(); }
void npc_favor::serialize(JsonOut &json) const { json.start_object(); json.member("type", (int)type); json.member("value", value); json.member("itype_id", (std::string)item_id); if (skill != NULL) { json.member("skill_id", skill->ident()); } json.end_object(); }
void auto_pickup::serialize(JsonOut &json) const { json.start_array(); for( auto &elem : vRules[( bChar ) ? CHARACTER_TAB : GLOBAL_TAB] ) { json.start_object(); json.member( "rule", elem.sRule ); json.member( "active", elem.bActive ); json.member( "exclude", elem.bExclude ); json.end_object(); } json.end_array(); }
void color_manager::serialize( JsonOut &json ) const { json.start_array(); for( auto &entry : color_array ) { if( !entry.name_custom.empty() || !entry.name_invert_custom.empty() ) { json.start_object(); json.member( "name", id_to_name( entry.col_id ) ); json.member( "custom", entry.name_custom ); json.member( "invertcustom", entry.name_invert_custom ); json.end_object(); } } json.end_array(); }
void nc_color::serialize( JsonOut &jsout ) const { jsout.write( attribute_value ); }
/* * save npc */ void npc::serialize(JsonOut &json, bool save_contents) const { json.start_object(); json_save_common_variables( json ); json.member( "name", name ); json.member( "id", getID() ); json.member( "marked_for_death", marked_for_death ); json.member( "dead", dead ); json.member( "patience", patience ); json.member( "myclass", (int)myclass ); json.member( "personality", personality ); json.member( "wandx", wandx ); json.member( "wandy", wandy ); json.member( "wandf", wandf ); json.member( "omx", omx ); json.member( "omy", omy ); json.member( "omz", omz ); json.member( "mapx", mapx ); json.member( "mapy", mapy ); json.member( "plx", plx ); json.member( "ply", ply ); json.member( "goalx", goal.x ); json.member( "goaly", goal.y ); json.member( "goalz", goal.z ); json.member( "mission", mission ); // todo: stringid json.member( "flags", flags ); if ( my_fac != NULL ) { // set in constructor json.member( "my_fac", my_fac->id ); } json.member( "attitude", (int)attitude ); json.member("op_of_u", op_of_u); json.member("chatbin", chatbin); json.member("combat_rules", combat_rules); if ( save_contents ) { json.member( "worn", worn ); // also saves contents json.member("inv"); inv.json_save_items(json); if (!weapon.is_null()) { json.member( "weapon", weapon ); // also saves contents } } json.end_object(); }
/* * Save, json ed; serialization that won't break as easily. In theory. */ void monster::serialize(JsonOut &json, bool save_contents) const { json.start_object(); json.member( "typeid", type->id ); json.member("posx",_posx); json.member("posy",_posy); json.member("wandx",wandx); json.member("wandy",wandy); json.member("wandf",wandf); json.member("moves",moves); json.member("speed",speed); json.member("hp",hp); json.member("sp_timeout",sp_timeout); json.member("friendly",friendly); json.member("faction_id",faction_id); json.member("mission_id",mission_id); json.member("no_extra_death_drops", no_extra_death_drops ); json.member("dead",dead); json.member("anger",anger); json.member("morale",morale); json.member("hallucination",hallucination); json.member("onstairs",onstairs); json.member("stairscount",staircount); json.member("plans", plans); json.member("ammo", ammo); json.member("effects", effects); if ( save_contents ) { json.member("inv"); json.start_array(); for(int i=0;i<inv.size();i++) { inv[i].serialize(json, true); } json.end_array(); } json.end_object(); }
void serialize( JsonOut &js ) const override { js.start_object(); js.member( "type", "null" ); js.end_object(); }
void zone_manager::serialize( JsonOut &json ) const { json.write( zones ); }
void plot_options::serialize( JsonOut &json ) const { json.member( "mark", mark ); json.member( "seed", seed ); }
void serialize( JsonOut &js ) const override { js.start_object(); js.member( "type", "character" ); js.member( "idx", find_index( who, target() ) ); js.end_object(); }
void it_artifact_armor::serialize(JsonOut &json) const { json.start_object(); json.member("type", "artifact_armor"); // generic data json.member("id", id); json.member("name", name); json.member("description", description); json.member("sym", sym); json.member("color", color_to_int(color)); json.member("price", price); json.member("m1", m1); json.member("m2", m2); json.member("volume", volume); json.member("weight", weight); json.member("id", id); json.member("melee_dam", melee_dam); json.member("melee_cut", melee_cut); json.member("m_to_hit", m_to_hit); json.member("item_flags", item_tags); json.member("techniques", techniques); // armor data json.member("covers", covers); json.member("encumber", encumber); json.member("coverage", coverage); json.member("material_thickness", thickness); json.member("env_resist", env_resist); json.member("warmth", warmth); json.member("storage", storage); json.member("power_armor", power_armor); // artifact data json.member("effects_worn", effects_worn); json.end_object(); }
void it_artifact_tool::serialize(JsonOut &json) const { json.start_object(); json.member("type", "artifact_tool"); // generic data json.member("id", id); json.member("name", name); json.member("description", description); json.member("sym", sym); json.member("color", color_to_int(color)); json.member("price", price); json.member("m1", m1); json.member("m2", m2); json.member("volume", volume); json.member("weight", weight); json.member("melee_dam", melee_dam); json.member("melee_cut", melee_cut); json.member("m_to_hit", m_to_hit); json.member("item_flags", item_tags); json.member("techniques", techniques); // tool data json.member("ammo", ammo); json.member("max_charges", max_charges); json.member("def_charges", def_charges); json.member("rand_charges", rand_charges); json.member("charges_per_use", charges_per_use); json.member("turns_per_charge", turns_per_charge); json.member("revert_to", revert_to); // artifact data json.member("charge_type", charge_type); json.member("effects_wielded", effects_wielded); json.member("effects_activated", effects_activated); json.member("effects_carried", effects_carried); json.end_object(); }
/* * Prepare a json object for player, including player specific data, and data common to players and npcs ( which json_save_actor_data() handles ). */ void player::serialize(JsonOut &json, bool save_contents) const { json.start_object(); json_save_common_variables( json ); // player-specific specifics if ( prof != NULL ) { json.member( "profession", prof->ident() ); } // someday, npcs may drive json.member( "driving_recoil", int(driving_recoil) ); json.member( "in_vehicle", in_vehicle ); json.member( "controlling_vehicle", controlling_vehicle ); // shopping carts, furniture etc json.member( "grab_point", grab_point ); json.member( "grab_type", obj_type_name[ (int)grab_type ] ); // misc player specific stuff json.member( "blocks_left", num_blocks ); json.member( "focus_pool", focus_pool ); json.member( "style_selected", style_selected ); // possibly related to illness[] ? json.member( "health", health ); // crafting etc json.member( "activity", activity ); json.member( "backlog", activity ); // mutations; just like traits but can be removed. json.member( "mutations", my_mutations ); // "The cold wakes you up." json.member( "temp_cur", std::vector<int>( temp_cur, temp_cur + num_bp ) ); json.member( "temp_conv", std::vector<int>( temp_conv, temp_conv + num_bp ) ); json.member( "frostbite_timer", std::vector<int>( frostbite_timer, frostbite_timer + num_bp ) ); // npc: unimplemented, potentially useful json.member( "learned_recipes" ); json.start_array(); for (std::map<std::string, recipe*>::const_iterator iter = learned_recipes.begin(); iter != learned_recipes.end(); ++iter) { json.write( iter->first ); } json.end_array(); // :( json.member( "morale", morale ); // mission stuff json.member("active_mission", active_mission ); json.member( "active_missions", active_missions ); json.member( "completed_missions", completed_missions ); json.member( "failed_missions", failed_missions ); json.member( "player_stats", get_stats() ); if ( save_contents ) { json.member( "worn", worn ); // also saves contents json.member("inv"); inv.json_save_items(json); json.member("invcache"); inv.json_save_invcache(json); if (!weapon.is_null()) { json.member( "weapon", weapon ); // also saves contents } //FIXME: seperate function, better still another file /* for( size_t i = 0; i < memorial_log.size(); ++i ) { ptmpvect.push_back(pv(memorial_log[i])); } json.member("memorial",ptmpvect); */ } json.end_object(); }