/**************************************************************************** * [S]imulated [M]edieval [A]dventure multi[U]ser [G]ame | * * -----------------------------------------------------------| \\._.// * * SmaugWiz (C) 1998 by Russ Pillsbury (Windows NT version) | (0...0) * * -----------------------------------------------------------| ).:.( * * SMAUG (C) 1994, 1995, 1996 by Derek Snider | {o o} * * -----------------------------------------------------------| / ' ' \ * * SMAUG code team: Thoric, Altrag, Blodkai, Narn, Haus, |~'~.VxvxV.~'~* * Scryn, Swordbearer, Rennard, Tricops, and Gorog. | * * ------------------------------------------------------------------------ * * Merc 2.1 Diku Mud improvments copyright (C) 1992, 1993 by Michael * * Chastain, Michael Quan, and Mitchell Tse. * * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, * * Michael Seifert, Hans Henrik Staerfeldt, Tom Madsen, and Katja Nyboe. * * ------------------------------------------------------------------------ * * SmaugFiles Interface file * ****************************************************************************/ #ifndef SMAUGFILES_H #define SMAUGFILES_H // Data files used by the server. // AREA_LIST contains a list of areas to boot. // All files are read in completely at bootup. // Most output files (bug, idea, typo, shutdown) are append-only. #define PLAYER_DIR "player" // Player files #define AREA_DIR "area" // Area files #define BACKUP_DIR "backup" // Backup Player files #define GOD_DIR "gods" // God Info Dir #define BOARD_DIR "boards" // Board data dir #define CLAN_DIR "clans" // Clan data dir #define COUNCIL_DIR "councils" // Council data dir #define GUILD_DIR "guilds" // Guild data dir #define DEITY_DIR "deity" // Deity data dir #define BUILD_DIR "building" // Online building save dir #define SYSTEM_DIR "system" // Main system files #define PROG_DIR "mudprogs" // MUDProg files #define CORPSE_DIR "corpses" // Corpses #define CLASS_DIR "classes" // Classes #define RACE_DIR "races" // Races static char *DirectoryNames [] = { PLAYER_DIR, AREA_DIR, BACKUP_DIR, GOD_DIR, BOARD_DIR, CLAN_DIR, COUNCIL_DIR, GUILD_DIR, DEITY_DIR, BUILD_DIR, SYSTEM_DIR, PROG_DIR, CORPSE_DIR, CLASS_DIR, RACE_DIR }; enum SmaugDirType { SD_PLAYER_DIR, SD_AREA_DIR, SD_BACKUP_DIR, SD_GOD_DIR, SD_BOARD_DIR, SD_CLAN_DIR, SD_COUNCIL_DIR, SD_GUILD_DIR, SD_DEITY_DIR, SD_BUILD_DIR, SD_SYSTEM_DIR, SD_PROG_DIR, SD_CORPSE_DIR, SD_CLASS_DIR, SD_RACE_DIR, SD_LAST_DIR }; // The NULL_FILE is held open so that we have a stream handle in reserve, // so players can go ahead and telnet to all the other descriptors. // Then we close it whenever we need to open a file (e.g. a save file). #define NULL_FILE SYSTEM_DIR "/Nullfile.txt" // To reserve one stream #define AREA_LIST AREA_DIR "/Area.lst" // List of areas #define BAN_LIST SYSTEM_DIR "/Ban.lst" // List of bans #define CLAN_LIST CLAN_DIR "/Clan.lst" // List of clans #define COUNCIL_LIST COUNCIL_DIR "/Council.lst" // List of councils #define GUILD_LIST GUILD_DIR "/Guild.lst" // List of guilds #define GOD_LIST GOD_DIR "/Gods.lst" // List of gods #define DEITY_LIST DEITY_DIR "/Deity.lst" // List of deities #define CLASS_LIST CLASS_DIR "/Class.lst" // List of classes #define RACE_LIST RACE_DIR "/Race.lst" // List of racees #define BOARD_FILE BOARD_DIR "/Boards.txt" // For bulletin boards #define SHUTDOWN_FILE SYSTEM_DIR "/Shutdown.txt" // For 'shutdown' #define RIPSCREEN_FILE SYSTEM_DIR "/Mudrip.rip" #define RIPTITLE_FILE SYSTEM_DIR "/Mudtitle.rip" #define ANSITITLE_FILE SYSTEM_DIR "/Mudtitle.ans" #define ASCTITLE_FILE SYSTEM_DIR "/Mudtitle.asc" #define BOOTLOG_FILE SYSTEM_DIR "/Boot.txt" // Boot up error file #define BUG_FILE SYSTEM_DIR "/Bugs.txt" // For 'bug' and bug() #define IDEA_FILE SYSTEM_DIR "/Ideas.txt" // For 'idea' #define TYPO_FILE SYSTEM_DIR "/Typos.txt" // For 'typo' #define LOG_FILE SYSTEM_DIR "/Log.txt" // For talking in logged rooms #define WIZLIST_FILE SYSTEM_DIR "/Wizlist.txt" // Wizlist #define WHO_FILE SYSTEM_DIR "/Who.txt" // Who output file #define WEBWHO_FILE SYSTEM_DIR "/WebWho.txt" // WWW Who output file #define REQUEST_PIPE SYSTEM_DIR "/Requests.txt" // Request FIFO #define SKILL_FILE SYSTEM_DIR "/Skills.dat" // Skill table #define HERB_FILE SYSTEM_DIR "/Herbs.dat" // Herb table #define SOCIAL_FILE SYSTEM_DIR "/Socials.dat" // Socials #define COMMAND_FILE SYSTEM_DIR "/Commands.dat" // Commands #define USAGE_FILE SYSTEM_DIR "/Usage.txt" // How many people are on // every half hour - // trying to determine // best reboot time #define SYS_FILE SYSTEM_DIR "/Sysdata.dat" static char *FileNameList [] = { NULL_FILE, AREA_LIST, BAN_LIST, CLAN_LIST, COUNCIL_LIST, GUILD_LIST, GOD_LIST, DEITY_LIST, CLASS_LIST, RACE_LIST, BOARD_FILE, SHUTDOWN_FILE, RIPSCREEN_FILE, RIPTITLE_FILE, ANSITITLE_FILE, ASCTITLE_FILE, BOOTLOG_FILE, BUG_FILE, IDEA_FILE, TYPO_FILE, LOG_FILE, WIZLIST_FILE, WHO_FILE, WEBWHO_FILE, REQUEST_PIPE, SKILL_FILE, HERB_FILE, SOCIAL_FILE, COMMAND_FILE, USAGE_FILE, SYS_FILE, }; // Note this list must agree in count and position with the above // file name list. enum SmaugFileType { SM_NULL_FILE, SM_AREA_LIST, SM_BAN_LIST, SM_CLAN_LIST, SM_COUNCIL_LIST, SM_GUILD_LIST, SM_GOD_LIST, SM_DEITY_LIST, SM_CLASS_LIST, SM_RACE_LIST, SM_BOARD_FILE, SM_SHUTDOWN_FILE, SM_RIPSCREEN_FILE, SM_RIPTITLE_FILE, SM_ANSITITLE_FILE, SM_ASCTITLE_FILE, SM_BOOTLOG_FILE, SM_BUG_FILE, SM_IDEA_FILE, SM_TYPO_FILE, SM_LOG_FILE, SM_WIZLIST_FILE, SM_WHO_FILE, SM_WEBWHO_FILE, SM_REQUEST_PIPE, SM_SKILL_FILE, SM_HERB_FILE, SM_SOCIAL_FILE, SM_COMMAND_FILE, SM_USAGE_FILE, SM_SYS_FILE, SM_LAST_FILE }; class CSmaugFiles { public: ~CSmaugFiles () { m_FileRoot.Empty (); } CString GetDir (SmaugDirType d) { return m_FileRoot + '/' + DirectoryNames [d]; } CString GetName (SmaugFileType file) { return m_FileRoot + '/' + FileNameList [file]; } CString MakeName (SmaugDirType d, const char* n) { return GetDir (d) + '/' + n; } CString PlayerName (const char* n) { return GetDir (SD_PLAYER_DIR) + '/' + n[0] + '/' + n + ".dat"; } CString BackupPlayerName (const char* n) { return GetDir (SD_BACKUP_DIR) + '/' + n[0] + '/' + n + ".bak"; } BOOL CreatePlayerDirectory (CString& Path, const char* name, BOOL bBackup = FALSE); CString MakeDeityName (const char* n) { return GetDir (SD_DEITY_DIR) + '/' + n + ".dat"; } CString MakeRaceName (const char* n) { return GetDir (SD_RACE_DIR) + '/' + n + ".race"; } CString MakeCorpseName (const char* n) { return GetDir (SD_CORPSE_DIR) + '/' + n + ".dat"; } CString MakeBuildName (const char* n) { return GetDir (SD_BUILD_DIR) + '/' + n + ".are"; } CString MakeAreaName (const char* n, BOOL bBuild = FALSE) { return GetDir (bBuild ? SD_BUILD_DIR : SD_AREA_DIR) + '/' + n + ".are"; } CString MakeBackupName (const char* n); BOOL Exists (const char* Fname); int Remove (const char* Fname); int Rename (const char* OldName, const char* NewName); CString m_FileRoot; }; #ifdef SMAUGSERVER_CPP CSmaugFiles FileTable; #endif extern CSmaugFiles FileTable; #endif