convert line ends
[canaan.git] / prj / cam / src / framewrk / pickgame.cpp
blob01ad9ef0a05921519a142c75de2fac4243f9117e
1 /*
2 @Copyright Looking Glass Studios, Inc.
3 1996,1997,1998,1999,2000 Unpublished Work.
4 */
6 // $Header: r:/t2repos/thief2/src/framewrk/pickgame.cpp,v 1.8 1997/10/14 11:20:32 TOML Exp $
7 #include <string.h>
9 #include <pickgame.h>
10 #include <gametabl.h>
12 #include <dynarray.h>
14 #include <config.h>
16 // Must be last header
17 #include <dbmem.h>
19 ////////////////////////////////////////////////////////////
21 // GAME SELCTION
25 struct sFoundVar
27 char name[80];
29 sFoundVar(const char* s) { strcpy(name,s); };
32 typedef cDynArray<sFoundVar*> VarArray;
34 static char* prefix = "";
35 static VarArray* itervars = NULL;
37 static bool iter_func(char* var)
39 if (strnicmp(var,prefix,strlen(prefix)) == 0)
41 sFoundVar* foundvar = new sFoundVar(var);
42 itervars->Append(foundvar);
44 return FALSE;
48 // copy all vars of the form game_foo to foo
50 static void init_game_cfg_vars(const char* name)
52 char prefixbuf[32];
53 char valbuf[80];
55 if (name == NULL) return;
56 prefix = prefixbuf;
57 sprintf(prefix,"%s_",name);
59 VarArray Vars;
60 itervars = &Vars;
61 // find all the vars
62 config_get_raw_all(iter_func,valbuf,sizeof(valbuf));
64 // now actually go through and set them
65 for (int i = 0; i < Vars.Size(); i++)
67 sFoundVar* var = Vars[i];
68 char* newvar = var->name+strlen(prefix);
70 config_get_raw(var->name,valbuf,sizeof(valbuf));
71 config_set_string(newvar,valbuf);
72 config_set_priority(newvar,PRIORITY_TRANSIENT);
74 Vars[i] = NULL;
75 delete var;
78 config_set_string((char*)name,"");
79 config_set_priority((char*)name,PRIORITY_TRANSIENT);
83 void AppSelectGame(const char* name)
85 const GameTableElem* game;
86 init_game_cfg_vars(name);
87 for (game = GameTable; game->name != NULL; game++)
89 if (name != NULL && strcmpi(name,game->name) == 0)
90 break;
92 if (game->Create != NULL)
93 game->Create();