Re3/src/vehicles/DamageManager.h

116 lines
2.4 KiB
C
Raw Normal View History

2019-06-24 18:42:23 -04:00
#pragma once
#include "common.h"
2019-07-05 16:19:52 -04:00
// TODO: move some of this into Vehicle.h
2019-07-18 15:41:20 -04:00
enum eEngineStatus
{
2019-07-26 12:48:14 -04:00
ENGINE_STATUS_STEAM1 = 100,
ENGINE_STATUS_STEAM2 = 150,
ENGINE_STATUS_SMOKE = 200,
2019-07-18 15:41:20 -04:00
ENGINE_STATUS_ON_FIRE = 225
};
enum eDoorStatus
{
DOOR_STATUS_OK,
DOOR_STATUS_SMASHED,
DOOR_STATUS_SWINGING,
DOOR_STATUS_MISSING
};
enum ePanelStatus
{
PANEL_STATUS_OK,
PANEL_STATUS_SMASHED1,
PANEL_STATUS_SMASHED2,
PANEL_STATUS_MISSING,
};
2019-07-08 15:37:47 -04:00
enum eWheelStatus
{
WHEEL_STATUS_OK,
WHEEL_STATUS_BURST,
WHEEL_STATUS_MISSING
2019-07-08 15:37:47 -04:00
};
enum eLightStatus
{
LIGHT_STATUS_OK,
LIGHT_STATUS_BROKEN
};
2019-07-05 16:19:52 -04:00
enum tComponent
{
COMPONENT_DEFAULT,
COMPONENT_WHEEL_FRONT_LEFT,
COMPONENT_WHEEL_FRONT_RIGHT,
COMPONENT_WHEEL_REAR_LEFT,
COMPONENT_WHEEL_REAR_RIGHT,
COMPONENT_DOOR_BONNET,
COMPONENT_DOOR_BOOT,
COMPONENT_DOOR_FRONT_LEFT,
COMPONENT_DOOR_FRONT_RIGHT,
COMPONENT_DOOR_REAR_LEFT,
COMPONENT_DOOR_REAR_RIGHT,
COMPONENT_PANEL_FRONT_LEFT,
COMPONENT_PANEL_FRONT_RIGHT,
COMPONENT_PANEL_REAR_LEFT,
COMPONENT_PANEL_REAR_RIGHT,
COMPONENT_PANEL_WINDSCREEN,
COMPONENT_BUMPER_FRONT,
COMPONENT_BUMPER_REAR,
};
enum tComponentGroup
{
COMPGROUP_BUMPER,
COMPGROUP_WHEEL,
COMPGROUP_DOOR,
COMPGROUP_BONNET,
COMPGROUP_BOOT,
COMPGROUP_PANEL,
COMPGROUP_DEFAULT,
};
enum eLights;
2019-07-05 16:19:52 -04:00
2019-06-24 18:42:23 -04:00
class CDamageManager
{
public:
2019-06-29 16:15:55 -04:00
2019-07-17 17:58:06 -04:00
float m_fWheelDamageEffect;
2019-07-05 16:19:52 -04:00
uint8 m_engineStatus;
uint8 m_wheelStatus[4];
uint8 m_doorStatus[6];
uint32 m_lightStatus;
uint32 m_panelStatus;
2020-05-27 16:32:57 -04:00
uint8 field_18;
2019-07-05 16:19:52 -04:00
2019-07-19 05:57:12 -04:00
CDamageManager(void);
2019-07-05 16:19:52 -04:00
void ResetDamageStatus(void);
void FuckCarCompletely(void);
bool ApplyDamage(tComponent component, float damage, float unused);
bool GetComponentGroup(tComponent component, tComponentGroup *componentGroup, uint8 *foo);
void SetDoorStatus(int32 door, uint32 status);
int32 GetDoorStatus(int32 door);
bool ProgressDoorDamage(uint8 door);
void SetPanelStatus(int32 panel, uint32 status);
int32 GetPanelStatus(int32 panel);
bool ProgressPanelDamage(uint8 panel);
// needed for CReplay
static int32 GetPanelStatus(uint32 panelstatus, int32 panel) { return ldb(panel*4, 4, panelstatus); }
void SetLightStatus(eLights light, uint32 status);
int32 GetLightStatus(eLights light);
void SetWheelStatus(int32 wheel, uint32 status);
int32 GetWheelStatus(int32 wheel);
bool ProgressWheelDamage(uint8 wheel);
void SetEngineStatus(uint32 status);
int32 GetEngineStatus(void);
bool ProgressEngineDamage(void);
};
VALIDATE_SIZE(CDamageManager, 0x1C);