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 From 30c8f870eb9be57a25ef9901be6b1ab46172e597 Mon Sep 17 00:00:00 2001 From: aap Date: Sun, 20 Dec 2020 14:28:09 +0100 Subject: little ps2 fixes --- src/core/Game.cpp | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/core/Game.cpp b/src/core/Game.cpp index 8c14434a..0b9ef767 100644 --- a/src/core/Game.cpp +++ b/src/core/Game.cpp @@ -264,9 +264,9 @@ CGame::InitialiseRenderWare(void) CFont::Initialise(); CHud::Initialise(); POP_MEMID(); -#endif // TODO: define CPlayerSkin::Initialise(); +#endif return (true); } @@ -317,8 +317,8 @@ bool CGame::InitialiseOnceAfterRW(void) CSurfaceTable::Initialise("DATA\\SURFACE.DAT"); CPedStats::Initialise(); CTimeCycle::Initialise(); -#endif +#ifndef GTA_PS2 if ( DMAudio.GetNum3DProvidersAvailable() == 0 ) FrontEndMenuManager.m_nPrefsAudio3DProviderIndex = -1; @@ -356,8 +356,9 @@ bool CGame::InitialiseOnceAfterRW(void) DMAudio.SetEffectsMasterVolume(CMenuManager::m_PrefsSfxVolume); DMAudio.SetEffectsFadeVol(127); DMAudio.SetMusicFadeVol(127); +#endif CWorld::Players[0].SetPlayerSkin(CMenuManager::m_PrefsSkinFile); - +#endif return true; } @@ -457,28 +458,24 @@ bool CGame::Initialise(const char* datFile) CCarCtrl::Init(); POP_MEMID(); + PUSH_MEMID(MEMID_DEF_MODELS); #if GTA_VERSION > GTA3_PS2_160 InitModelIndices(); #endif - - PUSH_MEMID(MEMID_DEF_MODELS); CModelInfo::Initialise(); -#if GTA_VERSION <= GTA3_PS2_160 - CPedStats::Initialise(); // InitialiseOnceAfterRW -#else + +#if GTA_VERSION > GTA3_PS2_160 // probably moved before LoadLevel for multiplayer maps? CPickups::Init(); CTheCarGenerators::Init(); -#endif -#ifndef GTA_PS2 // or GTA_VERSION? CdStreamAddImage("MODELS\\GTA3.IMG"); -#endif -#if GTA_VERSION > GTA3_PS2_160 CFileLoader::LoadLevel("DATA\\DEFAULT.DAT"); CFileLoader::LoadLevel(datFile); #else + CPedStats::Initialise(); // InitialiseOnceAfterRW + CFileLoader::LoadLevel("GTA3.DAT"); #endif @@ -520,7 +517,9 @@ bool CGame::Initialise(const char* datFile) CStreaming::LoadInitialPeds(); CStreaming::RequestBigBuildings(LEVEL_GENERIC); CStreaming::LoadAllRequestedModels(false); +#if GTA_VERSION > GTA3_PS2_160 printf("Streaming uses %zuK of its memory", CStreaming::ms_memoryUsed / 1024); // original modifier was %d +#endif LoadingScreen("Loading the Game", "Load animations", GetRandomSplashScreen()); PUSH_MEMID(MEMID_ANIMATION); @@ -618,11 +617,11 @@ bool CGame::Initialise(const char* datFile) CRecordDataForChase::Init(); CReplay::Init(); + LoadingScreen("Loading the Game", "Start script", nil); #ifdef PS2_MENU if ( !TheMemoryCard.m_bWantToLoad ) #endif { - LoadingScreen("Loading the Game", "Start script", nil); CTheScripts::StartTestScript(); CTheScripts::Process(); TheCamera.Process(); -- cgit v1.2.3