From c1c163d78c7f822b62aa6b0f5c7b00642b961700 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sun, 31 May 2020 20:59:01 +0300 Subject: game logic --- src/core/Camera.cpp | 2 +- src/core/Fire.cpp | 13 +++++++++++++ src/core/Game.cpp | 1 + src/core/Pad.h | 9 +++++---- src/core/PlayerInfo.cpp | 2 ++ src/core/PlayerInfo.h | 9 +++++++++ src/core/User.cpp | 4 ++-- src/core/config.h | 4 +++- 8 files changed, 36 insertions(+), 8 deletions(-) (limited to 'src/core') diff --git a/src/core/Camera.cpp b/src/core/Camera.cpp index b65b60f3..d9cc5c32 100644 --- a/src/core/Camera.cpp +++ b/src/core/Camera.cpp @@ -3123,7 +3123,7 @@ CCamera::Fade(float timeout, int16 direction) void CCamera::SetFadeColour(uint8 r, uint8 g, uint8 b) { - m_FadeTargetIsSplashScreen = r == 0 && g == 0 && b == 0; + m_FadeTargetIsSplashScreen = r == 2 && g == 2 && b == 2; CDraw::FadeRed = r; CDraw::FadeGreen = g; CDraw::FadeBlue = b; diff --git a/src/core/Fire.cpp b/src/core/Fire.cpp index 933c73da..3752f1ba 100644 --- a/src/core/Fire.cpp +++ b/src/core/Fire.cpp @@ -15,6 +15,7 @@ #include "DamageManager.h" #include "Ped.h" #include "Fire.h" +#include "GameLogic.h" CFireManager gFireManager; @@ -59,6 +60,12 @@ CFire::ProcessFire(void) Extinguish(); return; } +#if defined GTAVC_JP_PATCH && !defined FIX_BUGS + if (m_pEntity == CGameLogic::pShortCutTaxi && CGameLogic::ShortCutState == CGameLogic::SHORTCUT_TRANSITION) { + Extinguish(); + return; + } +#endif if (ped->m_nMoveState != PEDMOVE_RUN) m_vecPos.z -= 1.0f; if (ped->bInVehicle && ped->m_pMyVehicle) { @@ -84,6 +91,12 @@ CFire::ProcessFire(void) Extinguish(); return; } +#ifdef FIX_BUGS + if (m_pEntity == CGameLogic::pShortCutTaxi && CGameLogic::ShortCutState == CGameLogic::SHORTCUT_TRANSITION) { + Extinguish(); + return; + } +#endif if (!m_bIsScriptFire) { fDamageVehicle = 1.2f * CTimer::GetTimeStep(); veh->InflictDamage((CVehicle *)m_pSource, WEAPONTYPE_FLAMETHROWER, fDamageVehicle); diff --git a/src/core/Game.cpp b/src/core/Game.cpp index 9a1c00a7..f401ca3f 100644 --- a/src/core/Game.cpp +++ b/src/core/Game.cpp @@ -523,6 +523,7 @@ void CGame::ShutDownForRestart(void) CTheScripts::UndoBuildingSwaps(); CTheScripts::UndoEntityInvisibilitySettings(); CWorld::ClearForRestart(); + CGameLogic::ClearShortCut(); CTimer::Shutdown(); CStreaming::FlushRequestList(); CStreaming::DeleteAllRwObjects(); diff --git a/src/core/Pad.h b/src/core/Pad.h index 46ed9b39..a1461575 100644 --- a/src/core/Pad.h +++ b/src/core/Pad.h @@ -10,6 +10,7 @@ enum { PLAYERCONTROL_DISABLED_20 = 32, // used on CPlayerInfo::MakePlayerSafe PLAYERCONTROL_DISABLED_40 = 64, // used on phone calls PLAYERCONTROL_DISABLED_80 = 128,// used on cutscenes + PLAYERCONTROL_SHORTCUT_TAXI = 256, }; class CControllerState @@ -150,10 +151,10 @@ public: int16 Phase; int16 Mode; int16 ShakeDur; + uint16 DisablePlayerControls; uint8 ShakeFreq; bool bHornHistory[HORNHISTORY_SIZE]; uint8 iCurrHornHistory; - uint8 DisablePlayerControls; int8 bApplyBrakes; char CheatString[12]; int32 LastTimeTouched; @@ -449,9 +450,9 @@ public: int16 GetRightStickY(void) { return NewState.RightStickY; } bool ArePlayerControlsDisabled(void) { return DisablePlayerControls != PLAYERCONTROL_ENABLED; } - void SetDisablePlayerControls(uint8 who) { DisablePlayerControls |= who; } - void SetEnablePlayerControls(uint8 who) { DisablePlayerControls &= ~who; } - bool IsPlayerControlsDisabledBy(uint8 who) { return DisablePlayerControls & who; } + void SetDisablePlayerControls(uint16 who) { DisablePlayerControls |= who; } + void SetEnablePlayerControls(uint16 who) { DisablePlayerControls &= ~who; } + bool IsPlayerControlsDisabledBy(uint16 who) { return DisablePlayerControls & who; } }; VALIDATE_SIZE(CPad, 0xFC); diff --git a/src/core/PlayerInfo.cpp b/src/core/PlayerInfo.cpp index 675fafb3..08c8ac36 100644 --- a/src/core/PlayerInfo.cpp +++ b/src/core/PlayerInfo.cpp @@ -146,6 +146,8 @@ CPlayerInfo::Clear(void) m_bDriveByAllowed = true; m_nPreviousTimeRewardedForExplosion = 0; m_nExplosionsSinceLastReward = 0; + m_nCurrentBustedAudio = 1; + m_nBustedAudioStatus = BUSTEDAUDIO_NONE; } void diff --git a/src/core/PlayerInfo.h b/src/core/PlayerInfo.h index e2e874e6..dfe6a53e 100644 --- a/src/core/PlayerInfo.h +++ b/src/core/PlayerInfo.h @@ -10,6 +10,13 @@ enum eWastedBustedState WBSTATE_FAILED_CRITICAL_MISSION, }; +enum eBustedAudioState : uint8 +{ + BUSTEDAUDIO_NONE, + BUSTEDAUDIO_LOADING, + BUSTEDAUDIO_DONE +}; + class CEntity; class CPed; class CVehicle; @@ -60,6 +67,8 @@ public: bool m_bGetOutOfJailFree; bool m_bGetOutOfHospitalFree; bool m_bDriveByAllowed; + eBustedAudioState m_nBustedAudioStatus; + int16 m_nCurrentBustedAudio; char m_aSkinName[32]; RwTexture *m_pSkinTexture; diff --git a/src/core/User.cpp b/src/core/User.cpp index 716d6393..56e37ac4 100644 --- a/src/core/User.cpp +++ b/src/core/User.cpp @@ -1,6 +1,6 @@ #include "common.h" - +#include "GameLogic.h" #include "Hud.h" #include "PlayerPed.h" #include "Replay.h" @@ -99,7 +99,7 @@ void CCurrentVehicle::Display() { wchar *text = nil; - if (m_pCurrentVehicle != nil) + if (m_pCurrentVehicle != nil && m_pCurrentVehicle != CGameLogic::pShortCutTaxi) text = TheText.Get(((CVehicleModelInfo*)CModelInfo::GetModelInfo(m_pCurrentVehicle->GetModelIndex()))->m_gameName); CHud::SetVehicleName(text); } diff --git a/src/core/config.h b/src/core/config.h index 802925a0..6744e888 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -137,7 +137,8 @@ enum Config { NUM_EXPLOSIONS = 48, - NUM_SETPIECES = 96 + NUM_SETPIECES = 96, + NUM_SHORTCUT_START_POINTS = 16 }; // We'll use this once we're ready to become independent of the game @@ -167,6 +168,7 @@ enum Config { #elif defined GTA_PC # define GTA3_1_1_PATCH //# define GTA3_STEAM_PATCH +//# define GTAVC_JP_PATCH # ifdef GTA_PS2_STUFF # define USE_PS2_RAND # define RANDOMSPLASH // use random splash as on PS2 -- cgit v1.2.3