From affd3c6baa9505328a804263434b14ee0aba1b3f Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sun, 20 Dec 2020 12:39:44 +0200 Subject: buildings directory --- premake5.lua | 2 ++ src/buildings/Building.cpp | 22 ++++++++++++++++++++++ src/buildings/Building.h | 21 +++++++++++++++++++++ src/buildings/Solid.h | 12 ++++++++++++ src/buildings/Treadable.cpp | 8 ++++++++ src/buildings/Treadable.h | 17 +++++++++++++++++ src/entities/Building.cpp | 22 ---------------------- src/entities/Building.h | 21 --------------------- src/entities/Solid.h | 12 ------------ src/entities/Treadable.cpp | 8 -------- src/entities/Treadable.h | 17 ----------------- 11 files changed, 82 insertions(+), 80 deletions(-) create mode 100644 src/buildings/Building.cpp create mode 100644 src/buildings/Building.h create mode 100644 src/buildings/Solid.h create mode 100644 src/buildings/Treadable.cpp create mode 100644 src/buildings/Treadable.h delete mode 100644 src/entities/Building.cpp delete mode 100644 src/entities/Building.h delete mode 100644 src/entities/Solid.h delete mode 100644 src/entities/Treadable.cpp delete mode 100644 src/entities/Treadable.h diff --git a/premake5.lua b/premake5.lua index 85f4d082..ea26b0ac 100644 --- a/premake5.lua +++ b/premake5.lua @@ -234,6 +234,7 @@ project "re3" files { addSrcFiles("src/audio") } files { addSrcFiles("src/audio/eax") } files { addSrcFiles("src/audio/oal") } + files { addSrcFiles("src/buildings") } files { addSrcFiles("src/collision") } files { addSrcFiles("src/control") } files { addSrcFiles("src/core") } @@ -257,6 +258,7 @@ project "re3" includedirs { "src/audio" } includedirs { "src/audio/eax" } includedirs { "src/audio/oal" } + includedirs { "src/buildings" } includedirs { "src/collision" } includedirs { "src/control" } includedirs { "src/core" } diff --git a/src/buildings/Building.cpp b/src/buildings/Building.cpp new file mode 100644 index 00000000..00bbb21e --- /dev/null +++ b/src/buildings/Building.cpp @@ -0,0 +1,22 @@ +#include "common.h" + +#include "Building.h" +#include "Streaming.h" +#include "Pools.h" + +void *CBuilding::operator new(size_t sz) { return CPools::GetBuildingPool()->New(); } +void CBuilding::operator delete(void *p, size_t sz) { CPools::GetBuildingPool()->Delete((CBuilding*)p); } + +void +CBuilding::ReplaceWithNewModel(int32 id) +{ + DeleteRwObject(); + + if (CModelInfo::GetModelInfo(m_modelIndex)->GetNumRefs() == 0) + CStreaming::RemoveModel(m_modelIndex); + m_modelIndex = id; + + if(bIsBIGBuilding) + if(m_level == LEVEL_GENERIC || m_level == CGame::currLevel) + CStreaming::RequestModel(id, STREAMFLAGS_DONT_REMOVE); +} diff --git a/src/buildings/Building.h b/src/buildings/Building.h new file mode 100644 index 00000000..3586a8dc --- /dev/null +++ b/src/buildings/Building.h @@ -0,0 +1,21 @@ +#pragma once + +#include "Entity.h" + +class CBuilding : public CEntity +{ +public: + CBuilding(void) { + m_type = ENTITY_TYPE_BUILDING; + bUsesCollision = true; + } + static void *operator new(size_t); + static void operator delete(void*, size_t); + + void ReplaceWithNewModel(int32 id); + + virtual bool GetIsATreadable(void) { return false; } +}; + +VALIDATE_SIZE(CBuilding, 0x64); + diff --git a/src/buildings/Solid.h b/src/buildings/Solid.h new file mode 100644 index 00000000..4ca800c2 --- /dev/null +++ b/src/buildings/Solid.h @@ -0,0 +1,12 @@ +#pragma once + +#include "Entity.h" + +class CSolid : public CEntity +{ +public: + CSolid(void) { + m_type = ENTITY_TYPE_BUILDING; + bUsesCollision = true; + } +}; \ No newline at end of file diff --git a/src/buildings/Treadable.cpp b/src/buildings/Treadable.cpp new file mode 100644 index 00000000..00abbe13 --- /dev/null +++ b/src/buildings/Treadable.cpp @@ -0,0 +1,8 @@ +#include "common.h" + +#include "rpworld.h" +#include "Treadable.h" +#include "Pools.h" + +void *CTreadable::operator new(size_t sz) { return CPools::GetTreadablePool()->New(); } +void CTreadable::operator delete(void *p, size_t sz) { CPools::GetTreadablePool()->Delete((CTreadable*)p); } diff --git a/src/buildings/Treadable.h b/src/buildings/Treadable.h new file mode 100644 index 00000000..c3160f47 --- /dev/null +++ b/src/buildings/Treadable.h @@ -0,0 +1,17 @@ +#pragma once + +#include "Building.h" + +class CTreadable : public CBuilding +{ +public: + static void *operator new(size_t); + static void operator delete(void*, size_t); + + int16 m_nodeIndices[2][12]; // first car, then ped + + bool GetIsATreadable(void) { return true; } +}; + +VALIDATE_SIZE(CTreadable, 0x94); + diff --git a/src/entities/Building.cpp b/src/entities/Building.cpp deleted file mode 100644 index 00bbb21e..00000000 --- a/src/entities/Building.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#include "common.h" - -#include "Building.h" -#include "Streaming.h" -#include "Pools.h" - -void *CBuilding::operator new(size_t sz) { return CPools::GetBuildingPool()->New(); } -void CBuilding::operator delete(void *p, size_t sz) { CPools::GetBuildingPool()->Delete((CBuilding*)p); } - -void -CBuilding::ReplaceWithNewModel(int32 id) -{ - DeleteRwObject(); - - if (CModelInfo::GetModelInfo(m_modelIndex)->GetNumRefs() == 0) - CStreaming::RemoveModel(m_modelIndex); - m_modelIndex = id; - - if(bIsBIGBuilding) - if(m_level == LEVEL_GENERIC || m_level == CGame::currLevel) - CStreaming::RequestModel(id, STREAMFLAGS_DONT_REMOVE); -} diff --git a/src/entities/Building.h b/src/entities/Building.h deleted file mode 100644 index 3586a8dc..00000000 --- a/src/entities/Building.h +++ /dev/null @@ -1,21 +0,0 @@ -#pragma once - -#include "Entity.h" - -class CBuilding : public CEntity -{ -public: - CBuilding(void) { - m_type = ENTITY_TYPE_BUILDING; - bUsesCollision = true; - } - static void *operator new(size_t); - static void operator delete(void*, size_t); - - void ReplaceWithNewModel(int32 id); - - virtual bool GetIsATreadable(void) { return false; } -}; - -VALIDATE_SIZE(CBuilding, 0x64); - diff --git a/src/entities/Solid.h b/src/entities/Solid.h deleted file mode 100644 index 4ca800c2..00000000 --- a/src/entities/Solid.h +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once - -#include "Entity.h" - -class CSolid : public CEntity -{ -public: - CSolid(void) { - m_type = ENTITY_TYPE_BUILDING; - bUsesCollision = true; - } -}; \ No newline at end of file diff --git a/src/entities/Treadable.cpp b/src/entities/Treadable.cpp deleted file mode 100644 index 00abbe13..00000000 --- a/src/entities/Treadable.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "common.h" - -#include "rpworld.h" -#include "Treadable.h" -#include "Pools.h" - -void *CTreadable::operator new(size_t sz) { return CPools::GetTreadablePool()->New(); } -void CTreadable::operator delete(void *p, size_t sz) { CPools::GetTreadablePool()->Delete((CTreadable*)p); } diff --git a/src/entities/Treadable.h b/src/entities/Treadable.h deleted file mode 100644 index c3160f47..00000000 --- a/src/entities/Treadable.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#include "Building.h" - -class CTreadable : public CBuilding -{ -public: - static void *operator new(size_t); - static void operator delete(void*, size_t); - - int16 m_nodeIndices[2][12]; // first car, then ped - - bool GetIsATreadable(void) { return true; } -}; - -VALIDATE_SIZE(CTreadable, 0x94); - -- cgit v1.2.3