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 __ENTITY_H__ 14 #define __ENTITY_H__ 15 16 #include <list> 17 18 #include "ivandef.h" 19 20 #define EXISTS 1 21 #define HAS_BE 2 22 #define ENTITY_FLAGS 3 23 24 class square; 25 struct v2; 26 27 class entity 28 { 29 public: 30 friend class pool; 31 entity(int); 32 entity(const entity&); 33 virtual ~entity(); Be()34 virtual void Be() { } Exists()35 truth Exists() const { return Flags & EXISTS; } 36 void SendToHell(); IsEnabled()37 truth IsEnabled() const { return Flags & HAS_BE; } 38 void Enable(); 39 void Disable(); 40 virtual square* GetSquareUnderEntity(int = 0) const = 0; SignalVolumeAndWeightChange()41 virtual void SignalVolumeAndWeightChange() { } GetEmitation()42 col24 GetEmitation() const { return Emitation; } SignalEmitationIncrease(col24)43 virtual void SignalEmitationIncrease(col24) { } SignalEmitationDecrease(col24)44 virtual void SignalEmitationDecrease(col24) { } ContentsCanBeSeenBy(ccharacter *)45 virtual truth ContentsCanBeSeenBy(ccharacter*) const { return false; } AllowSpoil()46 virtual truth AllowSpoil() const { return false; } SignalSpoil(material *)47 virtual void SignalSpoil(material*) { } SignalSpoilLevelChange(material *)48 virtual void SignalSpoilLevelChange(material*) { } 49 virtual truth IsOnGround() const = 0; AllowContentEmitation()50 virtual truth AllowContentEmitation() const { return true; } SignalRustLevelChange()51 virtual void SignalRustLevelChange() { } SignalBurn(material *)52 virtual void SignalBurn(material*) { } Extinguish(truth)53 virtual void Extinguish(truth) { } AddSpecialExtinguishMessageForPF()54 virtual void AddSpecialExtinguishMessageForPF() { } AddExtinguishMessage()55 virtual void AddExtinguishMessage() { } SignalBurnLevelChange()56 virtual void SignalBurnLevelChange() { } SignalBurnLevelTransitionMessage()57 virtual void SignalBurnLevelTransitionMessage() { } RemoveMaterial(material *)58 virtual material* RemoveMaterial(material*) { return 0; } TryNecromancy(character *)59 virtual character* TryNecromancy(character*) { return 0; } SignalDisappearance()60 virtual void SignalDisappearance() { } SpecialEatEffect(character *,int)61 virtual void SpecialEatEffect(character*, int) { } GetTrapID()62 virtual ulong GetTrapID() const { return 0; } GetVictimID()63 virtual ulong GetVictimID() const { return 0; } AddTrapName(festring &,int)64 virtual void AddTrapName(festring&, int) const { } UnStick()65 virtual void UnStick() { } UnStick(int)66 virtual void UnStick(int) { } 67 virtual truth TryToUnStick(character*, v2); GetTrapType()68 virtual int GetTrapType() const { return 0; } AddFlags(ulong What)69 void AddFlags(ulong What) { Flags |= What; } RemoveFlags(ulong What)70 void RemoveFlags(ulong What) { Flags &= ~What; } IsStuckTo(ccharacter *)71 virtual truth IsStuckTo(ccharacter*) const { return false; } FindCarrier()72 virtual ccharacter* FindCarrier() const { return 0; } 73 protected: 74 col24 Emitation; 75 ulong Flags; 76 private: 77 entity* Last; 78 entity* Next; 79 }; 80 81 #endif 82