2016-07-29 17:00:23 +00:00
|
|
|
#ifndef __URDE_CMAPPABLEOBJECT_HPP__
|
|
|
|
#define __URDE_CMAPPABLEOBJECT_HPP__
|
|
|
|
|
|
|
|
#include "RetroTypes.hpp"
|
|
|
|
#include "zeus/CAABox.hpp"
|
|
|
|
#include "zeus/CTransform.hpp"
|
2017-01-26 10:06:18 +00:00
|
|
|
#include "GameGlobalObjects.hpp"
|
2016-07-29 17:00:23 +00:00
|
|
|
|
|
|
|
namespace urde
|
|
|
|
{
|
|
|
|
class CStateManager;
|
|
|
|
class CMappableObject
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
enum class EMappableObjectType
|
|
|
|
{
|
|
|
|
BlueDoor = 0,
|
|
|
|
ShieldDoor = 1,
|
|
|
|
IceDoor = 2,
|
|
|
|
WaveDoor = 3,
|
|
|
|
PlasmaDoor = 4,
|
|
|
|
BigDoor1 = 5,
|
|
|
|
BigDoor2 = 6,
|
|
|
|
IceDoorCeiling = 7,
|
|
|
|
IceDoorFloor = 8,
|
|
|
|
WaveDoorCeiling = 9,
|
|
|
|
WaveDoorFloor = 10,
|
2016-08-02 06:19:52 +00:00
|
|
|
PlasmaDoorCeiling= 11,
|
|
|
|
PlasmaDoorFloor = 12,
|
2016-07-29 17:00:23 +00:00
|
|
|
IceDoorFloor2 = 13,
|
|
|
|
WaveDoorFloor2 = 14,
|
2016-07-31 01:43:34 +00:00
|
|
|
Fifteen = 15,
|
2016-07-29 17:00:23 +00:00
|
|
|
DownArrowYellow = 27, /* Maintenance Tunnel */
|
|
|
|
UpArrowYellow = 28, /* Phazon Processing Center */
|
|
|
|
DownArrowGreen = 29, /* Elevator A */
|
|
|
|
UpArrowGreen = 30, /* Elite Control Access */
|
|
|
|
DownArrowRed = 31, /* Elevator B */
|
|
|
|
UpArrowRed = 32, /* Fungal Hall Access */
|
|
|
|
TransportLift = 33,
|
|
|
|
SaveStation = 34,
|
|
|
|
MissileStation = 37
|
|
|
|
};
|
|
|
|
|
|
|
|
private:
|
|
|
|
static const zeus::CVector3f skDoorVerts[8];
|
|
|
|
|
2016-08-02 06:19:52 +00:00
|
|
|
EMappableObjectType x0_type;
|
2016-07-31 01:43:34 +00:00
|
|
|
u32 x4_;
|
|
|
|
TEditorId x8_;
|
|
|
|
u32 xc_;
|
2016-08-02 06:19:52 +00:00
|
|
|
zeus::CTransform x10_transform;
|
2016-07-31 01:43:34 +00:00
|
|
|
zeus::CTransform AdjustTransformForType();
|
2016-07-29 17:00:23 +00:00
|
|
|
public:
|
|
|
|
void PostConstruct(const void*);
|
|
|
|
const zeus::CTransform& GetTransform() const;
|
|
|
|
EMappableObjectType GetType() const;
|
|
|
|
void Draw(int, const CStateManager&, float, bool) const;
|
|
|
|
void DrawDoorSurface(int, const CStateManager&, float, int, bool) const;
|
2016-08-02 06:19:52 +00:00
|
|
|
zeus::CVector3f BuildSurfaceCenterPoint(s32) const;
|
2016-07-29 17:00:23 +00:00
|
|
|
bool IsDoorConnectedToArea(s32, const CStateManager&) const;
|
|
|
|
bool IsDoorConnectedToVisitedArea(const CStateManager&) const;
|
|
|
|
bool GetIsVisibleToAutoMapper(bool) const;
|
|
|
|
bool GetIsSeen() const;
|
|
|
|
|
|
|
|
void ReadAutoMapperTweaks(const ITweakAutoMapper&);
|
|
|
|
static bool GetTweakIsMapVisibilityCheat();
|
|
|
|
static bool IsDoorType(EMappableObjectType);
|
|
|
|
};
|
|
|
|
}
|
|
|
|
#endif // __URDE_CMAPPABLEOBJECT_HPP__
|