static void TCOD_sys_load_player_config() { const char *renderer; const char *font; int fullscreenWidth,fullscreenHeight; /* define file structure */ TCOD_parser_t parser=TCOD_parser_new(); TCOD_parser_struct_t libtcod = TCOD_parser_new_struct(parser, "libtcod"); TCOD_struct_add_property(libtcod, "renderer", TCOD_TYPE_STRING, false); TCOD_struct_add_property(libtcod, "font", TCOD_TYPE_STRING, false); TCOD_struct_add_property(libtcod, "fontInRow", TCOD_TYPE_BOOL, false); TCOD_struct_add_property(libtcod, "fontGreyscale", TCOD_TYPE_BOOL, false); TCOD_struct_add_property(libtcod, "fontTcodLayout", TCOD_TYPE_BOOL, false); TCOD_struct_add_property(libtcod, "fontNbCharHoriz", TCOD_TYPE_INT, false); TCOD_struct_add_property(libtcod, "fontNbCharVertic", TCOD_TYPE_INT, false); TCOD_struct_add_property(libtcod, "fullscreen", TCOD_TYPE_BOOL, false); TCOD_struct_add_property(libtcod, "fullscreenWidth", TCOD_TYPE_INT, false); TCOD_struct_add_property(libtcod, "fullscreenHeight", TCOD_TYPE_INT, false); /* parse file */ TCOD_parser_run(parser,"./libtcod.cfg",NULL); /* set user preferences */ renderer=TCOD_parser_get_string_property(parser, "libtcod.renderer"); if ( renderer != NULL ) { /* custom renderer */ if ( TCOD_strcasecmp(renderer,"GLSL") == 0 ) TCOD_ctx.renderer=TCOD_RENDERER_GLSL; else if ( TCOD_strcasecmp(renderer,"OPENGL") == 0 ) TCOD_ctx.renderer=TCOD_RENDERER_OPENGL; else if ( TCOD_strcasecmp(renderer,"SDL") == 0 ) TCOD_ctx.renderer=TCOD_RENDERER_SDL; else printf ("Warning : unknown renderer '%s' in libtcod.cfg\n", renderer); } font=TCOD_parser_get_string_property(parser, "libtcod.font"); if ( font != NULL ) { /* custom font */ FILE *f=fopen(font,"rb"); if (f) { int fontNbCharHoriz,fontNbCharVertic; fclose(f); strcpy(TCOD_ctx.font_file,font); TCOD_ctx.font_in_row=TCOD_parser_get_bool_property(parser,"libtcod.fontInRow"); TCOD_ctx.font_greyscale=TCOD_parser_get_bool_property(parser,"libtcod.fontGreyscale"); TCOD_ctx.font_tcod_layout=TCOD_parser_get_bool_property(parser,"libtcod.fontTcodLayout"); fontNbCharHoriz=TCOD_parser_get_int_property(parser,"libtcod.fontNbCharHoriz"); fontNbCharVertic=TCOD_parser_get_int_property(parser,"libtcod.fontNbCharVertic"); if ( fontNbCharHoriz > 0 ) TCOD_ctx.fontNbCharHoriz=fontNbCharHoriz; if ( fontNbCharVertic > 0 ) TCOD_ctx.fontNbCharVertic=fontNbCharVertic; if ( charmap ) { SDL_FreeSurface(charmap); charmap=NULL; } } else { printf ("Warning : font file '%s' does not exist\n",font); } } /* custom fullscreen resolution */ TCOD_ctx.fullscreen=TCOD_parser_get_bool_property(parser,"libtcod.fullscreen"); fullscreenWidth=TCOD_parser_get_int_property(parser,"libtcod.fullscreenWidth"); fullscreenHeight=TCOD_parser_get_int_property(parser,"libtcod.fullscreenHeight"); if ( fullscreenWidth > 0 ) TCOD_ctx.fullscreen_width=fullscreenWidth; if ( fullscreenHeight > 0 ) TCOD_ctx.fullscreen_height=fullscreenHeight; }
const char * TCODParser::getStringProperty(const char *name) const { return TCOD_parser_get_string_property(data,name); }