]> jfr.im git - irc/gameservirc.git/blobdiff - gameserv/config.cpp
updated the TODO
[irc/gameservirc.git] / gameserv / config.cpp
index 46f01343699aaa6d9aa7dd93f7b1268a02cbceb0..4df34843d9d4a61184f1c70f42ba34abcc3692fc 100644 (file)
@@ -2,7 +2,6 @@
 #include <string.h>
 #include <stdlib.h>
 #include <stdio.h>
-#include "item.h"
 #include "extern.h"
 #include "flags.h"
 
@@ -36,15 +35,20 @@ int maxidletime;            // Max time (in seconds) a player can be idle for
 int idlecheckperiod;           // Period for checking every player's idle time
 int level1expire;              // Days for level 1 players to expire
 int defaultexpire;             // Days for other levels to expire
+int maxitems;                   // Maximum amount of items a player can carry
 long refreshperiod;            // Period for refreshing players
 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 *remoteserver;            // Server to connect to
-char *remoteport;              // Port to connect to on remoteserver
+char *localhost;                // Hostname of the local address to bind to
+int  remoteport;               // Port to connect to on remoteserver
 char *remotepass;              // Password for the server link
 
+char *storeitemdata;            // File to store the items available in the store
+char *tavernitemdata;           // File to store the items available in the tavern
+char *itemdata;                 // File to store the items in
 char *playerdata;              // File to store player data in
 char *dragondata;              // File to store current dragon data in
 char *masterdata;              // File to store the master data in
@@ -57,53 +61,59 @@ char *pidfile;                      // Process ID file
 
 void unload_config_file()
 {
-    if (s_GameServ)
-       delete [] s_GameServ;
-    if (gshost)
-       delete [] gshost;
-    if (gsident)
-       delete [] gsident;
-    if (servername)
-       delete [] servername;
-    if (c_Forest)
-       delete [] c_Forest;
-    if (c_ForestTopic)
-       delete [] c_ForestTopic;
-    if (remoteserver)
-       delete [] remoteserver;
-    if (remoteport)
-       delete [] remoteport;
-    if (remotepass)
-       delete [] remotepass;
-    if (playerdata)
-       delete [] playerdata;
-    if (dragondata)
-       delete [] dragondata;
-    if (masterdata)
-       delete [] masterdata;
-    if (adminpass)
-       delete [] adminpass;
-    if (welcomemsg)
-       delete [] welcomemsg;
-    if (pidfile)
-       delete [] pidfile;
-    if (ignoreserverslist)
-       delete [] ignoreserverslist;
-    if (newsdata)
-       delete [] newsdata;
-    if (nsname)
-       delete [] nsname;
-    if (nspass)
-       delete [] nspass;
+  if (s_GameServ)
+    delete [] s_GameServ;
+  if (gshost)
+    delete [] gshost;
+  if (gsident)
+    delete [] gsident;
+  if (servername)
+    delete [] servername;
+  if (c_Forest)
+    delete [] c_Forest;
+  if (c_ForestTopic)
+    delete [] c_ForestTopic;
+  if (remoteserver)
+    delete [] remoteserver;
+  if (localhost)
+    delete [] localhost;
+  if (remotepass)
+    delete [] remotepass;
+  if (playerdata)
+    delete [] playerdata;
+  if (storeitemdata)
+    delete [] storeitemdata;
+  if (tavernitemdata)
+    delete [] tavernitemdata;
+  if (itemdata)
+    delete [] itemdata;
+  if (dragondata)
+    delete [] dragondata;
+  if (masterdata)
+    delete [] masterdata;
+  if (adminpass)
+    delete [] adminpass;
+  if (welcomemsg)
+    delete [] welcomemsg;
+  if (pidfile)
+    delete [] pidfile;
+  if (ignoreserverslist)
+    delete [] ignoreserverslist;
+  if (newsdata)
+    delete [] newsdata;
+  if (nsname)
+    delete [] nsname;
+  if (nspass)
+    delete [] nspass;
 
-    configflags = 0;
+  configflags = 0;
 }
 
 int load_config_file(char *config)
 {
     char *buf, *directive, *value;
 
-    #define numdirectives 30
+    #define numdirectives 35
 
     unload_config_file();
 
@@ -159,6 +169,11 @@ int load_config_file(char *config)
     directives[28].desc = "DRAGONDATA - File to store the current "\
                        "dragon's stats in";
     directives[29].desc = "MASTERDATA - File to store the level master stats in";
+    directives[30].desc = "ITEMDATA - File to store the items in";
+    directives[31].desc = "TAVERNITEMDATA - File in which to store the items that are available in the tavern";
+    directives[32].desc = "MAXITEMS - Maximum number of items a player can carry";
+    directives[33].desc = "STOREITEMDATA - File in which to store the items that are available in the store";
+    directives[34].desc = "LOCALHOST - Local hostname or IP to bind to when connecting to the remote server";
 
     configflags = 0;
 
@@ -250,8 +265,7 @@ int load_config_file(char *config)
        else if (stricmp(directive, "REMOTEPORT") == 0)
        {
            value = strtok(NULL, " ");
-           remoteport = new char[strlen(value) + 1];
-           strcpy(remoteport, value);
+           remoteport = stringtoint(value);
            directives[7].done = true;
        }
        else if (stricmp(directive, "REMOTEPASS") == 0)
@@ -402,6 +416,40 @@ int load_config_file(char *config)
            strcpy(masterdata, value);
            directives[29].done = true;
        }
+       else if (stricmp(directive, "ITEMDATA") == 0)
+       {
+         value = strtok(NULL, "");
+         itemdata = new char[strlen(value) + 1];
+         strcpy(itemdata, value);
+         directives[30].done = true;
+       }
+       else if (stricmp(directive, "TAVERNITEMDATA") == 0)
+         {
+           value = strtok(NULL, "");
+           tavernitemdata = new char[strlen(value) + 1];
+           strcpy(tavernitemdata, value);
+           directives[31].done = true;
+         }
+       else if (stricmp(directive, "MAXITEMS") == 0)
+         {
+           value = strtok(NULL, "");
+           maxitems = stringtoint(value);
+           directives[32].done = true;
+         }
+       else if (stricmp(directive, "STOREITEMDATA") == 0)
+         {
+           value = strtok(NULL, "");
+           storeitemdata = new char[strlen(value) + 1];
+           strcpy(storeitemdata, value);
+           directives[33].done = true;
+         }
+       else if (stricmp(directive, "LOCALHOST") == 0)
+         {
+           value = strtok(NULL, "");
+           localhost = new char[strlen(value) + 1];
+           strcpy(localhost, value);
+           directives[34].done = true;
+         }
        else if (stricmp(directive, "WELCOMEMSG") == 0)
        {
            // This directive is optional