00001 #if !defined( __DOOR_HPP)
00002 #define __DOOR_HPP
00003
00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00021 00022
00023
00024 #if !defined(__COMMON_HPP)
00025 #include <Common.hpp>
00026 #endif
00027
00028 #if !defined(__MAPSITE_HPP)
00029 #include <MapSite.hpp>
00030 #endif
00031
00032 enum DoorState
00033 {
00034 DOOROPEN=0,
00035 DOORCLOSED
00036 };
00037
00038
00039 DECLARE_CLASS( Room );
00040 DECLARE_CLASS( Door );
00041
00046 class Door : public MapSite
00047 {
00048
00049 public:
00050
00051
00052
00053
00054
00062 Door( RoomPtr = NULLPTR, RoomPtr = NULLPTR );
00063
00065
00066 Door( DoorCref );
00067
00069
00070 virtual ~Door( void );
00071
00072
00073
00074
00075
00077
00078 DoorRef operator=( DoorCref ) throw(CORELINUX(Assertion));
00079
00081
00082 bool operator==( DoorCref aRef ) const;
00083
00084
00085
00086 00088
00089 bool isOpen( void ) const;
00090
00092
00093 bool isClosed( void ) const;
00094
00096
00097 RoomPtr getFirstRoom( void ) const;
00098
00100
00101 RoomPtr getSecondRoom( void ) const;
00102
00104
00105 RoomPtr otherSideFrom( RoomPtr ) const throw(CORELINUX(Assertion));
00106
00107
00108
00109
00111
00112 void setOpen( void );
00113
00115
00116 void setClosed( void );
00117
00119
00120 void setFirstRoom( RoomPtr ) throw(CORELINUX(Assertion));
00121
00123
00124 void setSecondRoom( RoomPtr ) throw(CORELINUX(Assertion));
00125
00126
00127 00134 virtual void enter( void );
00135
00136 private:
00137
00138 RoomPtr theFirstRoom;
00139
00140 RoomPtr theSecondRoom;
00141
00142 DoorState theDoorState;
00143 };
00144
00145 #endif // if !defined(__DOOR_HPP)
00146
00147 00148 00149 00150 00151 00152 00153
00154