mirror of
https://git.rip/DMCA_FUCKER/re3.git
synced 2024-12-23 08:40:07 +00:00
CFileLoader last funcs and Frontend cleanup
This commit is contained in:
parent
a622c9e877
commit
60c412149d
|
@ -47,7 +47,6 @@ The following classes have only unused or practically unused code left:
|
||||||
```
|
```
|
||||||
CCullZone - only mobile stuff
|
CCullZone - only mobile stuff
|
||||||
CCullZones - only mobile stuff
|
CCullZones - only mobile stuff
|
||||||
CFileLoader - almost done
|
|
||||||
CSceneEdit
|
CSceneEdit
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -25,8 +25,6 @@
|
||||||
#include "CdStream.h"
|
#include "CdStream.h"
|
||||||
#include "FileLoader.h"
|
#include "FileLoader.h"
|
||||||
|
|
||||||
WRAPPER void CFileLoader::ReloadPaths(const char *filename) { EAXJMP(0x476DB0); }
|
|
||||||
|
|
||||||
char CFileLoader::ms_line[256];
|
char CFileLoader::ms_line[256];
|
||||||
|
|
||||||
const char*
|
const char*
|
||||||
|
@ -1198,6 +1196,165 @@ CFileLoader::LoadMapZones(const char *filename)
|
||||||
debug("Finished loading IPL\n");
|
debug("Finished loading IPL\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CFileLoader::ReloadPaths(const char *filename)
|
||||||
|
{
|
||||||
|
enum {
|
||||||
|
NONE,
|
||||||
|
PATH,
|
||||||
|
};
|
||||||
|
char *line;
|
||||||
|
int section = NONE;
|
||||||
|
int id, pathType, pathIndex = -1;
|
||||||
|
char pathTypeStr[20];
|
||||||
|
debug("Reloading paths from %s...\n", filename);
|
||||||
|
|
||||||
|
int fd = CFileMgr::OpenFile(filename, "r");
|
||||||
|
for (line = CFileLoader::LoadLine(fd); line; line = CFileLoader::LoadLine(fd)) {
|
||||||
|
if (*line == '\0' || *line == '#')
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (section == NONE) {
|
||||||
|
if (strncmp(line, "path", 4) == 0) {
|
||||||
|
section = PATH;
|
||||||
|
ThePaths.AllocatePathFindInfoMem(4500);
|
||||||
|
}
|
||||||
|
} else if (strncmp(line, "end", 3) == 0) {
|
||||||
|
section = NONE;
|
||||||
|
} else {
|
||||||
|
switch (section) {
|
||||||
|
case PATH:
|
||||||
|
if (pathIndex == -1) {
|
||||||
|
id = LoadPathHeader(line, pathTypeStr);
|
||||||
|
if (strncmp(pathTypeStr, "ped", 4) == 0)
|
||||||
|
pathType = 1;
|
||||||
|
else if (strncmp(pathTypeStr, "car", 4) == 0)
|
||||||
|
pathType = 0;
|
||||||
|
pathIndex = 0;
|
||||||
|
} else {
|
||||||
|
if (pathType == 1)
|
||||||
|
LoadPedPathNode(line, id, pathIndex);
|
||||||
|
else if (pathType == 0)
|
||||||
|
LoadCarPathNode(line, id, pathIndex);
|
||||||
|
pathIndex++;
|
||||||
|
if (pathIndex == 12)
|
||||||
|
pathIndex = -1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CFileMgr::CloseFile(fd);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CFileLoader::ReloadObjectTypes(const char *filename)
|
||||||
|
{
|
||||||
|
enum {
|
||||||
|
NONE,
|
||||||
|
OBJS,
|
||||||
|
TOBJ,
|
||||||
|
TWODFX
|
||||||
|
};
|
||||||
|
char *line;
|
||||||
|
int section = NONE;
|
||||||
|
CModelInfo::ReInit2dEffects();
|
||||||
|
debug("Reloading object types from %s...\n", filename);
|
||||||
|
|
||||||
|
CFileMgr::ChangeDir("\\DATA\\MAPS\\");
|
||||||
|
int fd = CFileMgr::OpenFile(filename, "r");
|
||||||
|
CFileMgr::ChangeDir("\\");
|
||||||
|
for (line = CFileLoader::LoadLine(fd); line; line = CFileLoader::LoadLine(fd)) {
|
||||||
|
if (*line == '\0' || *line == '#')
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (section == NONE) {
|
||||||
|
if (strncmp(line, "objs", 4) == 0) section = OBJS;
|
||||||
|
else if (strncmp(line, "tobj", 4) == 0) section = TOBJ;
|
||||||
|
else if (strncmp(line, "2dfx", 4) == 0) section = TWODFX;
|
||||||
|
} else if (strncmp(line, "end", 3) == 0) {
|
||||||
|
section = NONE;
|
||||||
|
} else {
|
||||||
|
switch (section) {
|
||||||
|
case OBJS:
|
||||||
|
case TOBJ:
|
||||||
|
ReloadObject(line);
|
||||||
|
break;
|
||||||
|
case TWODFX:
|
||||||
|
Load2dEffect(line);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CFileMgr::CloseFile(fd);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CFileLoader::ReloadObject(const char *line)
|
||||||
|
{
|
||||||
|
int id, numObjs;
|
||||||
|
char model[24], txd[24];
|
||||||
|
float dist[3];
|
||||||
|
uint32 flags;
|
||||||
|
CSimpleModelInfo *mi;
|
||||||
|
|
||||||
|
if(sscanf(line, "%d %s %s %d", &id, model, txd, &numObjs) != 4)
|
||||||
|
return;
|
||||||
|
|
||||||
|
switch(numObjs){
|
||||||
|
case 1:
|
||||||
|
sscanf(line, "%d %s %s %d %f %d",
|
||||||
|
&id, model, txd, &numObjs, &dist[0], &flags);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
sscanf(line, "%d %s %s %d %f %f %d",
|
||||||
|
&id, model, txd, &numObjs, &dist[0], &dist[1], &flags);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
sscanf(line, "%d %s %s %d %f %f %f %d",
|
||||||
|
&id, model, txd, &numObjs, &dist[0], &dist[1], &dist[2], &flags);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
mi = (CSimpleModelInfo*) CModelInfo::GetModelInfo(id);
|
||||||
|
if (
|
||||||
|
#ifdef FIX_BUGS
|
||||||
|
mi &&
|
||||||
|
#endif
|
||||||
|
mi->m_type == MITYPE_SIMPLE && !strcmp(mi->GetName(), model) && mi->m_numAtomics == numObjs) {
|
||||||
|
mi->SetLodDistances(dist);
|
||||||
|
SetModelInfoFlags(mi, flags);
|
||||||
|
} else {
|
||||||
|
printf("Can't reload %s\n", model);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// unused mobile function - crashes
|
||||||
|
void
|
||||||
|
CFileLoader::ReLoadScene(const char *filename)
|
||||||
|
{
|
||||||
|
char *line;
|
||||||
|
CFileMgr::ChangeDir("\\DATA\\");
|
||||||
|
int fd = CFileMgr::OpenFile(filename, "r");
|
||||||
|
CFileMgr::ChangeDir("\\");
|
||||||
|
|
||||||
|
for (line = CFileLoader::LoadLine(fd); line; line = CFileLoader::LoadLine(fd)) {
|
||||||
|
if (*line == '#')
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (strncmp(line, "EXIT", 9) == 0) // BUG: 9?
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (strncmp(line, "IDE", 3) == 0) {
|
||||||
|
LoadObjectTypes(line + 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CFileMgr::CloseFile(fd);
|
||||||
|
}
|
||||||
|
|
||||||
STARTPATCHES
|
STARTPATCHES
|
||||||
InjectHook(0x476290, CFileLoader::LoadLevel, PATCH_JUMP);
|
InjectHook(0x476290, CFileLoader::LoadLevel, PATCH_JUMP);
|
||||||
|
@ -1233,4 +1390,8 @@ STARTPATCHES
|
||||||
InjectHook(0x478A90, CFileLoader::LoadCullZone, PATCH_JUMP);
|
InjectHook(0x478A90, CFileLoader::LoadCullZone, PATCH_JUMP);
|
||||||
|
|
||||||
InjectHook(0x478550, CFileLoader::LoadMapZones, PATCH_JUMP);
|
InjectHook(0x478550, CFileLoader::LoadMapZones, PATCH_JUMP);
|
||||||
|
|
||||||
|
InjectHook(0x476DB0, CFileLoader::ReloadPaths, PATCH_JUMP);
|
||||||
|
InjectHook(0x476F30, CFileLoader::ReloadObjectTypes, PATCH_JUMP);
|
||||||
|
InjectHook(0x4772B0, CFileLoader::ReloadObject, PATCH_JUMP);
|
||||||
ENDPATCHES
|
ENDPATCHES
|
||||||
|
|
|
@ -43,4 +43,7 @@ public:
|
||||||
static void LoadMapZones(const char *filename);
|
static void LoadMapZones(const char *filename);
|
||||||
|
|
||||||
static void ReloadPaths(const char *filename);
|
static void ReloadPaths(const char *filename);
|
||||||
|
static void ReloadObjectTypes(const char *filename);
|
||||||
|
static void ReloadObject(const char *line);
|
||||||
|
static void ReLoadScene(const char *filename); // unused mobile function
|
||||||
};
|
};
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include "Radar.h"
|
#include "Radar.h"
|
||||||
#include "Stats.h"
|
#include "Stats.h"
|
||||||
#include "Messages.h"
|
#include "Messages.h"
|
||||||
|
#include "FileLoader.h"
|
||||||
|
|
||||||
#define TIDY_UP_PBP // ProcessButtonPresses
|
#define TIDY_UP_PBP // ProcessButtonPresses
|
||||||
#define MAX_VISIBLE_LIST_ROW 30
|
#define MAX_VISIBLE_LIST_ROW 30
|
||||||
|
@ -110,14 +111,14 @@ char *CMenuManager::m_PrefsSkinFile = (char*)0x5F2E74; //[256] "$$\"\""
|
||||||
|
|
||||||
int32 &CMenuManager::m_KeyPressedCode = *(int32*)0x5F2E70; // -1
|
int32 &CMenuManager::m_KeyPressedCode = *(int32*)0x5F2E70; // -1
|
||||||
|
|
||||||
// This is 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 FIX_BUGS
|
#ifdef PS2_LIKE_MENU
|
||||||
CRGBA TEXT_COLOR = CRGBA(235, 170, 50, 255); // PC briefs text color
|
const CRGBA TEXT_COLOR = CRGBA(150, 110, 30, 255);
|
||||||
#else
|
#else
|
||||||
CRGBA TEXT_COLOR = CRGBA(150, 110, 30, 255);
|
const CRGBA TEXT_COLOR = CRGBA(235, 170, 50, 255); // PC briefs text color
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
float menuXYpadding = MENUACTION_POS_Y; // *(float*)0x5F355C; // never changes. 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*)0x5F2E40;
|
||||||
float MENU_TEXT_SIZE_Y = SMALLTEXT_Y_SCALE; //*(float*)0x5F2E44;
|
float MENU_TEXT_SIZE_Y = SMALLTEXT_Y_SCALE; //*(float*)0x5F2E44;
|
||||||
|
|
||||||
|
@ -130,17 +131,17 @@ 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; // = *(CMenuManager*)0x8F59D8;
|
||||||
|
|
||||||
// Move this somewhere else.
|
// Move this somewhere else.
|
||||||
float &CRenderer::ms_lodDistScale = *(float*)0x5F726C; // 1.2
|
float CRenderer::ms_lodDistScale = 1.2f; // *(float*)0x5F726C;
|
||||||
|
|
||||||
uint32 &TimeToStopPadShaking = *(uint32*)0x628CF8;
|
uint32 TimeToStopPadShaking; // = *(uint32*)0x628CF8;
|
||||||
char *&pEditString = *(char**)0x628D00;
|
char *pEditString; // = *(char**)0x628D00;
|
||||||
int32 *&pControlEdit = *(int32**)0x628D08;
|
int32 *pControlEdit; // = *(int32**)0x628D08;
|
||||||
bool &DisplayComboButtonErrMsg = *(bool*)0x628D14;
|
bool DisplayComboButtonErrMsg; // = *(bool*)0x628D14;
|
||||||
int32 &MouseButtonJustClicked = *(int32*)0x628D0C;
|
int32 MouseButtonJustClicked; // = *(int32*)0x628D0C;
|
||||||
int32 &JoyButtonJustClicked = *(int32*)0x628D10;
|
int32 JoyButtonJustClicked; // = *(int32*)0x628D10;
|
||||||
//int32 *pControlTemp = 0;
|
//int32 *pControlTemp = 0;
|
||||||
|
|
||||||
#ifndef MASTER
|
#ifndef MASTER
|
||||||
|
@ -844,6 +845,10 @@ CMenuManager::Draw()
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef PS2_LIKE_MENU
|
||||||
|
CFont::SetFontStyle(FONT_BANK);
|
||||||
|
#endif
|
||||||
|
|
||||||
switch (m_nCurrScreen) {
|
switch (m_nCurrScreen) {
|
||||||
case MENUPAGE_CONTROLLER_PC_OLD1:
|
case MENUPAGE_CONTROLLER_PC_OLD1:
|
||||||
case MENUPAGE_CONTROLLER_PC_OLD2:
|
case MENUPAGE_CONTROLLER_PC_OLD2:
|
||||||
|
@ -2140,7 +2145,7 @@ CMenuManager::DrawFrontEndNormal()
|
||||||
}
|
}
|
||||||
|
|
||||||
#define optionWidth MENU_X(66.0f)
|
#define optionWidth MENU_X(66.0f)
|
||||||
#define rawOptionHeight 20.0f
|
#define rawOptionHeight 22.0f
|
||||||
#define optionBottom SCREEN_SCALE_FROM_BOTTOM(20.0f)
|
#define optionBottom SCREEN_SCALE_FROM_BOTTOM(20.0f)
|
||||||
#define optionTop SCREEN_SCALE_FROM_BOTTOM(20.0f + rawOptionHeight)
|
#define optionTop SCREEN_SCALE_FROM_BOTTOM(20.0f + rawOptionHeight)
|
||||||
#define leftPadding MENU_X_LEFT_ALIGNED(90.0f)
|
#define leftPadding MENU_X_LEFT_ALIGNED(90.0f)
|
||||||
|
@ -3187,31 +3192,33 @@ CMenuManager::PrintBriefs()
|
||||||
newColor = TEXT_COLOR;
|
newColor = TEXT_COLOR;
|
||||||
FilterOutColorMarkersFromString(gUString, newColor);
|
FilterOutColorMarkersFromString(gUString, newColor);
|
||||||
|
|
||||||
// newColor wasn't used at all! let's fix this
|
#ifdef PS2_LIKE_MENU
|
||||||
|
// This PS2 code was always here, but unused
|
||||||
bool rgSame = newColor.r == TEXT_COLOR.r && newColor.g == TEXT_COLOR.g;
|
bool rgSame = newColor.r == TEXT_COLOR.r && newColor.g == TEXT_COLOR.g;
|
||||||
bool bSame = rgSame && newColor.b == TEXT_COLOR.b;
|
bool bSame = rgSame && newColor.b == TEXT_COLOR.b;
|
||||||
bool colorNotChanged = bSame
|
bool colorNotChanged = bSame; /* && newColor.a == TEXT_COLOR.a; */
|
||||||
#ifndef FIX_BUGS
|
|
||||||
&& newColor.a == TEXT_COLOR.a
|
|
||||||
#endif
|
|
||||||
;
|
|
||||||
|
|
||||||
if (!colorNotChanged) {
|
if (!colorNotChanged) {
|
||||||
newColor.r /= 2;
|
newColor.r /= 2;
|
||||||
newColor.g /= 2;
|
newColor.g /= 2;
|
||||||
newColor.b /= 2;
|
newColor.b /= 2;
|
||||||
}
|
}
|
||||||
#ifdef FIX_BUGS
|
CFont::SetDropColor(CRGBA(0, 0, 0, FadeIn(255))); // But this is from PS2
|
||||||
newColor.a = FadeIn(255);
|
|
||||||
// because some colors aren't visible, due to they were made for PS2
|
|
||||||
CFont::SetDropColor(CRGBA(0, 0, 0, FadeIn(255)));
|
|
||||||
CFont::SetDropShadowPosition(1);
|
CFont::SetDropShadowPosition(1);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(FIX_BUGS) || defined(PS2_LIKE_MENU)
|
||||||
|
newColor.a = FadeIn(255);
|
||||||
CFont::SetColor(newColor);
|
CFont::SetColor(newColor);
|
||||||
#endif
|
#endif
|
||||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(50.0f), nextY, gUString);
|
CFont::PrintString(MENU_X_LEFT_ALIGNED(50.0f), nextY, gUString);
|
||||||
nextY += MENU_Y(menuXYpadding);
|
nextY += MENU_Y(menuXYpadding);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef PS2_LIKE_MENU
|
||||||
|
CFont::SetDropShadowPosition(0);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// Not sure about name. Not to be confused with CPad::PrintErrorMessage
|
// Not sure about name. Not to be confused with CPad::PrintErrorMessage
|
||||||
|
@ -4317,8 +4324,7 @@ CMenuManager::ProcessButtonPresses(void)
|
||||||
DoSettingsBeforeStartingAGame();
|
DoSettingsBeforeStartingAGame();
|
||||||
break;
|
break;
|
||||||
case MENUACTION_RELOADIDE:
|
case MENUACTION_RELOADIDE:
|
||||||
// TODO
|
CFileLoader::ReloadObjectTypes("GTA3.IDE");
|
||||||
// CFileLoader::ReloadObjectTypes("GTA3.IDE");
|
|
||||||
break;
|
break;
|
||||||
case MENUACTION_RELOADIPL:
|
case MENUACTION_RELOADIPL:
|
||||||
CGame::ReloadIPLs();
|
CGame::ReloadIPLs();
|
||||||
|
@ -5023,7 +5029,7 @@ CMenuManager::PrintController(void)
|
||||||
CFont::SetFontStyle(FONT_BANK); // X
|
CFont::SetFontStyle(FONT_BANK); // X
|
||||||
|
|
||||||
// CFont::SetScale(0.4f, 0.4f);
|
// CFont::SetScale(0.4f, 0.4f);
|
||||||
CFont::SetScale(MENU_X(SMALLTEXT_X_SCALE), MENU_Y(SMALLTEXT_Y_SCALE)); // X
|
CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE), MENU_Y(SMALLESTTEXT_Y_SCALE)); // X
|
||||||
|
|
||||||
// CFont::SetColor(CRGBA(128, 128, 128, FadeIn(255)));
|
// CFont::SetColor(CRGBA(128, 128, 128, FadeIn(255)));
|
||||||
CFont::SetDropColor(CRGBA(0, 0, 0, FadeIn(255))); // X
|
CFont::SetDropColor(CRGBA(0, 0, 0, FadeIn(255))); // X
|
||||||
|
@ -5217,6 +5223,8 @@ CMenuManager::PrintController(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CFont::SetDropShadowPosition(0); // X
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MENU_MAP
|
#ifdef MENU_MAP
|
||||||
|
|
|
@ -640,4 +640,4 @@ public:
|
||||||
|
|
||||||
static_assert(sizeof(CMenuManager) == 0x564, "CMenuManager: error");
|
static_assert(sizeof(CMenuManager) == 0x564, "CMenuManager: error");
|
||||||
|
|
||||||
extern CMenuManager &FrontEndMenuManager;
|
extern CMenuManager FrontEndMenuManager;
|
||||||
|
|
|
@ -281,7 +281,6 @@ const CMenuScreen aScreens[] = {
|
||||||
MENUACTION_CTRLMETHOD, "FET_CME", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC,
|
MENUACTION_CTRLMETHOD, "FET_CME", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC,
|
||||||
MENUACTION_CHANGEMENU, "FET_RDK", SAVESLOT_NONE, MENUPAGE_KEYBOARD_CONTROLS,
|
MENUACTION_CHANGEMENU, "FET_RDK", SAVESLOT_NONE, MENUPAGE_KEYBOARD_CONTROLS,
|
||||||
MENUACTION_CHANGEMENU, "FET_AMS", SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS,
|
MENUACTION_CHANGEMENU, "FET_AMS", SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS,
|
||||||
|
|
||||||
MENUACTION_RESTOREDEF, "FET_DEF", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC,
|
MENUACTION_RESTOREDEF, "FET_DEF", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC,
|
||||||
MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE,
|
MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE,
|
||||||
},
|
},
|
||||||
|
|
|
@ -149,19 +149,6 @@ SpawnCar(int id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
LetThemFollowYou(void) {
|
|
||||||
CPed *player = (CPed*) FindPlayerPed();
|
|
||||||
for (int i = 0; i < player->m_numNearPeds; i++) {
|
|
||||||
CPed *nearPed = player->m_nearPeds[i];
|
|
||||||
if (nearPed && !nearPed->IsPlayer()) {
|
|
||||||
nearPed->SetObjective(OBJECTIVE_FOLLOW_PED_IN_FORMATION, (void*)player);
|
|
||||||
nearPed->m_pedFormation = (eFormation)(1 + (rand() & 7));
|
|
||||||
nearPed->bScriptObjectiveCompleted = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
FixCar(void)
|
FixCar(void)
|
||||||
{
|
{
|
||||||
|
@ -368,8 +355,6 @@ DebugMenuPopulate(void)
|
||||||
DebugMenuAddVarBool8("Debug", "Don't render Peds", (int8*)&gbDontRenderPeds, nil);
|
DebugMenuAddVarBool8("Debug", "Don't render Peds", (int8*)&gbDontRenderPeds, nil);
|
||||||
DebugMenuAddVarBool8("Debug", "Don't render Vehicles", (int8*)&gbDontRenderVehicles, nil);
|
DebugMenuAddVarBool8("Debug", "Don't render Vehicles", (int8*)&gbDontRenderVehicles, nil);
|
||||||
DebugMenuAddVarBool8("Debug", "Don't render Objects", (int8*)&gbDontRenderObjects, nil);
|
DebugMenuAddVarBool8("Debug", "Don't render Objects", (int8*)&gbDontRenderObjects, nil);
|
||||||
|
|
||||||
DebugMenuAddCmd("Debug", "Make peds follow you in formation", LetThemFollowYou);
|
|
||||||
#ifdef TOGGLEABLE_BETA_FEATURES
|
#ifdef TOGGLEABLE_BETA_FEATURES
|
||||||
DebugMenuAddVarBool8("Debug", "Toggle banned particles", (int8*)&CParticle::bEnableBannedParticles, nil);
|
DebugMenuAddVarBool8("Debug", "Toggle banned particles", (int8*)&CParticle::bEnableBannedParticles, nil);
|
||||||
DebugMenuAddVarBool8("Debug", "Toggle popping heads on headshot", (int8*)&CPed::bPopHeadsOnHeadshot, nil);
|
DebugMenuAddVarBool8("Debug", "Toggle popping heads on headshot", (int8*)&CPed::bPopHeadsOnHeadshot, nil);
|
||||||
|
|
|
@ -234,12 +234,6 @@ CModelInfo::RemoveColModelsFromOtherLevels(eLevelName level)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CStore<CInstance, MLOINSTANCESIZE>&
|
|
||||||
CModelInfo::GetMloInstanceStore()
|
|
||||||
{
|
|
||||||
return CModelInfo::ms_mloInstanceStore;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
CModelInfo::ConstructMloClumps()
|
CModelInfo::ConstructMloClumps()
|
||||||
{
|
{
|
||||||
|
@ -247,6 +241,17 @@ CModelInfo::ConstructMloClumps()
|
||||||
ms_mloModelStore.store[i].ConstructClump();
|
ms_mloModelStore.store[i].ConstructClump();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CModelInfo::ReInit2dEffects()
|
||||||
|
{
|
||||||
|
ms_2dEffectStore.clear();
|
||||||
|
|
||||||
|
for (int i = 0; i < MODELINFOSIZE; i++) {
|
||||||
|
if (ms_modelInfoPtrs[i])
|
||||||
|
ms_modelInfoPtrs[i]->Init2dEffects();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
STARTPATCHES
|
STARTPATCHES
|
||||||
InjectHook(0x50B310, CModelInfo::Initialise, PATCH_JUMP);
|
InjectHook(0x50B310, CModelInfo::Initialise, PATCH_JUMP);
|
||||||
InjectHook(0x50B5B0, CModelInfo::ShutDown, PATCH_JUMP);
|
InjectHook(0x50B5B0, CModelInfo::ShutDown, PATCH_JUMP);
|
||||||
|
|
|
@ -36,7 +36,7 @@ public:
|
||||||
static CVehicleModelInfo *AddVehicleModel(int id);
|
static CVehicleModelInfo *AddVehicleModel(int id);
|
||||||
|
|
||||||
static CStore<C2dEffect, TWODFXSIZE> &Get2dEffectStore(void) { return ms_2dEffectStore; }
|
static CStore<C2dEffect, TWODFXSIZE> &Get2dEffectStore(void) { return ms_2dEffectStore; }
|
||||||
static CStore<CInstance, MLOINSTANCESIZE> &GetMloInstanceStore();
|
static CStore<CInstance, MLOINSTANCESIZE> &GetMloInstanceStore(void) { return ms_mloInstanceStore; }
|
||||||
|
|
||||||
static CBaseModelInfo *GetModelInfo(const char *name, int *id);
|
static CBaseModelInfo *GetModelInfo(const char *name, int *id);
|
||||||
static CBaseModelInfo *GetModelInfo(int id){
|
static CBaseModelInfo *GetModelInfo(int id){
|
||||||
|
@ -47,4 +47,5 @@ public:
|
||||||
static bool IsBikeModel(int32 id);
|
static bool IsBikeModel(int32 id);
|
||||||
static void RemoveColModelsFromOtherLevels(eLevelName level);
|
static void RemoveColModelsFromOtherLevels(eLevelName level);
|
||||||
static void ConstructMloClumps();
|
static void ConstructMloClumps();
|
||||||
|
static void ReInit2dEffects();
|
||||||
};
|
};
|
||||||
|
|
|
@ -29,7 +29,7 @@ class CRenderer
|
||||||
static CVehicle *&m_pFirstPersonVehicle;
|
static CVehicle *&m_pFirstPersonVehicle;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static float &ms_lodDistScale; // defined in Frontend.cpp
|
static float ms_lodDistScale; // defined in Frontend.cpp
|
||||||
static bool &m_loadingPriority;
|
static bool &m_loadingPriority;
|
||||||
|
|
||||||
static void Init(void);
|
static void Init(void);
|
||||||
|
|
Loading…
Reference in a new issue