]>
jfr.im git - irc/gameservirc.git/blob - gameserv/config.cpp
11 int load_config_file(char *config
);
12 void unload_config_file();
14 /* Random Configuration Stuff Goes Here until I code it to load from a .conf file :)*/
16 char *s_GameServ
; // GameServ's nickname
17 char *gshost
; // GameServ's Hostname
18 char *gsident
; // GameServ's ident/username
19 char *servername
; // GameServ's Server
20 char *c_Forest
; // Forest channel
21 char *c_ForestTopic
; // Forest Channel Topic
22 char *adminpass
; // Administrator password
23 char *welcomemsg
; // Welcome Message
24 int welcomedelay
; // Welcome Message Delay
25 int updateperiod
; // Seconds until another player database update
26 int forestfights
; // Forest fights per day
27 int maxafightdistance
; // Max levels above a player they can fight player->player
28 int maxbfightdistance
; // Max levels below a player they can fight player->player
30 // Remote server stuff. This is used for the outgoing connection gameserv needs to make
32 char *remoteserver
; // Server to connect to
33 char *remoteport
; // Port to connect to on remoteserver
34 char *remotepass
; // Password for the server link
36 char *playerdata
; // File to store player data in
37 char *monsterdata
; // File to load monster data from
38 char *pidfile
; // Process ID file
41 char *gsnum
= "[]AAA"; // GameServ Numeric
44 void unload_config_file()
57 delete [] c_ForestTopic
;
59 delete [] remoteserver
;
67 delete [] monsterdata
;
76 int load_config_file(char *config
)
78 char *buf
, *directive
, *value
;
80 #define numdirectives 19
89 DIRECTIVE directives
[numdirectives
];
91 directives
[0].desc
= "s_GameServ - GameServ Nickname";
92 directives
[1].desc
= "GSHOST - GameServ Hostname";
93 directives
[2].desc
= "GSIDENT - GameServ Ident";
94 directives
[3].desc
= "SERVERNAME - Pseudo Server's Name";
95 directives
[4].desc
= "C_FOREST - Forest Channel";
96 directives
[5].desc
= "C_FORESTTOPIC - Topic for the Forest Channel";
97 directives
[6].desc
= "REMOTESERVER - Server for gameserv to connect to (ip or hostname)";
98 directives
[7].desc
= "REMOTEPORT - Port on the remote server to connect to";
99 directives
[8].desc
= "REMOTEPASS - Password on the remote server";
100 directives
[9].desc
= "PLAYERDATA - File to store the player saves in";
101 directives
[10].desc
= "MONSTERDATA - File to load the monsters from";
102 directives
[11].desc
= "ADMINPASS - Password to identify as an admin with";
103 directives
[12].desc
= "WELCOMEDELAY - Delay (in seconds) to wait before welcoming new users to the network";
104 directives
[13].desc
= "FORESTFIGHTS - Number of forest fights players get every day";
105 directives
[14].desc
= "UPDATEPERIOD - Number of seconds between every player data save";
106 directives
[15].desc
= "WELCOMEMSG - Message to send to new users on the network";
107 directives
[16].desc
= "PIDFILE - Filename to store the gameserv process ID in";
108 directives
[17].desc
= "MAXAFIGHTDISTANCE - The maximum number of levels above you "\
109 "that you can fight player->player";
110 directives
[18].desc
= "MAXBFIGHTDISTANCE - The maximum number of levels below you "\
111 "that you can fight player->player";
113 for (int count
= 0; count
< numdirectives
; count
++)
115 directives
[count
].done
= false;
122 log("Error opening %s", config
);
123 cerr
<< "Error opening " << config
<< endl
;
127 buf
= new char[1024];
129 while (infile
.getline(buf
, 1024, '\n'))
132 log("Config file entry buf: %s", buf
);
135 if (buf
[0] == '#' || buf
[0] == ' ' || buf
[0] == '\0' || buf
[0] == '\n' || buf
[0] == '\r')
138 directive
= strtok(buf
, " ");
140 if (stricmp(directive
, "DIE") == 0)
142 value
= strtok(NULL
, "");
143 log("You should read the entire %s file!", config
);
144 cerr
<< "You should read the entire " << config
<< " file!"
149 if (stricmp(directive
, "S_GAMESERV") == 0)
151 value
= strtok(NULL
, " ");
152 s_GameServ
= new char[strlen(value
) + 1];
153 strcpy(s_GameServ
, value
);
154 directives
[0].done
= true;
156 else if (stricmp(directive
, "GSHOST") == 0)
158 value
= strtok(NULL
, " ");
159 gshost
= new char[strlen(value
) + 1];
160 strcpy(gshost
, value
);
161 directives
[1].done
= true;
163 else if (stricmp(directive
, "GSIDENT") == 0)
165 value
= strtok(NULL
, " ");
166 gsident
= new char[strlen(value
) + 1];
167 strcpy(gsident
, value
);
168 directives
[2].done
= true;
170 else if (stricmp(directive
, "SERVERNAME") == 0)
172 value
= strtok(NULL
, " ");
173 servername
= new char[strlen(value
) + 1];
174 strcpy(servername
, value
);
175 directives
[3].done
= true;
177 else if (stricmp(directive
, "C_FOREST") == 0)
179 value
= strtok(NULL
, " ");
180 c_Forest
= new char[strlen(value
) + 1];
181 strcpy(c_Forest
, value
);
182 directives
[4].done
= true;
184 else if (stricmp(directive
, "C_FORESTTOPIC") == 0)
186 value
= strtok(NULL
, "");
187 c_ForestTopic
= new char[strlen(value
) + 1];
188 strcpy(c_ForestTopic
, value
);
189 directives
[5].done
= true;
191 else if (stricmp(directive
, "REMOTESERVER") == 0)
193 value
= strtok(NULL
, " ");
194 remoteserver
= new char[strlen(value
) + 1];
195 strcpy(remoteserver
, value
);
196 directives
[6].done
= true;
198 else if (stricmp(directive
, "REMOTEPORT") == 0)
200 value
= strtok(NULL
, " ");
201 remoteport
= new char[strlen(value
) + 1];
202 strcpy(remoteport
, value
);
203 directives
[7].done
= true;
205 else if (stricmp(directive
, "REMOTEPASS") == 0)
207 value
= strtok(NULL
, "");
208 remotepass
= new char[strlen(value
) + 1];
209 strcpy(remotepass
, value
);
210 directives
[8].done
= true;
212 else if (stricmp(directive
, "PLAYERDATA") == 0)
214 value
= strtok(NULL
, "");
215 playerdata
= new char[strlen(value
) + 1];
216 strcpy(playerdata
, value
);
217 directives
[9].done
= true;
219 else if (stricmp(directive
, "MONSTERDATA") == 0)
221 value
= strtok(NULL
, "");
222 monsterdata
= new char[strlen(value
) + 1];
223 strcpy(monsterdata
, value
);
224 directives
[10].done
= true;
226 else if (stricmp(directive
, "ADMINPASS") == 0)
228 value
= strtok(NULL
, "");
229 adminpass
= new char[strlen(value
) + 1];
230 strcpy(adminpass
, value
);
231 directives
[11].done
= true;
233 else if (stricmp(directive
, "WELCOMEDELAY") == 0)
235 value
= strtok(NULL
, " ");
236 welcomedelay
= stringtoint(value
);
237 directives
[12].done
= true;
239 else if (stricmp(directive
, "FORESTFIGHTS") == 0)
241 value
= strtok(NULL
, " ");
242 forestfights
= stringtoint(value
);
243 directives
[13].done
= true;
245 else if (stricmp(directive
, "UPDATEPERIOD") == 0)
247 value
= strtok(NULL
, " ");
248 updateperiod
= stringtoint(value
);
249 directives
[14].done
= true;
251 else if (stricmp(directive
, "WELCOMEMSG") == 0)
253 value
= strtok(NULL
, "");
254 welcomemsg
= new char[strlen(value
) + 1];
255 strcpy(welcomemsg
, value
);
256 directives
[15].done
= true;
258 else if (stricmp(directive
, "PIDFILE") == 0)
260 value
= strtok(NULL
, " ");
261 pidfile
= new char[strlen(value
) + 1];
262 strcpy(pidfile
, value
);
263 directives
[16].done
= true;
265 else if (stricmp(directive
, "MAXAFIGHTDISTANCE") == 0)
267 value
= strtok(NULL
, " ");
268 maxafightdistance
= stringtoint(value
);
269 directives
[17].done
= true;;
271 else if (stricmp(directive
, "MAXBFIGHTDISTANCE") == 0)
273 value
= strtok(NULL
, " ");
274 maxbfightdistance
= stringtoint(value
);
275 directives
[18].done
= true;
280 log("Unknown Directive. Buffer: %s", buf
);
281 cerr
<< "Unknown " << config
<< " directive. Buffer: "
291 for (int count2
= 0; count2
< numdirectives
; count2
++)
293 if (!directives
[count2
].done
)
295 cerr
<< "Missing config directive: " << directives
[count2
].desc
<< endl
;