#include "ServerConfig.h" ServerConfig::ServerConfig() { port=4000; bootLoadModifier=300; regularLoadModifier=100; currentLoadModifier=100; experienceDivisor=1; maxPlayers=500; hungerMax=100; thirstMax=75; druggedMax=25; sacPointsNeeded=150; outOfTownModifier=1.25; commerceSkillBuyEffect=0.86; commerceSkillSellEffect=1.05; recallRoom=1; tammuzRoom=2923; newbieRoom=6; loginRoom=1; donateRoom=7; newbieBagObject=358; corpseObject=3; goldCoinsObject=5; pcSkinObject=8; meatObject=97; createFoodObject1=94; createFoodObject2=68; createFoodObject3=13; createFoodObject4=103; createLightObject=345; earthGolemMob=37; waterGolemMob=190; airGolemMob=191; fireGolemMob=193; minionMob1=38; minionMob2=39; minionMob3=41; minionMob4=42; walkingCorpseMob=57; illusionMob=55; gateDoor=44; year=1; day=1; hour=1; optUsec=200000; goldPerLb=1000; newTeleport=true; newSummon=true; maxRedundantDonates=5; convertWorldFromDev=false; useMySQL=false; mySQLuser="gmud"; mySQLpassword="password"; mySQLdatabase="gmud"; mySQLhost="localhost"; mySQLport=0; }//ServerConfig void ServerConfig::read(char* filename) { String key(20); String val(10); ifstream file(filename); if (!file) { cerr << "Couldn't open " << filename << " for reading.\n"; return; } while (!file.eof()) { file >> key; if (key[0] == '#') { while (file.get() != '\n' && !file.eof()); } else if (strlen(key) != 0) { file >> val; if (strcasecmp(key, "port") == 0) { port = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "bootLoadModifier") == 0) { bootLoadModifier = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "regularLoadModifier") == 0) { regularLoadModifier = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "experienceDivisor") == 0) { experienceDivisor = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "maxPlayers") == 0) { maxPlayers = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "hungerMax") == 0) { hungerMax = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "thirstMax") == 0) { thirstMax = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "druggedMax") == 0) { druggedMax = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "sacPointsNeeded") == 0) { sacPointsNeeded = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "outOfTownModifier") == 0) { outOfTownModifier = (double)strtod(val, NULL); } else if (strcasecmp(key, "commerceSkillBuyEffect") == 0) { commerceSkillBuyEffect = (double)strtod(val, NULL); } else if (strcasecmp(key, "commerceSkillSellEffect") == 0) { commerceSkillSellEffect = (double)strtod(val, NULL); } else if (strcasecmp(key, "recallRoom") == 0) { recallRoom = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "tammuzRoom") == 0) { tammuzRoom = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "newbieRoom") == 0) { newbieRoom = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "loginRoom") == 0) { loginRoom = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "donateRoom") == 0) { donateRoom = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "newbieBagObject") == 0) { newbieBagObject = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "corpseObject") == 0) { corpseObject = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "goldCoinsObject") == 0) { goldCoinsObject = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "pcSkinObject") == 0) { pcSkinObject = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "meatObject") == 0) { meatObject = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "createFoodObject1") == 0) { createFoodObject1 = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "createFoodObject2") == 0) { createFoodObject2 = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "createFoodObject3") == 0) { createFoodObject3 = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "createFoodObject4") == 0) { createFoodObject4 = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "createLightObject") == 0) { createLightObject = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "earthGolemMob") == 0) { earthGolemMob = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "waterGolemMob") == 0) { waterGolemMob = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "airGolemMob") == 0) { airGolemMob= (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "fireGolemMob") == 0) { fireGolemMob = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "minionMob1") == 0) { minionMob1 = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "minionMob2") == 0) { minionMob2 = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "minionMob3") == 0) { minionMob3 = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "minionMob4") == 0) { minionMob4 = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "walkingCorpseMob") == 0) { walkingCorpseMob = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "illusionMob") == 0) { illusionMob = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "gateDoor") == 0) { gateDoor = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "year") == 0) { year = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "day") == 0) { day = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "hour") == 0) { hour = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "optUsec") == 0) { optUsec = strtol(val, NULL, 0); } else if (strcasecmp(key, "goldPerLb") == 0) { goldPerLb = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "newTeleport") == 0) { if (strcasecmp(val, "true") == 0) newTeleport=true; else if (strcasecmp(val, "false") == 0) newTeleport=false; } else if (strcasecmp(key, "newSummon") == 0) { if (strcasecmp(val, "true") == 0) newSummon=true; else if (strcasecmp(val, "false") == 0) newSummon=false; } else if (strcasecmp(key, "maxRedundantDonates") == 0) { maxRedundantDonates = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "useMySQL") == 0) { if (strcasecmp(val, "true") == 0) useMySQL=true; else if (strcasecmp(val, "false") == 0) useMySQL=false; } else if (strcasecmp(key, "mySQLuser") == 0) { mySQLuser=val; } else if (strcasecmp(key, "mySQLpassword") == 0) { mySQLpassword=val; } else if (strcasecmp(key, "mySQLdatabase") == 0) { mySQLdatabase=val; } else if (strcasecmp(key, "mySQLhost") == 0) { mySQLhost=val; } else if (strcasecmp(key, "mySQLport") == 0) { mySQLport = (int)strtol(val, NULL, 0); } } } } void ServerConfig::readDynamic(char* filename) { String key(20); String val(10); ifstream file(filename); if (!file) { return; } while (!file.eof()) { file >> key; if (key[0] == '#') { while (file.get() != '\n' && !file.eof()); } else if (strlen(key) != 0) { file >> val; if (strcasecmp(key, "year") == 0) { year = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "day") == 0) { day = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "hour") == 0) { hour = (int)strtol(val, NULL, 0); } else if (strcasecmp(key, "convertWorldFromDev") == 0) { if (strcasecmp(val, "true") == 0) convertWorldFromDev=true; else if (strcasecmp(val, "false") == 0) convertWorldFromDev=false; } } } } void ServerConfig::write(char* filename) { ofstream file(filename); if (!file) { cerr << "Couldn't open " << filename << " for writing.\n"; return; } file << "port " << port << '\n'; file << "bootLoadModifier " << bootLoadModifier << '\n'; file << "regularLoadModifier " << regularLoadModifier << '\n'; file << "experienceDivisor " << experienceDivisor << '\n'; file << "maxPlayers " << maxPlayers << '\n'; file << "hungerMax " << hungerMax << '\n'; file << "thirstMax " << thirstMax << '\n'; file << "druggedMax " << druggedMax << '\n'; file << "sacPointsNeeded " << sacPointsNeeded << '\n'; file << "outOfTownModifier " << outOfTownModifier << '\n'; file << "commerceSkillBuyEffect " << commerceSkillBuyEffect << '\n'; file << "commerceSkillSellEffect " << commerceSkillSellEffect << '\n'; file << "recallRoom " << recallRoom << '\n'; file << "tammuzRoom " << tammuzRoom << '\n'; file << "newbieRoom " << newbieRoom << '\n'; file << "loginRoom " << loginRoom << '\n'; file << "donateRoom " << donateRoom << '\n'; file << "newbieBagObject " << newbieBagObject << '\n'; file << "corpseObject " << corpseObject << '\n'; file << "goldCoinsObject " << goldCoinsObject << '\n'; file << "pcSkinObject " << pcSkinObject << '\n'; file << "meatObject " << meatObject << '\n'; file << "createFoodObject1 " << createFoodObject1 << '\n'; file << "createFoodObject2 " << createFoodObject2 << '\n'; file << "createFoodObject3 " << createFoodObject3 << '\n'; file << "createFoodObject4 " << createFoodObject4 << '\n'; file << "createLightObject " << createLightObject << '\n'; file << "earthGolemMob " << earthGolemMob << '\n'; file << "waterGolemMob " << waterGolemMob << '\n'; file << "airGolemMob " << airGolemMob << '\n'; file << "fireGolemMob " << fireGolemMob << '\n'; file << "minionMob1 " << minionMob1 << '\n'; file << "minionMob2 " << minionMob2 << '\n'; file << "minionMob3 " << minionMob3 << '\n'; file << "minionMob4 " << minionMob4 << '\n'; file << "walkingCorpseMob " << walkingCorpseMob << '\n'; file << "illusionMob " << illusionMob << '\n'; file << "gateDoor " << gateDoor << '\n'; file << "Year " << year << '\n'; file << "Day " << day << '\n'; file << "Hour " << hour << '\n'; file << "optUsec" << optUsec << '\n'; file << "goldPerLb " << goldPerLb << '\n'; if (newTeleport) { file << "newTeleport true\n"; } else { file << "newSummon false\n"; } if (newSummon) { file << "newSummon true\n"; } else { file << "newSummon false\n"; } file << "maxRedundantDonates " << maxRedundantDonates << '\n'; if (useMySQL) { file << "useMySQL true\n"; file << "mySQLuser " << mySQLuser << '\n'; file << "mySQLpassword " << mySQLpassword << '\n'; file << "mySQLdatabase " << mySQLdatabase << '\n'; file << "mySQLhost " << mySQLhost << '\n'; file << "mySQLport " << mySQLport << '\n'; } else { file << "useMySQL false\n"; } } void ServerConfig::writeDynamic(char* filename) { ofstream file(filename); if (!file) { cerr << "Couldn't open " << filename << " for writing.\n"; return; } file << "# This file holds the fields the server changes by itself.\n"; file << "# They will override anything in grrmud.cfg\n"; file << "Year " << year << '\n'; file << "Day " << day << '\n'; file << "Hour " << hour << '\n'; file << "convertWorldFromDev " << convertWorldFromDev << '\n'; }