#include <stdlib.h>
#include <stdio.h>
#include "extern.h"
+#include "flags.h"
using std::ifstream;
using std::cerr;
int maxbfightdistance; // Max levels below a player they can fight player->player
int maxidletime; // Max time (in seconds) a player can be idle for
int idlecheckperiod; // Period for checking every player's idle time
-bool listenonc_forest; // If true, listen for commands on the forest channel
+long configflags; // Holds the bit representation of some boolean values
// Remote server stuff. This is used for the outgoing connection gameserv needs to make
// to a real ircd.
char *playerdata; // File to store player data in
char *monsterdata; // File to load monster data from
+char *newsdata; // File to store news data in
char *pidfile; // Process ID file
#if defined(P10)
delete [] pidfile;
if (ignoreserverslist)
delete [] ignoreserverslist;
+ if (newsdata)
+ delete [] newsdata;
+
+ configflags = 0;
}
int load_config_file(char *config)
directives[12].desc = "WELCOMEDELAY - Delay (in seconds) to wait before welcoming new users to the network";
directives[13].desc = "FORESTFIGHTS - Number of forest fights players get every day";
directives[14].desc = "UPDATEPERIOD - Number of seconds between every player data save";
- directives[15].desc = "WELCOMEMSG - Message to send to new users on the network";
- directives[16].desc = "PIDFILE - Filename to store the gameserv process ID in";
- directives[17].desc = "MAXAFIGHTDISTANCE - The maximum number of levels above you "\
+ directives[15].desc = "PIDFILE - Filename to store the gameserv process ID in";
+ directives[16].desc = "MAXAFIGHTDISTANCE - The maximum number of levels above you "\
"that you can fight player->player";
- directives[18].desc = "MAXBFIGHTDISTANCE - The maximum number of levels below you "\
+ directives[17].desc = "MAXBFIGHTDISTANCE - The maximum number of levels below you "\
"that you can fight player->player";
- directives[19].desc = "MAXIDLETIME - The maximum amount of time (in seconds) "\
+ directives[18].desc = "MAXIDLETIME - The maximum amount of time (in seconds) "\
"that a player can be idle before something happens";
- directives[20].desc = "IDLECHECKPERIOD - The period (in seconds) in which the entire "\
+ directives[19].desc = "IDLECHECKPERIOD - The period (in seconds) in which the entire "\
"players list will be checked for idlers. See also: "\
"MAXIDLETIME";
- directives[21].desc = "LISTENONC_FOREST - True/False as to "\
+ directives[20].desc = "LISTENONC_FOREST - True/False as to "\
"whether or not to listen for forest "\
"commands on the forest channel";
+ directives[21].desc = "NEWSDATA - File to store daily news in";
+
+ configflags = 0;
for (int count = 0; count < numdirectives; count++)
{
updateperiod = stringtoint(value);
directives[14].done = true;
}
- else if (stricmp(directive, "WELCOMEMSG") == 0)
- {
- value = strtok(NULL, "");
- welcomemsg = new char[strlen(value) + 1];
- strcpy(welcomemsg, value);
- directives[15].done = true;
- }
else if (stricmp(directive, "PIDFILE") == 0)
{
value = strtok(NULL, " ");
pidfile = new char[strlen(value) + 1];
strcpy(pidfile, value);
- directives[16].done = true;
+ directives[15].done = true;
}
else if (stricmp(directive, "MAXAFIGHTDISTANCE") == 0)
{
value = strtok(NULL, " ");
maxafightdistance = stringtoint(value);
- directives[17].done = true;;
+ directives[16].done = true;;
}
else if (stricmp(directive, "MAXBFIGHTDISTANCE") == 0)
{
value = strtok(NULL, " ");
maxbfightdistance = stringtoint(value);
- directives[18].done = true;
+ directives[17].done = true;
}
else if (stricmp(directive, "MAXIDLETIME") == 0)
{
value = strtok(NULL, " ");
maxidletime = stringtoint(value);
- directives[19].done = true;
+ directives[18].done = true;
}
else if (stricmp(directive, "IDLECHECKPERIOD") == 0)
{
value = strtok(NULL, " ");
idlecheckperiod = stringtoint(value);
- directives[20].done = true;
+ directives[19].done = true;
}
else if (stricmp(directive, "LISTENONC_FOREST") == 0)
{
value = strtok(NULL, " ");
if (stricmp(value, "TRUE") == 0)
- listenonc_forest = true;
- else
- listenonc_forest = false;
+ setListenOnCF();
+ directives[20].done = true;
+ }
+ else if (stricmp(directive, "NEWSDATA") == 0)
+ {
+ value = strtok(NULL, " ");
+ newsdata = new char [strlen(value) + 1];
+ strcpy(newsdata, value);
directives[21].done = true;
}
+ else if (stricmp(directive, "WELCOMEMSG") == 0)
+ {
+ // This directive is optional
+ value = strtok(NULL, "");
+ welcomemsg = new char[strlen(value) + 1];
+ strcpy(welcomemsg, value);
+ setWelcome();
+ }
+ else if (stricmp(directive, "USEPRIVMSG") == 0)
+ {
+ // This directive is optional
+ setUsePrivmsg();
+ }
+ else if (stricmp(directive, "BOPER") == 0)
+ {
+ // This directive is optional
+ setBOper();
+ }
else if (stricmp(directive, "IGNORESERVERS") == 0)
{
// This directive is optional