/****************************************************************************
* [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