moved almost all hardcoded constants to "define.dat"
[k8-i-v-a-n.git] / src / game / id.h
blob115049894c0bf43bb150d033651157955bf07bc7
1 /*
3 * Iter Vehemens ad Necem (IVAN)
4 * Copyright (C) Timo Kiviluoto
5 * Released under the GNU General
6 * Public License
8 * See LICENSING which should be included
9 * along with this file for more details
13 #ifndef __ID_H__
14 #define __ID_H__
16 #include "ivancommon.h"
18 #include "typedef.h"
21 class festring;
24 #define CHAR_NAME(Case) GetName(Case).CStr()
25 #define CHAR_DESCRIPTION(Case) GetDescription(Case).CStr()
28 class id {
29 public:
30 virtual ~id () {}
32 virtual void AddName (festring &, int, int) const;
33 virtual festring GetName (int, int) const;
34 virtual void AddName (festring &, int) const;
35 virtual festring GetName (int) const;
36 cchar *GetArticle () const { return UsesLongArticle() ? "an" : "a"; }
38 protected:
39 virtual cfestring &GetNameSingular () const = 0;
40 virtual void AddNameSingular (festring &, truth) const;
41 virtual cfestring& GetNamePlural () const = 0;
42 virtual truth UsesLongArticle () const = 0;
43 virtual truth AddRustLevelDescription (festring &, truth) const { return false; }
44 virtual truth AddStateDescription (festring &, truth) const { return false; }
45 virtual truth AddAdjective (festring &, truth) const;
46 virtual cfestring &GetAdjective () const = 0;
47 virtual truth UsesLongAdjectiveArticle () const = 0;
48 virtual truth AddMaterialDescription (festring &, truth) const { return false; }
49 virtual cfestring& GetPostFix () const = 0;
50 virtual void AddPostFix (festring &, int) const;
51 virtual int GetArticleMode () const { return 0; }
52 virtual truth ShowMaterial () const { return false; }
53 virtual truth AddActiveAdjective (festring &, truth) const;
57 #endif