#pragma once #include "common.h" // TODO: move some of this into Vehicle.h 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 { VEHLIGHT_FRONT_LEFT, VEHLIGHT_FRONT_RIGHT, VEHLIGHT_REAR_LEFT, VEHLIGHT_REAR_RIGHT, }; enum { VEHPANEL_FRONT_LEFT, VEHPANEL_FRONT_RIGHT, VEHPANEL_REAR_LEFT, VEHPANEL_REAR_RIGHT, VEHPANEL_WINDSCREEN, VEHBUMPER_FRONT, VEHBUMPER_REAR, }; class CDamageManager { public: float field_0; uint8 m_engineStatus; uint8 m_wheelStatus[4]; uint8 m_doorStatus[6]; uint32 m_lightStatus; uint32 m_panelStatus; uint32 field_24; 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);