mirror of
https://github.com/halpz/re3.git
synced 2025-07-05 00:10:46 +00:00
Full CGameLogic
This commit is contained in:
@ -1349,6 +1349,14 @@ CCamera::TakeControlWithSpline(short nSwitch)
|
||||
//FindPlayerPed(); // unused
|
||||
};
|
||||
|
||||
void CCamera::SetCameraDirectlyInFrontForFollowPed_CamOnAString()
|
||||
{
|
||||
m_bCamDirectlyInFront = true;
|
||||
CPlayerPed *player = FindPlayerPed();
|
||||
if (player)
|
||||
m_PedOrientForBehindOrInFront = CGeneral::GetATanOfXY(player->GetForward().x, player->GetForward().y);
|
||||
}
|
||||
|
||||
STARTPATCHES
|
||||
InjectHook(0x42C760, (bool (CCamera::*)(const CVector ¢er, float radius, const CMatrix *mat))&CCamera::IsSphereVisible, PATCH_JUMP);
|
||||
InjectHook(0x46FD00, &CCamera::SetFadeColour, PATCH_JUMP);
|
||||
@ -1357,6 +1365,8 @@ STARTPATCHES
|
||||
InjectHook(0x46FD80, &CCamera::SetMotionBlurAlpha, PATCH_JUMP);
|
||||
InjectHook(0x46F940, &CCamera::RenderMotionBlur, PATCH_JUMP);
|
||||
|
||||
InjectHook(0x46FC90, &CCamera::SetCameraDirectlyInFrontForFollowPed_CamOnAString, PATCH_JUMP);
|
||||
|
||||
InjectHook(0x456F40, WellBufferMe, PATCH_JUMP);
|
||||
InjectHook(0x4582F0, &CCam::GetVectorsReadyForRW, PATCH_JUMP);
|
||||
InjectHook(0x457710, &CCam::DoAverageOnVector, PATCH_JUMP);
|
||||
|
@ -489,6 +489,7 @@ int m_iModeObbeCamIsInForCar;
|
||||
void SetCamCutSceneOffSet(const CVector&);
|
||||
void TakeControlWithSpline(short);
|
||||
void RestoreWithJumpCut(void);
|
||||
void SetCameraDirectlyInFrontForFollowPed_CamOnAString(void);
|
||||
|
||||
void dtor(void) { this->CCamera::~CCamera(); }
|
||||
};
|
||||
|
@ -10,7 +10,6 @@ class CCutsceneHead;
|
||||
class CCutsceneMgr
|
||||
{
|
||||
static bool &ms_running;
|
||||
static bool &ms_cutsceneProcessing;
|
||||
static CCutsceneObject *(&ms_pCutsceneObjects)[NUMCUTSCENEOBJECTS];
|
||||
|
||||
static int32 &ms_numCutsceneObjs;
|
||||
@ -25,6 +24,7 @@ class CCutsceneMgr
|
||||
public:
|
||||
static CDirectory *&ms_pCutsceneDir;
|
||||
static uint32 &ms_cutsceneLoadStatus;
|
||||
static bool &ms_cutsceneProcessing;
|
||||
|
||||
static bool IsRunning(void) { return ms_running; }
|
||||
static bool IsCutsceneProcessing(void) { return ms_cutsceneProcessing; }
|
||||
|
@ -5,25 +5,32 @@
|
||||
#include "Frontend.h"
|
||||
#include "Vehicle.h"
|
||||
#include "PlayerSkin.h"
|
||||
#include "Darkel.h"
|
||||
#include "Messages.h"
|
||||
#include "Text.h"
|
||||
#include "Stats.h"
|
||||
|
||||
WRAPPER void CPlayerInfo::MakePlayerSafe(bool) { EAXJMP(0x4A1400); }
|
||||
WRAPPER void CPlayerInfo::AwardMoneyForExplosion(CVehicle *vehicle) { EAXJMP(0x4A15F0); }
|
||||
WRAPPER void CPlayerInfo::Process(void) { EAXJMP(0x49FD30); }
|
||||
|
||||
void CPlayerInfo::SetPlayerSkin(char *skin)
|
||||
void
|
||||
CPlayerInfo::SetPlayerSkin(char *skin)
|
||||
{
|
||||
strncpy(m_aSkinName, skin, 32);
|
||||
LoadPlayerSkin();
|
||||
}
|
||||
|
||||
CVector& CPlayerInfo::GetPos()
|
||||
CVector&
|
||||
CPlayerInfo::GetPos()
|
||||
{
|
||||
if (m_pPed->bInVehicle && m_pPed->m_pMyVehicle)
|
||||
return m_pPed->m_pMyVehicle->GetPosition();
|
||||
return m_pPed->GetPosition();
|
||||
}
|
||||
|
||||
void CPlayerInfo::LoadPlayerSkin()
|
||||
void
|
||||
CPlayerInfo::LoadPlayerSkin()
|
||||
{
|
||||
DeletePlayerSkin();
|
||||
|
||||
@ -32,7 +39,8 @@ void CPlayerInfo::LoadPlayerSkin()
|
||||
m_pSkinTexture = CPlayerSkin::GetSkinTexture(DEFAULT_SKIN_NAME);
|
||||
}
|
||||
|
||||
void CPlayerInfo::DeletePlayerSkin()
|
||||
void
|
||||
CPlayerInfo::DeletePlayerSkin()
|
||||
{
|
||||
if (m_pSkinTexture) {
|
||||
RwTextureDestroy(m_pSkinTexture);
|
||||
@ -40,7 +48,33 @@ void CPlayerInfo::DeletePlayerSkin()
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
CPlayerInfo::KillPlayer()
|
||||
{
|
||||
if (m_WBState != WBSTATE_PLAYING) return;
|
||||
|
||||
m_WBState = WBSTATE_WASTED;
|
||||
m_nWBTime = CTimer::GetTimeInMilliseconds();
|
||||
CDarkel::ResetOnPlayerDeath();
|
||||
CMessages::AddBigMessage(TheText.Get("DEAD"), 4000, 2);
|
||||
CStats::TimesDied++;
|
||||
}
|
||||
|
||||
void
|
||||
CPlayerInfo::ArrestPlayer()
|
||||
{
|
||||
if (m_WBState != WBSTATE_PLAYING) return;
|
||||
|
||||
m_WBState = WBSTATE_BUSTED;
|
||||
m_nWBTime = CTimer::GetTimeInMilliseconds();
|
||||
CDarkel::ResetOnPlayerDeath();
|
||||
CMessages::AddBigMessage(TheText.Get("BUSTED"), 5000, 2);
|
||||
CStats::TimesArrested++;
|
||||
}
|
||||
|
||||
STARTPATCHES
|
||||
InjectHook(0x4A1700, &CPlayerInfo::LoadPlayerSkin, PATCH_JUMP);
|
||||
InjectHook(0x4A1750, &CPlayerInfo::DeletePlayerSkin, PATCH_JUMP);
|
||||
InjectHook(0x4A12E0, &CPlayerInfo::KillPlayer, PATCH_JUMP);
|
||||
InjectHook(0x4A1330, &CPlayerInfo::ArrestPlayer, PATCH_JUMP);
|
||||
ENDPATCHES
|
||||
|
@ -73,6 +73,8 @@ public:
|
||||
void SetPlayerSkin(char* skin);
|
||||
CVector& GetPos();
|
||||
void Process(void);
|
||||
void KillPlayer(void);
|
||||
void ArrestPlayer(void);
|
||||
};
|
||||
|
||||
static_assert(sizeof(CPlayerInfo) == 0x13C, "CPlayerInfo: error");
|
||||
|
@ -9,6 +9,9 @@ int32 &CStats::NumberKillFrenziesPassed = *(int32*)0x8E287C;
|
||||
int32 &CStats::PeopleKilledByOthers = *(int32*)0x8E2C50;
|
||||
int32 &CStats::HelisDestroyed = *(int32*)0x8E2A64;
|
||||
int32 *CStats::PedsKilledOfThisType = (int32*)0x880DBC;
|
||||
int32 &CStats::TimesDied = *(int32*)0x8E2BDC;
|
||||
int32 &CStats::TimesArrested = *(int32*)0x8E2BEC;
|
||||
int32 &CStats::KillsSinceLastCheckpoint = *(int32*)0x8F2C8C;
|
||||
|
||||
void CStats::AnotherKillFrenzyPassed()
|
||||
{
|
||||
|
@ -11,7 +11,11 @@ public:
|
||||
static int32 &PeopleKilledByOthers;
|
||||
static int32 &HelisDestroyed;
|
||||
static int32 *PedsKilledOfThisType; //[NUM_PEDTYPES]
|
||||
static int32 &TimesDied;
|
||||
static int32 &TimesArrested;
|
||||
static int32 &KillsSinceLastCheckpoint;
|
||||
|
||||
public:
|
||||
static void AnotherKillFrenzyPassed();
|
||||
static void CheckPointReachedUnsuccessfully() { KillsSinceLastCheckpoint = 0; };
|
||||
};
|
@ -12,6 +12,8 @@
|
||||
int32 &CWanted::MaximumWantedLevel = *(int32*)0x5F7714; // 6
|
||||
int32 &CWanted::nMaximumWantedLevel = *(int32*)0x5F7718; // 6400
|
||||
|
||||
WRAPPER void CWanted::Reset() { EAXJMP(0x4AD790) };
|
||||
|
||||
void
|
||||
CWanted::Initialise()
|
||||
{
|
||||
|
@ -76,6 +76,7 @@ public:
|
||||
bool AddCrimeToQ(eCrimeType type, int32 id, const CVector &pos, bool reported, bool policeDoesntCare);
|
||||
void ReportCrimeNow(eCrimeType type, const CVector &coors, bool policeDoesntCare);
|
||||
void UpdateWantedLevel();
|
||||
void Reset();
|
||||
|
||||
bool IsIgnored(void) { return m_bIgnoredByCops || m_bIgnoredByEveryone; }
|
||||
|
||||
|
@ -41,6 +41,7 @@ bool &CWorld::bIncludeCarTyres = *(bool*)0x95CDAA;
|
||||
WRAPPER void CWorld::ShutDown(void) { EAXJMP(0x4AE450); }
|
||||
WRAPPER void CWorld::RemoveReferencesToDeletedObject(CEntity*) { EAXJMP(0x4B3BF0); }
|
||||
WRAPPER void CWorld::FindObjectsKindaColliding(const CVector &, float, bool, int16*, int16, CEntity **, bool, bool, bool, bool, bool){ EAXJMP(0x4B2A30); }
|
||||
WRAPPER void CWorld::ClearExcitingStuffFromArea(const CVector &pos, float radius, uint8) { EAXJMP(0x4B4E70) };
|
||||
|
||||
void
|
||||
CWorld::Initialise()
|
||||
|
@ -85,6 +85,7 @@ public:
|
||||
}
|
||||
}
|
||||
static void ClearScanCodes(void);
|
||||
static void ClearExcitingStuffFromArea(const CVector &pos, float radius, uint8);
|
||||
|
||||
static bool CameraToIgnoreThisObject(CEntity *ent);
|
||||
|
||||
|
Reference in New Issue
Block a user