Many fixes and cleanup

This commit is contained in:
eray orçunus 2020-04-15 19:19:45 +03:00
parent eb0b9f6255
commit 4da1879975
18 changed files with 174 additions and 157 deletions

View File

@ -307,13 +307,13 @@ void CGarage::Update()
CGarages::bCamShouldBeOutisde = true; CGarages::bCamShouldBeOutisde = true;
} }
if (pVehicle) { if (pVehicle) {
if (IsEntityEntirelyOutside(pVehicle, 0.0f)) if (!IsEntityEntirelyOutside(pVehicle, 0.0f))
TheCamera.pToGarageWeAreInForHackAvoidFirstPerson = this; TheCamera.pToGarageWeAreInForHackAvoidFirstPerson = this;
if (pVehicle->GetModelIndex() == MI_MRWHOOP) { if (pVehicle->GetModelIndex() == MI_MRWHOOP) {
if (pVehicle->IsWithinArea( if (pVehicle->IsWithinArea(
m_fX1 - DISTANCE_FOR_MRWHOOP_HACK, m_fX1 - DISTANCE_FOR_MRWHOOP_HACK,
m_fX2 + DISTANCE_FOR_MRWHOOP_HACK, m_fY1 + DISTANCE_FOR_MRWHOOP_HACK,
m_fY1 - DISTANCE_FOR_MRWHOOP_HACK, m_fX2 - DISTANCE_FOR_MRWHOOP_HACK,
m_fY2 + DISTANCE_FOR_MRWHOOP_HACK)) { m_fY2 + DISTANCE_FOR_MRWHOOP_HACK)) {
TheCamera.pToGarageWeAreIn = this; TheCamera.pToGarageWeAreIn = this;
CGarages::bCamShouldBeOutisde = true; CGarages::bCamShouldBeOutisde = true;
@ -2313,6 +2313,10 @@ void CGarages::Load(uint8* buf, uint32 size)
#ifdef FIX_GARAGE_SIZE #ifdef FIX_GARAGE_SIZE
VALIDATESAVEBUF(size); VALIDATESAVEBUF(size);
#endif #endif
MessageEndTime = 0;
bCamShouldBeOutisde = false;
MessageStartTime = 0;
} }
bool bool

View File

@ -11358,7 +11358,7 @@ VALIDATESAVEBUF(size)
void CTheScripts::ClearSpaceForMissionEntity(const CVector& pos, CEntity* pEntity) void CTheScripts::ClearSpaceForMissionEntity(const CVector& pos, CEntity* pEntity)
{ {
static CColPoint aTempColPoints[32]; static CColPoint aTempColPoints[MAX_COLLISION_POINTS];
int16 entities = 0; int16 entities = 0;
CEntity* aEntities[16]; CEntity* aEntities[16];
CWorld::FindObjectsKindaColliding(pos, pEntity->GetBoundRadius(), false, &entities, 16, aEntities, false, true, true, false, false); CWorld::FindObjectsKindaColliding(pos, pEntity->GetBoundRadius(), false, &entities, 16, aEntities, false, true, true, false, false);

View File

@ -31,8 +31,8 @@ enum Direction
DIR_Z_NEG, DIR_Z_NEG,
}; };
eLevelName &CCollision::ms_collisionInMemory = *(eLevelName*)0x8F6250; eLevelName CCollision::ms_collisionInMemory;
CLinkList<CColModel*> &CCollision::ms_colModelCache = *(CLinkList<CColModel*>*)0x95CB58; CLinkList<CColModel*> CCollision::ms_colModelCache;
void void
CCollision::Init(void) CCollision::Init(void)
@ -1355,6 +1355,7 @@ CCollision::ProcessColModels(const CMatrix &matrixA, CColModel &modelA,
modelB.triangles[aTriangleIndicesB[j]], modelB.triangles[aTriangleIndicesB[j]],
modelB.trianglePlanes[aTriangleIndicesB[j]], modelB.trianglePlanes[aTriangleIndicesB[j]],
spherepoints[numCollisions], coldist); spherepoints[numCollisions], coldist);
if(hasCollided) if(hasCollided)
numCollisions++; numCollisions++;
} }

View File

@ -3,6 +3,13 @@
#include "templates.h" #include "templates.h"
#include "Game.h" // for eLevelName #include "Game.h" // for eLevelName
// If you spawn many tanks at once, you will see that collisions of two entity exceeds 32.
#ifdef FIX_BUGS
#define MAX_COLLISION_POINTS 64
#else
#define MAX_COLLISION_POINTS 32
#endif
struct CColSphere struct CColSphere
{ {
CVector center; CVector center;
@ -110,8 +117,8 @@ struct CColModel
class CCollision class CCollision
{ {
public: public:
static eLevelName &ms_collisionInMemory; static eLevelName ms_collisionInMemory;
static CLinkList<CColModel*> &ms_colModelCache; static CLinkList<CColModel*> ms_colModelCache;
static void Init(void); static void Init(void);
static void Shutdown(void); static void Shutdown(void);

View File

@ -82,34 +82,34 @@ int curBottomBarOption = -1;
int hoveredBottomBarOption = -1; int hoveredBottomBarOption = -1;
#endif #endif
int32 CMenuManager::OS_Language = LANG_ENGLISH; // *(int32*)0x5F2F78; int32 CMenuManager::OS_Language = LANG_ENGLISH;
int8 CMenuManager::m_PrefsUseVibration; // = *(int8*)0x95CD92; int8 CMenuManager::m_PrefsUseVibration;
int8 CMenuManager::m_DisplayControllerOnFoot; // = *(int8*)0x95CD8D; int8 CMenuManager::m_DisplayControllerOnFoot;
int8 CMenuManager::m_PrefsVsync = 1; // *(int8*)0x5F2E58; int8 CMenuManager::m_PrefsVsync = 1;
int8 CMenuManager::m_PrefsVsyncDisp = 1; // *(int8*)0x5F2E5C; int8 CMenuManager::m_PrefsVsyncDisp = 1;
int8 CMenuManager::m_PrefsFrameLimiter = 1; // *(int8*)0x5F2E60; int8 CMenuManager::m_PrefsFrameLimiter = 1;
int8 CMenuManager::m_PrefsShowSubtitles = 1; // *(int8*)0x5F2E54; int8 CMenuManager::m_PrefsShowSubtitles = 1;
int8 CMenuManager::m_PrefsSpeakers; // = *(int8*)0x95CD7E; int8 CMenuManager::m_PrefsSpeakers;
int32 CMenuManager::m_ControlMethod; // = *(int32*)0x8F5F7C; int32 CMenuManager::m_ControlMethod;
int8 CMenuManager::m_PrefsDMA = 1; // *(int8*)0x5F2F74; int8 CMenuManager::m_PrefsDMA = 1;
int32 CMenuManager::m_PrefsLanguage; // = *(int32*)0x941238; int32 CMenuManager::m_PrefsLanguage;
uint8 CMenuManager::m_PrefsStereoMono; // *(bool*)0x95CDB5; // unused except restore settings uint8 CMenuManager::m_PrefsStereoMono; // *(bool*)0x95CDB5; // unused except restore settings
bool CMenuManager::m_PrefsAllowNastyGame = true; // *(bool*)0x5F2E64; bool CMenuManager::m_PrefsAllowNastyGame = true;
bool CMenuManager::m_bStartUpFrontEndRequested; // = *(bool*)0x95CCF4; bool CMenuManager::m_bStartUpFrontEndRequested;
bool CMenuManager::m_bShutDownFrontEndRequested; // = *(bool*)0x95CD6A; bool CMenuManager::m_bShutDownFrontEndRequested;
int8 CMenuManager::m_PrefsUseWideScreen; // = *(int8*)0x95CD23; int8 CMenuManager::m_PrefsUseWideScreen;
int8 CMenuManager::m_PrefsRadioStation; // = *(int8*)0x95CDA4; int8 CMenuManager::m_PrefsRadioStation;
int32 CMenuManager::m_PrefsBrightness = 256; // = *(int32*)0x5F2E50; int32 CMenuManager::m_PrefsBrightness = 256;
float CMenuManager::m_PrefsLOD; // = *(float*)0x8F42C4; float CMenuManager::m_PrefsLOD = CRenderer::ms_lodDistScale;
int8 CMenuManager::m_bFrontEnd_ReloadObrTxtGxt; // = *(int8*)0x628CFC; int8 CMenuManager::m_bFrontEnd_ReloadObrTxtGxt;
int32 CMenuManager::m_PrefsMusicVolume = 102; // = *(int32*)0x5F2E4C; int32 CMenuManager::m_PrefsMusicVolume = 102;
int32 CMenuManager::m_PrefsSfxVolume = 102; // = *(int32*)0x5F2E48; int32 CMenuManager::m_PrefsSfxVolume = 102;
char CMenuManager::m_PrefsSkinFile[256] = "$$\"\""; // = (char*)0x5F2E74; char CMenuManager::m_PrefsSkinFile[256] = "$$\"\"";
int32 CMenuManager::m_KeyPressedCode = -1; // = *(int32*)0x5F2E70; int32 CMenuManager::m_KeyPressedCode = -1;
// Originally that was PS2 option color, they forget it here and used in PrintBriefs once(but didn't use the output anyway) // Originally that was PS2 option color, they forget it here and used in PrintBriefs once(but didn't use the output anyway)
#ifdef PS2_LIKE_MENU #ifdef PS2_LIKE_MENU
@ -119,29 +119,26 @@ const CRGBA TEXT_COLOR = CRGBA(235, 170, 50, 255); // PC briefs text color
#endif #endif
const float menuXYpadding = MENUACTION_POS_Y; // *(float*)0x5F355C; // not original name const float menuXYpadding = MENUACTION_POS_Y; // *(float*)0x5F355C; // not original name
float MENU_TEXT_SIZE_X = SMALLTEXT_X_SCALE; //*(float*)0x5F2E40; float MENU_TEXT_SIZE_X = SMALLTEXT_X_SCALE;
float MENU_TEXT_SIZE_Y = SMALLTEXT_Y_SCALE; //*(float*)0x5F2E44; float MENU_TEXT_SIZE_Y = SMALLTEXT_Y_SCALE;
bool holdingScrollBar; // *(bool*)0x628D59; // not original name bool holdingScrollBar; // *(bool*)0x628D59; // not original name
int32 CMenuManager::m_SelectedMap; // *(int32*)0x8E2880; int32 CMenuManager::m_SelectedMap;
int32 CMenuManager::m_SelectedGameType; // *(int32*)0x942F88; int32 CMenuManager::m_SelectedGameType;
// Used in a hidden menu // Used in a hidden menu
uint8 CMenuManager::m_PrefsPlayerRed = 255; uint8 CMenuManager::m_PrefsPlayerRed = 255;
uint8 CMenuManager::m_PrefsPlayerGreen = 128; uint8 CMenuManager::m_PrefsPlayerGreen = 128;
uint8 CMenuManager::m_PrefsPlayerBlue; // why?? uint8 CMenuManager::m_PrefsPlayerBlue; // why??
CMenuManager FrontEndMenuManager; // = *(CMenuManager*)0x8F59D8; CMenuManager FrontEndMenuManager;
// Move this somewhere else. uint32 TimeToStopPadShaking;
float CRenderer::ms_lodDistScale = 1.2f; // *(float*)0x5F726C; char *pEditString;
int32 *pControlEdit;
uint32 TimeToStopPadShaking; // = *(uint32*)0x628CF8; bool DisplayComboButtonErrMsg;
char *pEditString; // = *(char**)0x628D00; int32 MouseButtonJustClicked;
int32 *pControlEdit; // = *(int32**)0x628D08; int32 JoyButtonJustClicked;
bool DisplayComboButtonErrMsg; // = *(bool*)0x628D14;
int32 MouseButtonJustClicked; // = *(int32*)0x628D0C;
int32 JoyButtonJustClicked; // = *(int32*)0x628D10;
//int32 *pControlTemp = 0; //int32 *pControlTemp = 0;
#ifndef MASTER #ifndef MASTER
@ -283,6 +280,12 @@ ScaleAndCenterX(float x)
} while(0) } while(0)
#endif #endif
#define PREPARE_MENU_HEADER \
CFont::SetColor(CRGBA(0, 0, 0, FadeIn(255))); \
CFont::SetRightJustifyOn(); \
CFont::SetScale(MENU_X(MENUHEADER_WIDTH), MENU_Y(MENUHEADER_HEIGHT)); \
CFont::SetFontStyle(FONT_HEADING);
#define ProcessSlider(value, increaseAction, decreaseAction, hoverStartX, hoverEndX) \ #define ProcessSlider(value, increaseAction, decreaseAction, hoverStartX, hoverEndX) \
do { \ do { \
lastActiveBarX = DisplaySlider(SCREEN_STRETCH_FROM_RIGHT(MENUSLIDER_X + columnWidth), MENU_Y(bitAboveNextItemY), MENU_Y(smallestSliderBar), MENU_Y(usableLineHeight), MENU_X(MENUSLIDER_UNK), value); \ lastActiveBarX = DisplaySlider(SCREEN_STRETCH_FROM_RIGHT(MENUSLIDER_X + columnWidth), MENU_Y(bitAboveNextItemY), MENU_Y(smallestSliderBar), MENU_Y(usableLineHeight), MENU_X(MENUSLIDER_UNK), value); \
@ -447,8 +450,8 @@ CMenuManager::CheckCodesForControls(int typeOfControl)
if (typeOfControl == KEYBOARD) { if (typeOfControl == KEYBOARD) {
if (*pControlEdit == rsESC) { if (*pControlEdit == rsESC) {
escPressed = true; escPressed = true;
} else if (*pControlEdit > rsF3 && *pControlEdit != rsF9 && *pControlEdit != rsLWIN && } else if (*pControlEdit != rsF1 && *pControlEdit != rsF2 && *pControlEdit != rsF3 && *pControlEdit != rsF9 &&
*pControlEdit != rsRWIN && *pControlEdit != rsRALT) { *pControlEdit != rsLWIN && *pControlEdit != rsRWIN && *pControlEdit != rsRALT) {
typeToSave = KEYBOARD; typeToSave = KEYBOARD;
if (ControlsManager.GetControllerKeyAssociatedWithAction(action, KEYBOARD) != rsNULL && if (ControlsManager.GetControllerKeyAssociatedWithAction(action, KEYBOARD) != rsNULL &&
*pControlEdit != ControlsManager.GetControllerKeyAssociatedWithAction(action, KEYBOARD)) { *pControlEdit != ControlsManager.GetControllerKeyAssociatedWithAction(action, KEYBOARD)) {
@ -465,7 +468,10 @@ CMenuManager::CheckCodesForControls(int typeOfControl)
DisplayComboButtonErrMsg = true; DisplayComboButtonErrMsg = true;
} }
ControlsManager.ClearSettingsAssociatedWithAction(action, typeToSave); #ifdef FIX_BUGS
if(!escPressed && !invalidKey)
#endif
ControlsManager.ClearSettingsAssociatedWithAction(action, typeToSave);
if (!DisplayComboButtonErrMsg && !escPressed && !invalidKey) { if (!DisplayComboButtonErrMsg && !escPressed && !invalidKey) {
if (typeOfControl == KEYBOARD) { if (typeOfControl == KEYBOARD) {
ControlsManager.DeleteMatchingActionInitiators(action, *pControlEdit, KEYBOARD); ControlsManager.DeleteMatchingActionInitiators(action, *pControlEdit, KEYBOARD);
@ -670,6 +676,17 @@ CMenuManager::Draw()
CFont::SetCentreOff(); CFont::SetCentreOff();
CFont::SetJustifyOn(); CFont::SetJustifyOn();
CFont::SetBackGroundOnlyTextOn(); CFont::SetBackGroundOnlyTextOn();
#ifdef GTA3_1_1_PATCH
CFont::SetColor(CRGBA(235, 170, 50, FadeIn(255)));
CFont::SetRightJustifyOn();
CFont::SetFontStyle(FONT_HEADING);
CFont::SetScale(MENU_X(0.7f), MENU_Y(0.5f));
CFont::SetWrapx(SCREEN_WIDTH);
CFont::SetRightJustifyWrap(0.0f);
strcpy(gString, "V1.1");
AsciiToUnicode(gString, gUString);
CFont::PrintString(SCREEN_WIDTH / 10, SCREEN_HEIGHT / 45, gUString);
#endif
CFont::SetWrapx(MENU_X_RIGHT_ALIGNED(MENU_X_MARGIN)); CFont::SetWrapx(MENU_X_RIGHT_ALIGNED(MENU_X_MARGIN));
CFont::SetRightJustifyWrap(SCREEN_SCALE_X(MENUACTION_WIDTH)); CFont::SetRightJustifyWrap(SCREEN_SCALE_X(MENUACTION_WIDTH));
@ -696,17 +713,9 @@ CMenuManager::Draw()
#endif #endif
if (aScreens[m_nCurrScreen].m_ScreenName[0] != '\0') { if (aScreens[m_nCurrScreen].m_ScreenName[0] != '\0') {
CFont::SetRightJustifyOn(); PREPARE_MENU_HEADER
CFont::SetFontStyle(FONT_HEADING);
#ifdef PS2_LIKE_MENU
CFont::SetColor(CRGBA(0, 0, 0, 255));
CFont::SetScale(MENU_X(MENUHEADER_WIDTH), MENU_Y(1.3f));
CFont::PrintString(MENU_X_RIGHT_ALIGNED(50.0f), SCREEN_SCALE_FROM_BOTTOM(75.0f), TheText.Get(aScreens[m_nCurrScreen].m_ScreenName));
#else
CFont::SetColor(CRGBA(0, 0, 0, FadeIn(255)));
CFont::SetScale(MENU_X(MENUHEADER_WIDTH), MENU_Y(MENUHEADER_HEIGHT));
CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(MENUHEADER_POS_X), SCREEN_SCALE_FROM_BOTTOM(MENUHEADER_POS_Y), TheText.Get(aScreens[m_nCurrScreen].m_ScreenName)); CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(MENUHEADER_POS_X), SCREEN_SCALE_FROM_BOTTOM(MENUHEADER_POS_Y), TheText.Get(aScreens[m_nCurrScreen].m_ScreenName));
#endif
// Weird place to put that. // Weird place to put that.
nextYToUse += 24.0f + 10.0f; nextYToUse += 24.0f + 10.0f;
} }
@ -1735,11 +1744,8 @@ CMenuManager::DrawControllerSetupScreen()
CFont::SetWrapx(MENU_X_RIGHT_ALIGNED(MENU_X_MARGIN)); CFont::SetWrapx(MENU_X_RIGHT_ALIGNED(MENU_X_MARGIN));
CFont::SetRightJustifyWrap(SCREEN_SCALE_X(MENUACTION_WIDTH)); CFont::SetRightJustifyWrap(SCREEN_SCALE_X(MENUACTION_WIDTH));
// Page header PREPARE_MENU_HEADER
CFont::SetColor(CRGBA(0, 0, 0, FadeIn(255)));
CFont::SetRightJustifyOn();
CFont::SetScale(MENU_X(MENUHEADER_WIDTH), MENU_Y(MENUHEADER_HEIGHT));
CFont::SetFontStyle(FONT_HEADING);
switch (m_ControlMethod) { switch (m_ControlMethod) {
case CONTROL_STANDARD: case CONTROL_STANDARD:
CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(MENUHEADER_POS_X), SCREEN_SCALE_FROM_BOTTOM(MENUHEADER_POS_Y), CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(MENUHEADER_POS_X), SCREEN_SCALE_FROM_BOTTOM(MENUHEADER_POS_Y),
@ -2417,10 +2423,8 @@ CMenuManager::DrawPlayerSetupScreen()
CFont::SetWrapx(MENU_X_RIGHT_ALIGNED(MENU_X_MARGIN)); CFont::SetWrapx(MENU_X_RIGHT_ALIGNED(MENU_X_MARGIN));
CFont::SetRightJustifyWrap(SCREEN_SCALE_X(MENUACTION_WIDTH)); CFont::SetRightJustifyWrap(SCREEN_SCALE_X(MENUACTION_WIDTH));
CFont::SetColor(CRGBA(0, 0, 0, FadeIn(255))); PREPARE_MENU_HEADER
CFont::SetScale(MENU_X(MENUHEADER_WIDTH), MENU_Y(MENUHEADER_HEIGHT));
CFont::SetRightJustifyOn();
CFont::SetFontStyle(FONT_HEADING);
CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(MENUHEADER_POS_X), SCREEN_SCALE_FROM_BOTTOM(MENUHEADER_POS_Y), TheText.Get("FET_PS")); CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(MENUHEADER_POS_X), SCREEN_SCALE_FROM_BOTTOM(MENUHEADER_POS_Y), TheText.Get("FET_PS"));
// lstrcpy's changed with strcpy // lstrcpy's changed with strcpy
@ -3314,10 +3318,7 @@ CMenuManager::PrintStats()
// ::Draw already does that. // ::Draw already does that.
/* /*
CFont::SetColor(CRGBA(0, 0, 0, FadeIn(255))); PREPARE_MENU_HEADER
CFont::SetRightJustifyOn();
CFont::SetFontStyle(FONT_HEADING);
CFont::SetScale(MENU_X(MENUHEADER_WIDTH), MENU_Y(MENUHEADER_HEIGHT));
CFont::PrintString(MENU_X_RIGHT_ALIGNED(MENUHEADER_POS_X), SCREEN_SCALE_FROM_BOTTOM(MENUHEADER_POS_Y), TheText.Get(aScreens[m_nCurrScreen].m_ScreenName)); CFont::PrintString(MENU_X_RIGHT_ALIGNED(MENUHEADER_POS_X), SCREEN_SCALE_FROM_BOTTOM(MENUHEADER_POS_Y), TheText.Get(aScreens[m_nCurrScreen].m_ScreenName));
*/ */
CFont::SetScale(MENU_X(MENU_TEXT_SIZE_X), MENU_Y(MENU_TEXT_SIZE_Y)); CFont::SetScale(MENU_X(MENU_TEXT_SIZE_X), MENU_Y(MENU_TEXT_SIZE_Y));

View File

@ -2,10 +2,16 @@
#include "Sprite2d.h" #include "Sprite2d.h"
#ifdef PS2_LIKE_MENU
#define MENUHEADER_POS_X 50.0f
#define MENUHEADER_POS_Y 75.0f
#define MENUHEADER_HEIGHT 1.3f
#else
#define MENUHEADER_POS_X 35.0f #define MENUHEADER_POS_X 35.0f
#define MENUHEADER_POS_Y 93.0f #define MENUHEADER_POS_Y 93.0f
#define MENUHEADER_WIDTH 0.84f
#define MENUHEADER_HEIGHT 1.6f #define MENUHEADER_HEIGHT 1.6f
#endif
#define MENUHEADER_WIDTH 0.84f
#define MENU_X_MARGIN 40.0f #define MENU_X_MARGIN 40.0f
#define MENUACTION_POS_Y 60.0f #define MENUACTION_POS_Y 60.0f

View File

@ -21,7 +21,7 @@
#include "Population.h" #include "Population.h"
#include "Fire.h" #include "Fire.h"
CColPoint *gaTempSphereColPoints = (CColPoint*)0x6E64C0; // [32] CColPoint gaTempSphereColPoints[MAX_COLLISION_POINTS];
CPtrList *CWorld::ms_bigBuildingsList = (CPtrList*)0x6FAB60; CPtrList *CWorld::ms_bigBuildingsList = (CPtrList*)0x6FAB60;
CPtrList &CWorld::ms_listMovingEntityPtrs = *(CPtrList*)0x8F433C; CPtrList &CWorld::ms_listMovingEntityPtrs = *(CPtrList*)0x8F433C;
@ -29,7 +29,7 @@ CSector (*CWorld::ms_aSectors)[NUMSECTORS_X] = (CSector (*)[NUMSECTORS_Y])0x6656
uint16 &CWorld::ms_nCurrentScanCode = *(uint16*)0x95CC64; uint16 &CWorld::ms_nCurrentScanCode = *(uint16*)0x95CC64;
uint8 &CWorld::PlayerInFocus = *(uint8 *)0x95CD61; uint8 &CWorld::PlayerInFocus = *(uint8 *)0x95CD61;
CPlayerInfo (&CWorld::Players)[NUMPLAYERS] = *(CPlayerInfo (*)[NUMPLAYERS])*(uintptr*)0x9412F0; CPlayerInfo CWorld::Players[NUMPLAYERS];
bool &CWorld::bNoMoreCollisionTorque = *(bool*)0x95CDCC; bool &CWorld::bNoMoreCollisionTorque = *(bool*)0x95CDCC;
CEntity *&CWorld::pIgnoreEntity = *(CEntity**)0x8F6494; CEntity *&CWorld::pIgnoreEntity = *(CEntity**)0x8F6494;
bool &CWorld::bIncludeDeadPeds = *(bool*)0x95CD8F; bool &CWorld::bIncludeDeadPeds = *(bool*)0x95CD8F;

View File

@ -61,7 +61,7 @@ class CWorld
public: public:
static uint8 &PlayerInFocus; static uint8 &PlayerInFocus;
static CPlayerInfo (&Players)[NUMPLAYERS]; static CPlayerInfo Players[NUMPLAYERS];
static CEntity *&pIgnoreEntity; static CEntity *&pIgnoreEntity;
static bool &bIncludeDeadPeds; static bool &bIncludeDeadPeds;
static bool &bNoMoreCollisionTorque; static bool &bNoMoreCollisionTorque;
@ -144,7 +144,7 @@ public:
static void TriggerExplosion(const CVector &, float, float, CEntity*, bool); static void TriggerExplosion(const CVector &, float, float, CEntity*, bool);
}; };
extern CColPoint *gaTempSphereColPoints; extern CColPoint gaTempSphereColPoints[MAX_COLLISION_POINTS];
class CPlayerPed; class CPlayerPed;
class CVehicle; class CVehicle;

View File

@ -690,14 +690,14 @@ DisplayGameDebugText()
CFont::SetPropOn(); CFont::SetPropOn();
CFont::SetBackgroundOff(); CFont::SetBackgroundOff();
CFont::SetFontStyle(FONT_BANK); CFont::SetFontStyle(FONT_BANK);
CFont::SetScale(SCREEN_STRETCH_X(0.5f), SCREEN_STRETCH_Y(0.5f)); CFont::SetScale(SCREEN_SCALE_X(0.5f), SCREEN_SCALE_Y(0.5f));
CFont::SetCentreOff(); CFont::SetCentreOff();
CFont::SetRightJustifyOff(); CFont::SetRightJustifyOff();
CFont::SetWrapx(SCREEN_WIDTH); CFont::SetWrapx(SCREEN_WIDTH);
CFont::SetJustifyOff(); CFont::SetJustifyOff();
CFont::SetBackGroundOnlyTextOff(); CFont::SetBackGroundOnlyTextOff();
CFont::SetColor(CRGBA(255, 108, 0, 255)); CFont::SetColor(CRGBA(255, 108, 0, 255));
CFont::PrintString(10.0f, 10.0f, ver); CFont::PrintString(SCREEN_SCALE_X(10.0f), SCREEN_SCALE_Y(10.0f), ver);
FrameSamples++; FrameSamples++;
FramesPerSecondCounter += 1000.0f / (CTimer::GetTimeStepNonClippedInSeconds() * 1000.0f); FramesPerSecondCounter += 1000.0f / (CTimer::GetTimeStepNonClippedInSeconds() * 1000.0f);
@ -748,6 +748,7 @@ DisplayGameDebugText()
AsciiToUnicode(str, ustr); AsciiToUnicode(str, ustr);
// Let's not scale those numbers, they look better that way :eyes:
CFont::SetPropOff(); CFont::SetPropOff();
CFont::SetBackgroundOff(); CFont::SetBackgroundOff();
CFont::SetScale(0.7f, 1.5f); CFont::SetScale(0.7f, 1.5f);

View File

@ -1037,7 +1037,7 @@ CPhysical::ProcessShiftSectorList(CPtrList *lists)
int numCollisions; int numCollisions;
int mostColliding; int mostColliding;
CColPoint colpoints[32]; CColPoint colpoints[MAX_COLLISION_POINTS];
CVector shift = { 0.0f, 0.0f, 0.0f }; CVector shift = { 0.0f, 0.0f, 0.0f };
bool doShift = false; bool doShift = false;
CEntity *boat = nil; CEntity *boat = nil;
@ -1187,7 +1187,7 @@ CPhysical::ProcessShiftSectorList(CPtrList *lists)
bool bool
CPhysical::ProcessCollisionSectorList_SimpleCar(CPtrList *lists) CPhysical::ProcessCollisionSectorList_SimpleCar(CPtrList *lists)
{ {
static CColPoint aColPoints[32]; static CColPoint aColPoints[MAX_COLLISION_POINTS];
float radius; float radius;
CVector center; CVector center;
int listtype; int listtype;
@ -1349,7 +1349,7 @@ collision:
bool bool
CPhysical::ProcessCollisionSectorList(CPtrList *lists) CPhysical::ProcessCollisionSectorList(CPtrList *lists)
{ {
static CColPoint aColPoints[32]; static CColPoint aColPoints[MAX_COLLISION_POINTS];
float radius; float radius;
CVector center; CVector center;
CPtrList *list; CPtrList *list;

View File

@ -62,7 +62,7 @@
CPed *gapTempPedList[50]; CPed *gapTempPedList[50];
uint16 gnNumTempPedList; uint16 gnNumTempPedList;
CColPoint &aTempPedColPts = *(CColPoint*)0x62DB14; CColPoint aTempPedColPts[MAX_COLLISION_POINTS];
// Corresponds to ped sounds (from SOUND_PED_DEATH to SOUND_PED_TAXI_CALL) // Corresponds to ped sounds (from SOUND_PED_DEATH to SOUND_PED_TAXI_CALL)
PedAudioData CommentWaitTime[39] = { PedAudioData CommentWaitTime[39] = {
@ -106,8 +106,6 @@ PedAudioData CommentWaitTime[39] = {
{1000, 1000, 1000, 1000}, {1000, 1000, 1000, 1000},
{1000, 1000, 5000, 5000}, {1000, 1000, 5000, 5000},
}; };
// *(CPedAudioData(*)[39]) * (uintptr*)0x5F94C4;
uint16 nPlayerInComboMove; uint16 nPlayerInComboMove;
RpClump *flyingClumpTemp; RpClump *flyingClumpTemp;
@ -139,10 +137,9 @@ FightMove tFightMoves[NUM_FIGHTMOVES] = {
{ANIM_HIT_BEHIND, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, {ANIM_HIT_BEHIND, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0},
{ANIM_FIGHT2_IDLE, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, {ANIM_FIGHT2_IDLE, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0},
}; };
// *(FightMove(*)[NUM_FIGHTMOVES])* (uintptr*)0x5F9844;
uint16 &CPed::nThreatReactionRangeMultiplier = *(uint16*)0x5F8C98; uint16 CPed::nThreatReactionRangeMultiplier = 1;
uint16 &CPed::nEnterCarRangeMultiplier = *(uint16*)0x5F8C94; uint16 CPed::nEnterCarRangeMultiplier = 1;
CVector vecPedCarDoorAnimOffset; CVector vecPedCarDoorAnimOffset;
CVector vecPedCarDoorLoAnimOffset; CVector vecPedCarDoorLoAnimOffset;
@ -151,9 +148,9 @@ CVector vecPedQuickDraggedOutCarAnimOffset;
CVector vecPedDraggedOutCarAnimOffset; CVector vecPedDraggedOutCarAnimOffset;
CVector vecPedTrainDoorAnimOffset; CVector vecPedTrainDoorAnimOffset;
bool &CPed::bNastyLimbsCheat = *(bool*)0x95CD44; bool CPed::bNastyLimbsCheat;
bool &CPed::bPedCheat2 = *(bool*)0x95CD5A; bool CPed::bPedCheat2;
bool &CPed::bPedCheat3 = *(bool*)0x95CD59; bool CPed::bPedCheat3;
CVector2D CPed::ms_vec2DFleePosition; CVector2D CPed::ms_vec2DFleePosition;
void *CPed::operator new(size_t sz) { return CPools::GetPedPool()->New(); } void *CPed::operator new(size_t sz) { return CPools::GetPedPool()->New(); }
@ -4143,7 +4140,7 @@ CPed::SetGetUp(void)
&& ((CTimer::GetFrameCounter() + m_randomSeed % 256 + 5) % 8 && ((CTimer::GetFrameCounter() + m_randomSeed % 256 + 5) % 8
|| CCollision::ProcessColModels(GetMatrix(), *CModelInfo::GetModelInfo(m_modelIndex)->GetColModel(), || CCollision::ProcessColModels(GetMatrix(), *CModelInfo::GetModelInfo(m_modelIndex)->GetColModel(),
collidingVeh->GetMatrix(), *CModelInfo::GetModelInfo(collidingVeh->m_modelIndex)->GetColModel(), collidingVeh->GetMatrix(), *CModelInfo::GetModelInfo(collidingVeh->m_modelIndex)->GetColModel(),
&aTempPedColPts, nil, nil) > 0)) { aTempPedColPts, nil, nil) > 0)) {
bGetUpAnimStarted = false; bGetUpAnimStarted = false;
if (IsPlayer()) if (IsPlayer())

View File

@ -823,14 +823,14 @@ public:
} }
// set by 0482:set_threat_reaction_range_multiplier opcode // set by 0482:set_threat_reaction_range_multiplier opcode
static uint16 &nThreatReactionRangeMultiplier; static uint16 nThreatReactionRangeMultiplier;
// set by 0481:set_enter_car_range_multiplier opcode // set by 0481:set_enter_car_range_multiplier opcode
static uint16 &nEnterCarRangeMultiplier; static uint16 nEnterCarRangeMultiplier;
static bool &bNastyLimbsCheat; static bool bNastyLimbsCheat;
static bool &bPedCheat2; static bool bPedCheat2;
static bool &bPedCheat3; static bool bPedCheat3;
static CVector2D ms_vec2DFleePosition; static CVector2D ms_vec2DFleePosition;
#ifdef TOGGLEABLE_BETA_FEATURES #ifdef TOGGLEABLE_BETA_FEATURES

View File

@ -47,36 +47,36 @@ const RegenerationPoint aSafeZones[] = {
CVector(-321.0f, -1043.0f, -13.2f), CVector(-328.0f, -1045.0f, -13.2f), CVector(-398.0f, -1044.0f, -13.5f), CVector(-390.0f, -1040.5f, -13.5f) }, CVector(-321.0f, -1043.0f, -13.2f), CVector(-328.0f, -1045.0f, -13.2f), CVector(-398.0f, -1044.0f, -13.5f), CVector(-390.0f, -1040.5f, -13.5f) },
{ LEVEL_COMMERCIAL, LEVEL_SUBURBAN, 425.0f, 280.0f, 471.0f, 447.0f, 20.0f, 5.0f, { LEVEL_COMMERCIAL, LEVEL_SUBURBAN, 425.0f, 280.0f, 471.0f, 447.0f, 20.0f, 5.0f,
CVector(-292.0f, -457.0f, -11.6f), CVector(-310.0f, -461.0f, -11.6f), CVector(-413.0f, -461.0f, -11.5f), CVector(-399.0f, -457.0f, -11.3f) } CVector(-292.0f, -457.0f, -11.6f), CVector(-310.0f, -461.0f, -11.6f), CVector(-413.0f, -461.0f, -11.5f), CVector(-399.0f, -457.0f, -11.3f) }
}; // *(RegenerationPoint(*)[8]) * (uintptr*)0x5FA578; };
PedGroup CPopulation::ms_pPedGroups[NUMPEDGROUPS]; // = *(PedGroup(*)[NUMPEDGROUPS]) * (uintptr*)0x6E9248; PedGroup CPopulation::ms_pPedGroups[NUMPEDGROUPS];
bool CPopulation::ms_bGivePedsWeapons; // = *(bool*)0x95CCF6; bool CPopulation::ms_bGivePedsWeapons;
int32 CPopulation::m_AllRandomPedsThisType = -1; // = *(int32*)0x5FA570; int32 CPopulation::m_AllRandomPedsThisType = -1;
float CPopulation::PedDensityMultiplier = 1.0f; // = *(float*)0x5FA56C; float CPopulation::PedDensityMultiplier = 1.0f;
uint32 CPopulation::ms_nTotalMissionPeds; // = *(uint32*)0x8F5F70; uint32 CPopulation::ms_nTotalMissionPeds;
int32 CPopulation::MaxNumberOfPedsInUse = 25; // *(int32*)0x5FA574; int32 CPopulation::MaxNumberOfPedsInUse = 25;
uint32 CPopulation::ms_nNumCivMale; // = *(uint32*)0x8F2548; uint32 CPopulation::ms_nNumCivMale;
uint32 CPopulation::ms_nNumCivFemale; // = *(uint32*)0x8F5F44; uint32 CPopulation::ms_nNumCivFemale;
uint32 CPopulation::ms_nNumCop; // = *(uint32*)0x885AFC; uint32 CPopulation::ms_nNumCop;
bool CPopulation::bZoneChangeHasHappened; // = *(bool*)0x95CD79; bool CPopulation::bZoneChangeHasHappened;
uint32 CPopulation::ms_nNumEmergency; // = *(uint32*)0x94071C; uint32 CPopulation::ms_nNumEmergency;
int8 CPopulation::m_CountDownToPedsAtStart; // = *(int8*)0x95CD4F; int8 CPopulation::m_CountDownToPedsAtStart;
uint32 CPopulation::ms_nNumGang1; // = *(uint32*)0x8F1B1C; uint32 CPopulation::ms_nNumGang1;
uint32 CPopulation::ms_nNumGang2; // = *(uint32*)0x8F1B14; uint32 CPopulation::ms_nNumGang2;
uint32 CPopulation::ms_nTotalPeds; // = *(uint32*)0x95CB50; uint32 CPopulation::ms_nTotalPeds;
uint32 CPopulation::ms_nNumGang3; // = *(uint32*)0x8F2548; uint32 CPopulation::ms_nNumGang3;
uint32 CPopulation::ms_nTotalGangPeds; // = *(uint32*)0x885AF0; uint32 CPopulation::ms_nTotalGangPeds;
uint32 CPopulation::ms_nNumGang4; // = *(uint32*)0x8F1B2C; uint32 CPopulation::ms_nNumGang4;
uint32 CPopulation::ms_nTotalCivPeds; // = *(uint32*)0x8F2C3C; uint32 CPopulation::ms_nTotalCivPeds;
uint32 CPopulation::ms_nNumGang5; // = *(uint32*)0x8F1B30; uint32 CPopulation::ms_nNumGang5;
uint32 CPopulation::ms_nNumDummy; // = *(uint32*)0x8F1A98; uint32 CPopulation::ms_nNumDummy;
uint32 CPopulation::ms_nNumGang6; // = *(uint32*)0x8F1B20; uint32 CPopulation::ms_nNumGang6;
uint32 CPopulation::ms_nNumGang9; // = *(uint32*)0x8F1B10; uint32 CPopulation::ms_nNumGang9;
uint32 CPopulation::ms_nNumGang7; // = *(uint32*)0x8F1B28; uint32 CPopulation::ms_nNumGang7;
uint32 CPopulation::ms_nNumGang8; // = *(uint32*)0x8F1B0C; uint32 CPopulation::ms_nNumGang8;
CVector CPopulation::RegenerationPoint_a; // = *(CVector*)0x8E2AA4; CVector CPopulation::RegenerationPoint_a;
CVector CPopulation::RegenerationPoint_b; // = *(CVector*)0x8E2A98; CVector CPopulation::RegenerationPoint_b;
CVector CPopulation::RegenerationForward; // = *(CVector*)0x8F1AD4; CVector CPopulation::RegenerationForward;
void void
CPopulation::Initialise() CPopulation::Initialise()

View File

@ -39,16 +39,17 @@ struct EntityInfo
float sort; float sort;
}; };
CLinkList<EntityInfo> &gSortedVehiclesAndPeds = *(CLinkList<EntityInfo>*)0x629AC0; CLinkList<EntityInfo> gSortedVehiclesAndPeds;
int32 &CRenderer::ms_nNoOfVisibleEntities = *(int32*)0x940730; int32 CRenderer::ms_nNoOfVisibleEntities;
CEntity *(&CRenderer::ms_aVisibleEntityPtrs)[NUMVISIBLEENTITIES] = *(CEntity * (*)[NUMVISIBLEENTITIES]) * (uintptr*)0x6E9920; CEntity *CRenderer::ms_aVisibleEntityPtrs[NUMVISIBLEENTITIES];
CEntity *(&CRenderer::ms_aInVisibleEntityPtrs)[NUMINVISIBLEENTITIES] = *(CEntity * (*)[NUMINVISIBLEENTITIES]) * (uintptr*)0x880B50; CEntity *CRenderer::ms_aInVisibleEntityPtrs[NUMINVISIBLEENTITIES];
int32 &CRenderer::ms_nNoOfInVisibleEntities = *(int32*)0x8F1B78; int32 CRenderer::ms_nNoOfInVisibleEntities;
CVector &CRenderer::ms_vecCameraPosition = *(CVector*)0x8E2C3C; CVector CRenderer::ms_vecCameraPosition;
CVehicle *&CRenderer::m_pFirstPersonVehicle = *(CVehicle**)0x885B80; CVehicle *CRenderer::m_pFirstPersonVehicle;
bool &CRenderer::m_loadingPriority = *(bool*)0x95CD86; bool CRenderer::m_loadingPriority;
float CRenderer::ms_lodDistScale = 1.2f;
void void
CRenderer::Init(void) CRenderer::Init(void)

View File

@ -20,17 +20,17 @@ class CPtrList;
class CRenderer class CRenderer
{ {
static int32 &ms_nNoOfVisibleEntities; static int32 ms_nNoOfVisibleEntities;
static CEntity *(&ms_aVisibleEntityPtrs)[NUMVISIBLEENTITIES]; static CEntity *ms_aVisibleEntityPtrs[NUMVISIBLEENTITIES];
static int32 &ms_nNoOfInVisibleEntities; static int32 ms_nNoOfInVisibleEntities;
static CEntity *(&ms_aInVisibleEntityPtrs)[NUMINVISIBLEENTITIES]; static CEntity *ms_aInVisibleEntityPtrs[NUMINVISIBLEENTITIES];
static CVector &ms_vecCameraPosition; static CVector ms_vecCameraPosition;
static CVehicle *&m_pFirstPersonVehicle; static CVehicle *m_pFirstPersonVehicle;
public: public:
static float ms_lodDistScale; // defined in Frontend.cpp static float ms_lodDistScale;
static bool &m_loadingPriority; static bool m_loadingPriority;
static void Init(void); static void Init(void);
static void Shutdown(void); static void Shutdown(void);

View File

@ -356,7 +356,7 @@ CAutomobile::ProcessControl(void)
PruneReferences(); PruneReferences();
if(m_status == STATUS_PLAYER && CRecordDataForChase::IsRecording()) if(m_status == STATUS_PLAYER && !CRecordDataForChase::IsRecording())
DoDriveByShootings(); DoDriveByShootings();
} }
break; break;
@ -4206,8 +4206,7 @@ GetCurrentAtomicObjectCB(RwObject *object, void *data)
return object; return object;
} }
CColPoint aTempPedColPts[32]; // this name doesn't make any sense CColPoint spherepoints[MAX_COLLISION_POINTS];
// they probably copied it from Ped (both serves same purpose) and didn't change the name
CObject* CObject*
CAutomobile::SpawnFlyingComponent(int32 component, uint32 type) CAutomobile::SpawnFlyingComponent(int32 component, uint32 type)
@ -4327,7 +4326,7 @@ CAutomobile::SpawnFlyingComponent(int32 component, uint32 type)
if(CCollision::ProcessColModels(obj->GetMatrix(), *obj->GetColModel(), if(CCollision::ProcessColModels(obj->GetMatrix(), *obj->GetColModel(),
this->GetMatrix(), *this->GetColModel(), this->GetMatrix(), *this->GetColModel(),
aTempPedColPts, nil, nil) > 0) spherepoints, nil, nil) > 0)
obj->m_pCollidingEntity = this; obj->m_pCollidingEntity = this;
if(bRenderScorched) if(bRenderScorched)

View File

@ -19,12 +19,12 @@
#include "Fire.h" #include "Fire.h"
#include "Darkel.h" #include "Darkel.h"
bool &CVehicle::bWheelsOnlyCheat = *(bool *)0x95CD78; bool CVehicle::bWheelsOnlyCheat;
bool &CVehicle::bAllDodosCheat = *(bool *)0x95CD75; bool CVehicle::bAllDodosCheat;
bool &CVehicle::bCheat3 = *(bool *)0x95CD66; bool CVehicle::bCheat3;
bool &CVehicle::bCheat4 = *(bool *)0x95CD65; bool CVehicle::bCheat4;
bool &CVehicle::bCheat5 = *(bool *)0x95CD64; bool CVehicle::bCheat5;
bool &CVehicle::m_bDisableMouseSteering = *(bool *)0x60252C; bool CVehicle::m_bDisableMouseSteering;
void *CVehicle::operator new(size_t sz) { return CPools::GetVehiclePool()->New(); } void *CVehicle::operator new(size_t sz) { return CPools::GetVehiclePool()->New(); }
void *CVehicle::operator new(size_t sz, int handle) { return CPools::GetVehiclePool()->New(handle); } void *CVehicle::operator new(size_t sz, int handle) { return CPools::GetVehiclePool()->New(handle); }

View File

@ -277,12 +277,12 @@ public:
bool IsTaxi(void) { return GetModelIndex() == MI_TAXI || GetModelIndex() == MI_CABBIE || GetModelIndex() == MI_BORGNINE; } bool IsTaxi(void) { return GetModelIndex() == MI_TAXI || GetModelIndex() == MI_CABBIE || GetModelIndex() == MI_BORGNINE; }
AnimationId GetDriverAnim(void) { return IsCar() && bLowVehicle ? ANIM_CAR_LSIT : (IsBoat() && GetModelIndex() != MI_SPEEDER ? ANIM_DRIVE_BOAT : ANIM_CAR_SIT); } AnimationId GetDriverAnim(void) { return IsCar() && bLowVehicle ? ANIM_CAR_LSIT : (IsBoat() && GetModelIndex() != MI_SPEEDER ? ANIM_DRIVE_BOAT : ANIM_CAR_SIT); }
static bool &bWheelsOnlyCheat; static bool bWheelsOnlyCheat;
static bool &bAllDodosCheat; static bool bAllDodosCheat;
static bool &bCheat3; static bool bCheat3;
static bool &bCheat4; static bool bCheat4;
static bool &bCheat5; static bool bCheat5;
static bool &m_bDisableMouseSteering; static bool m_bDisableMouseSteering;
}; };
static_assert(sizeof(CVehicle) == 0x288, "CVehicle: error"); static_assert(sizeof(CVehicle) == 0x288, "CVehicle: error");