From be92b57b54241de55e233376f481ba848ca8df35 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sun, 20 Dec 2020 12:39:44 +0200 Subject: buildings directory # Conflicts: # premake5.lua --- premake5.lua | 2 ++ src/buildings/Building.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ src/buildings/Building.h | 20 ++++++++++++++++++++ src/buildings/Solid.h | 12 ++++++++++++ src/buildings/Treadable.cpp | 8 ++++++++ src/buildings/Treadable.h | 12 ++++++++++++ src/entities/Building.cpp | 44 -------------------------------------------- src/entities/Building.h | 20 -------------------- src/entities/Solid.h | 12 ------------ src/entities/Treadable.cpp | 8 -------- src/entities/Treadable.h | 12 ------------ 11 files changed, 98 insertions(+), 96 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 10ab7b71..f3ebf745 100644 --- a/premake5.lua +++ b/premake5.lua @@ -236,6 +236,7 @@ project "reVC" 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") } @@ -259,6 +260,7 @@ project "reVC" 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..8035cf25 --- /dev/null +++ b/src/buildings/Building.cpp @@ -0,0 +1,44 @@ +#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); +} + +bool +IsBuildingPointerValid(CBuilding* pBuilding) +{ + if (!pBuilding) + return false; + if (pBuilding->GetIsATreadable()) { + int index = CPools::GetTreadablePool()->GetJustIndex_NoFreeAssert((CTreadable*)pBuilding); +#ifdef FIX_BUGS + return index >= 0 && index < CPools::GetTreadablePool()->GetSize(); +#else + return index >= 0 && index <= CPools::GetTreadablePool()->GetSize(); +#endif + } else { + int index = CPools::GetBuildingPool()->GetJustIndex_NoFreeAssert(pBuilding); +#ifdef FIX_BUGS + return index >= 0 && index < CPools::GetBuildingPool()->GetSize(); +#else + return index >= 0 && index <= CPools::GetBuildingPool()->GetSize(); +#endif + } +} diff --git a/src/buildings/Building.h b/src/buildings/Building.h new file mode 100644 index 00000000..2c2dfb1f --- /dev/null +++ b/src/buildings/Building.h @@ -0,0 +1,20 @@ +#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; } +}; + +bool IsBuildingPointerValid(CBuilding*); 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..c3ab755e --- /dev/null +++ b/src/buildings/Treadable.h @@ -0,0 +1,12 @@ +#pragma once + +#include "Building.h" + +class CTreadable : public CBuilding +{ +public: + static void *operator new(size_t); + static void operator delete(void*, size_t); + + bool GetIsATreadable(void) { return true; } +}; diff --git a/src/entities/Building.cpp b/src/entities/Building.cpp deleted file mode 100644 index 8035cf25..00000000 --- a/src/entities/Building.cpp +++ /dev/null @@ -1,44 +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); -} - -bool -IsBuildingPointerValid(CBuilding* pBuilding) -{ - if (!pBuilding) - return false; - if (pBuilding->GetIsATreadable()) { - int index = CPools::GetTreadablePool()->GetJustIndex_NoFreeAssert((CTreadable*)pBuilding); -#ifdef FIX_BUGS - return index >= 0 && index < CPools::GetTreadablePool()->GetSize(); -#else - return index >= 0 && index <= CPools::GetTreadablePool()->GetSize(); -#endif - } else { - int index = CPools::GetBuildingPool()->GetJustIndex_NoFreeAssert(pBuilding); -#ifdef FIX_BUGS - return index >= 0 && index < CPools::GetBuildingPool()->GetSize(); -#else - return index >= 0 && index <= CPools::GetBuildingPool()->GetSize(); -#endif - } -} diff --git a/src/entities/Building.h b/src/entities/Building.h deleted file mode 100644 index 2c2dfb1f..00000000 --- a/src/entities/Building.h +++ /dev/null @@ -1,20 +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; } -}; - -bool IsBuildingPointerValid(CBuilding*); 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 c3ab755e..00000000 --- a/src/entities/Treadable.h +++ /dev/null @@ -1,12 +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); - - bool GetIsATreadable(void) { return true; } -}; -- cgit v1.2.3