void load_recipe_category( JsonObject &jsobj ) { JsonArray subcats; std::string category = jsobj.get_string( "id" ); if( category.find( "CC_" ) != 0 ) { jsobj.throw_error( "Crafting category id has to be prefixed with 'CC_'" ); } // Don't store noncraft as a category. // We're storing the subcategory so we can look it up in load_recipes // for the fallback subcategory. if( category != "CC_NONCRAFT" ) { craft_cat_list.push_back( category ); } std::string cat_name = get_cat_name( category ); craft_subcat_list[category] = std::vector<std::string>(); subcats = jsobj.get_array( "recipe_subcategories" ); while( subcats.has_more() ) { std::string subcat_id = subcats.next_string(); if( subcat_id.find( "CSC_" + cat_name + "_" ) != 0 && subcat_id != "CSC_ALL" && subcat_id != "CSC_NONCRAFT" ) { jsobj.throw_error( "Crafting sub-category id has to be prefixed with CSC_<category_name>_" ); } craft_subcat_list[category].push_back( subcat_id ); } }
void translate_all() { for( const auto &cat : craft_cat_list ) { normalized_names[cat] = _( get_cat_name( cat ).c_str() ); for( const auto &subcat : craft_subcat_list[cat] ) { normalized_names[subcat] = _( get_subcat_name( cat, subcat ).c_str() ) ; } } }
std::string get_subcat_name( const std::string &cat, const std::string &prefixed_name ) { std::string prefix = "CSC_" + get_cat_name( cat ) + "_"; if( prefixed_name.find( prefix ) == 0 ) { return prefixed_name.substr( prefix.size(), prefixed_name.size() - prefix.size() ); } return ( prefixed_name == "CSC_ALL" ? _( "ALL" ) : _( "NONCRAFT" ) ); }
void load_recipe_category( JsonObject &jsobj ) { std::string category = jsobj.get_string( "id" ); if( category.find( "CC_" ) != 0 ) { jsobj.throw_error( "Crafting category id has to be prefixed with 'CC_'" ); } craft_cat_list.push_back( category ); std::string cat_name = get_cat_name( category ); craft_subcat_list[category] = std::vector<std::string>(); JsonArray subcats = jsobj.get_array( "recipe_subcategories" ); while( subcats.has_more() ) { std::string subcat_id = subcats.next_string(); if( subcat_id.find( "CSC_" + cat_name + "_" ) != 0 && subcat_id != "CSC_ALL" ) { jsobj.throw_error( "Crafting sub-category id has to be prefixed with CSC_<category_name>_" ); } craft_subcat_list[category].push_back( subcat_id ); } }