From 7b98ca56e1b2c69d88bef7184c4702d5a2793167 Mon Sep 17 00:00:00 2001 From: Taylor Richards Date: Wed, 26 Mar 2014 21:43:23 -0400 Subject: [PATCH] first-run setup support for config options and directory structure --- src/osapi/osapi.cpp | 47 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 6 deletions(-) diff --git a/src/osapi/osapi.cpp b/src/osapi/osapi.cpp index c766eaa..25da1b5 100644 --- a/src/osapi/osapi.cpp +++ b/src/osapi/osapi.cpp @@ -184,20 +184,55 @@ void os_deinit(); // initialization/shutdown functions ----------------------------------------------- +extern void cf_create_directory( int dir_type ); + // If app_name is NULL or ommited, then TITLE is used // for the app name, which is where registry keys are stored. void os_init(const char *wclass, const char *title, const char *app_name, const char *version_string) { - /* set some sane defaults since we don't have a laucher... */ - if (os_config_read_string(NULL, NOX("Videocard"), NULL) == NULL) + // do some first-run stuff if needed + if ( os_config_read_uint(NULL, NOX("StraightToSetup"), 1) == 1 ) { + // set some sane config defaults os_config_write_string(NULL, NOX("Videocard"), NOX("OpenGL (640x480)")); - - if (os_config_read_string(NULL, NOX("NetworkConnection"), NULL) == NULL) os_config_write_string(NULL, NOX("NetworkConnection"), NOX("lan")); - - if (os_config_read_string(NULL, NOX("ConnectionSpeed"), NULL) == NULL) os_config_write_string(NULL, NOX("ConnectionSpeed"), NOX("Slow")); + // in case an installer didn't do it, populate directory structure to + // make sure everything is usable + cf_create_directory(CF_TYPE_MAPS); + cf_create_directory(CF_TYPE_TEXT); + cf_create_directory(CF_TYPE_MISSIONS); + cf_create_directory(CF_TYPE_MODELS); + cf_create_directory(CF_TYPE_TABLES); + cf_create_directory(CF_TYPE_SOUNDS_8B22K); + cf_create_directory(CF_TYPE_SOUNDS_16B11K); + cf_create_directory(CF_TYPE_VOICE_BRIEFINGS); + cf_create_directory(CF_TYPE_VOICE_CMD_BRIEF); + cf_create_directory(CF_TYPE_VOICE_DEBRIEFINGS); + cf_create_directory(CF_TYPE_VOICE_PERSONAS); + cf_create_directory(CF_TYPE_VOICE_SPECIAL); + cf_create_directory(CF_TYPE_VOICE_TRAINING); + cf_create_directory(CF_TYPE_MUSIC); + cf_create_directory(CF_TYPE_MOVIES); + cf_create_directory(CF_TYPE_INTERFACE); + cf_create_directory(CF_TYPE_FONT); + cf_create_directory(CF_TYPE_EFFECTS); + cf_create_directory(CF_TYPE_HUD); + cf_create_directory(CF_TYPE_PLAYER_IMAGES_MAIN); + cf_create_directory(CF_TYPE_CACHE); + cf_create_directory(CF_TYPE_SINGLE_PLAYERS); + cf_create_directory(CF_TYPE_MULTI_PLAYERS); + cf_create_directory(CF_TYPE_MULTI_CACHE); + cf_create_directory(CF_TYPE_CONFIG); + cf_create_directory(CF_TYPE_SQUAD_IMAGES_MAIN); + cf_create_directory(CF_TYPE_DEMOS); + cf_create_directory(CF_TYPE_CBANIMS); + cf_create_directory(CF_TYPE_INTEL_ANIMS); + + // unset FirstRun flag + os_config_write_uint(NULL, NOX("StraightToSetup"), 0); + } + Os_inited = 1; Os_lock = SDL_CreateMutex(); -- 2.39.2