1 /* 2 * 3 * Iter Vehemens ad Necem (IVAN) 4 * Copyright (C) Timo Kiviluoto 5 * Released under the GNU General 6 * Public License 7 * 8 * See LICENSING which should be included 9 * along with this file for more details 10 * 11 */ 12 13 #ifndef __SQUARE_H__ 14 #define __SQUARE_H__ 15 16 #include "festring.h" 17 #include "ivandef.h" 18 #include "v2.h" 19 20 class area; 21 class gterrain; 22 class oterrain; 23 class outputfile; 24 class inputfile; 25 class character; 26 27 class square 28 { 29 public: 30 square(area*, v2); 31 virtual ~square(); 32 virtual void Save(outputfile&) const; 33 virtual void Load(inputfile&); 34 virtual void AddCharacter(character*); 35 virtual void RemoveCharacter(); GetCharacter()36 virtual character* GetCharacter() const { return Character; } GetLastSeen()37 ulong GetLastSeen() const { return LastSeen; } GetPos()38 v2 GetPos() const { return Pos; } GetArea()39 area* GetArea() const { return AreaUnder; } 40 virtual gterrain* GetGTerrain() const = 0; 41 virtual oterrain* GetOTerrain() const = 0; GetMemorizedDescription()42 festring GetMemorizedDescription() { return MemorizedDescription; } SetMemorizedDescription(cfestring & What)43 void SetMemorizedDescription(cfestring& What) { MemorizedDescription = What; } 44 virtual truth CanBeSeenByPlayer(truth = false) const = 0; 45 virtual truth CanBeSeenFrom(v2, long, truth = false) const = 0; SendNewDrawRequest()46 void SendNewDrawRequest() { Flags |= NEW_DRAW_REQUEST; } SendStrongNewDrawRequest()47 void SendStrongNewDrawRequest() { Flags |= STRONG_NEW_DRAW_REQUEST; } 48 cchar* SurviveMessage(character*) const; 49 cchar* MonsterSurviveMessage(character*) const; 50 cchar* DeathMessage(character*) const; 51 cchar* MonsterDeathVerb(character*) const; 52 cchar* ScoreEntry(character*) const; 53 truth IsFatalToStay() const; 54 int GetEntryDifficulty() const; 55 int GetRestModifier() const; IncStaticAnimatedEntities()56 void IncStaticAnimatedEntities() 57 { 58 ++StaticAnimatedEntities; 59 ++AnimatedEntities; 60 } DecStaticAnimatedEntities()61 void DecStaticAnimatedEntities() 62 { 63 --StaticAnimatedEntities; 64 --AnimatedEntities; 65 } IncAnimatedEntities()66 void IncAnimatedEntities() { ++AnimatedEntities; } DecAnimatedEntities()67 void DecAnimatedEntities() { --AnimatedEntities; } 68 truth CanBeSeenBy(ccharacter*, truth = false) const; GetLuminance()69 col24 GetLuminance() const { return Luminance; } 70 square* GetNeighbourSquare(int) const; 71 square* GetNearSquare(v2) const; 72 virtual int GetSquareWalkability() const = 0; SetCharacter(character * What)73 void SetCharacter(character* What) { Character = What; } AddFlags(ulong What)74 void AddFlags(ulong What) { Flags |= What; } RemoveFlags(ulong What)75 void RemoveFlags(ulong What) { Flags &= ~What; } HasBeenSeen()76 virtual truth HasBeenSeen() const { return LastSeen; } 77 virtual void SurviveEffect(character*); 78 protected: 79 festring MemorizedDescription; 80 area* AreaUnder; 81 character* Character; 82 v2 Pos; 83 col24 Luminance; 84 mutable ulong Flags; 85 ushort StaticAnimatedEntities; 86 ushort AnimatedEntities; 87 mutable uchar LastSeen; 88 }; 89 90 #endif 91