void snippet_library::load() throw (std::string) { catajson snippetRaw("data/raw/snippets.json"); if(!json_good()) throw (std::string)"Could not read data/raw/snippets.json"; catajson snippetList = snippetRaw.get("snippets"); for( snippetList.set_begin(); snippetList.has_curr(); snippetList.next() ) { const catajson curr = snippetList.curr(); // required fields const std::string category = curr.get("category").as_string(); const std::string text = curr.get("text").as_string(); const int hash = djb2_hash( (const unsigned char*)text.c_str() ); snippets.insert( std::pair<int, std::string>(hash, text) ); categories.insert( std::pair<std::string, int>(category, hash) ); } if(!json_good()) throw (std::string)"There was an error reading data/raw/snippets.json"; }
void Item_factory::set_material_from_json(Item_tag new_id, catajson mat_list){ //If the value isn't found, just return a group of null materials std::string material_list[2] = {"null", "null"}; if (mat_list.is_array()) { if (mat_list.has(2)) { debugmsg("Too many materials provided for item %s", new_id.c_str()); } material_list[0] = mat_list.get(0).as_string(); material_list[1] = mat_list.get(1).as_string(); } else { material_list[0] = mat_list.as_string(); } itype* temp = find_template(new_id); temp->m1 = material_list[0]; temp->m2 = material_list[1]; }