/**************************************************************************** * [S]imulated [M]edieval [A]dventure multi[U]ser [G]ame | * * -----------------------------------------------------------| \\._.// * * SmaugWizard (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. * * ------------------------------------------------------------------------ * * Language Class Interface file * ***************************************************************************/ #ifndef LANGUAGE_H #define LANGUAGE_H #define CurrentLanguageFileVersion 1000 // These are the only fixed language definitions #define LANG_ALL 0 // duplicated in Smaug.h #define LANG_COMMON 1 // These languages are the default languages that will be used if no // language file is found, and the names below are used when setting // up the default list. But the enums are commented out to eliminate // the chance that someone will accidentally use them (which would // cause problems). //enum LanguageTypes { // LANG_ALL, LANG_COMMON, LANG_ELVEN, LANG_DWARVEN, LANG_PIXIE, LANG_OGRE, // LANG_ORCISH, LANG_TROLLISH, LANG_RODENT, LANG_INSECTOID, // LANG_MAMMAL, LANG_REPTILE, LANG_DRAGON, LANG_SPIRITUAL, // LANG_MAGICAL, LANG_GOBLIN, LANG_GOD, LANG_ANCIENT, // LANG_HALFLING, LANG_CLAN, LANG_GITH, MAX_LANGUAGE }; #define MAX_LANGUAGE 21 #ifdef SMAUGSERVER_CPP const char *LanguageNames [MAX_LANGUAGE] = { "all", "common", "elvish", "dwarven", "pixie", "ogre", "orcish", "trollese", "rodent", "insectoid", "mammal", "reptile", "dragon", "spiritual", "magical", "goblin", "god", "ancient", "halfling", "clan", "gith" }; #endif extern const char *LanguageNames [MAX_LANGUAGE]; #define VALID_LANGS (LANG_COMMON | LANG_ELVEN | LANG_DWARVEN \ | LANG_PIXIE | LANG_OGRE | LANG_ORCISH \ | LANG_TROLLISH | LANG_GOBLIN | LANG_HALFLING \ | LANG_GITH) // 18 Languages class CLanguage { public: CLanguage (int lang, const char* n, BOOL learn = TRUE) { m_nLanguage = lang; m_Name = n; m_bLearn = learn; } BOOL Read (FILE* fp); void Write (); BOOL HasName () { return ! m_Name.IsEmpty (); } void SetName (const char* n) { m_Name = n; } const CString& GetName () { return m_Name; } int GetLanguage () { return m_nLanguage; } BOOL CanLearn () { return m_bLearn; } friend class CLanguageTable; protected: int m_nLanguage; BOOL m_bLearn; CString m_Name; // Language name }; class CLanguageTable : public CPtrList { public: void Load (); void Save (); int GetCurrentVersion () { return CurrentLanguageFileVersion; } BOOL IsValidLanguage (int l) { return l > 0 && l < GetCount (); } int GetCommon () { return m_Common; } int GetClan () { return m_Clan; } void Add (CLanguage* pLa) { AddTail (pLa); } BOOL LoadLanguageFile (const char *fname); int GetLanguage (const char* name); void LoadFromString (CBitVector& Bv, char* s); CLanguage *GetNext (POSITION& pos) { return (CLanguage*) CPtrList::GetNext (pos); } CLanguage *GetLanguageData (int l) { if (l < 0 || l > GetCount ()) return NULL; else return (CLanguage*) GetAt (FindIndex (l)); } const CString& GetName (int l) { return GetLanguageData (l)->m_Name; } BOOL HasName (int l) { return GetLanguageData (l)->HasName (); } CLanguage *Find (const char* prefix); CLanguage *RemoveTail () { return (CLanguage*) CPtrList::RemoveTail (); } void SetFromString (char*& pLine, CBitVector& Bv); CString PrintAssigned (const CBitVector& Bv); void RemoveAll (); private: int m_Common, m_Clan; }; #ifdef SMAUGSERVER_CPP CLanguageTable LanguageTable; #endif extern CLanguageTable LanguageTable; #endif