From da39624f1c694dbeaefc6762fd6867715cdb77bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?eray=20or=C3=A7unus?= Date: Thu, 8 Oct 2020 00:21:44 +0300 Subject: Pad, BulletInfo, ProjectileInfo, fixes --- src/core/Camera.cpp | 2 +- src/core/EventList.cpp | 4 +- src/core/Frontend.cpp | 52 ++++---- src/core/Frontend.h | 6 +- src/core/Pad.cpp | 348 +++++++++++++++++++++++++++++++++++++++---------- src/core/Pad.h | 7 + src/core/Radar.cpp | 58 +-------- src/core/re3.cpp | 6 +- 8 files changed, 330 insertions(+), 153 deletions(-) (limited to 'src/core') diff --git a/src/core/Camera.cpp b/src/core/Camera.cpp index 704e77b8..2fa81d24 100644 --- a/src/core/Camera.cpp +++ b/src/core/Camera.cpp @@ -1749,7 +1749,7 @@ CCamera::CamControl(void) if(PrevMode != Cams[ActiveCam].Mode || switchedFromObbe || Cams[ActiveCam].Mode == CCam::MODE_FOLLOWPED || Cams[ActiveCam].Mode == CCam::MODE_CAM_ON_A_STRING) - if(CPad::GetPad(0)->CycleCameraModeUpJustDown() && + if(CPad::GetPad(0)->CycleCameraModeJustDown() && !CReplay::IsPlayingBack() && (m_bLookingAtPlayer || WhoIsInControlOfTheCamera == CAMCONTROL_OBBE) && !m_WideScreenOn && diff --git a/src/core/EventList.cpp b/src/core/EventList.cpp index 7eb1e186..b22ddcb2 100644 --- a/src/core/EventList.cpp +++ b/src/core/EventList.cpp @@ -10,6 +10,8 @@ #include "main.h" #include "Accident.h" +// --MIAMI: file done + int32 CEventList::ms_nFirstFreeSlotIndex; CEvent gaEvent[NUMEVENTS]; @@ -57,6 +59,7 @@ CEventList::Update(void) } } +// ok void CEventList::RegisterEvent(eEventType type, eEventEntity entityType, CEntity *ent, CPed *criminal, int32 timeout) { @@ -195,7 +198,6 @@ CEventList::FindClosestEvent(eEventType type, CVector posn, int32 *event) return found; } -// --MIAMI: Done void CEventList::ReportCrimeForEvent(eEventType type, size_t crimeId, bool copsDontCare) { diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index eee8b4b2..59649e93 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -352,7 +352,7 @@ CMenuManager::CMenuManager() m_PrefsUseVibration = 0; m_PrefsShowHud = 1; m_PrefsRadarMode = 0; - field_10 = 0; + m_DisplayControllerOnFoot = false; m_bShutDownFrontEndRequested = false; m_bStartUpFrontEndRequested = false; pEditString = nil; @@ -950,6 +950,13 @@ CMenuManager::DrawStandardMenus(bool activeScreen) break; } break; + // This one is still in enum and ProcessOnOffMenuOptions, but removed from other places + case MENUACTION_CTRLDISPLAY: + if (m_DisplayControllerOnFoot) + rightText = TheText.Get("FEC_ONF"); + else + rightText = TheText.Get("FEC_INC"); + break; #endif case MENUACTION_FRAMESYNC: rightText = TheText.Get(m_PrefsVsyncDisp ? "FEM_ON" : "FEM_OFF"); @@ -4206,6 +4213,7 @@ CMenuManager::ProcessUserInput(uint8 goDown, uint8 goUp, uint8 optionSelected, u } } +// --MIAMI: Done void CMenuManager::ProcessOnOffMenuOptions() { @@ -4213,78 +4221,78 @@ CMenuManager::ProcessOnOffMenuOptions() #ifdef LEGACY_MENU_OPTIONS case MENUACTION_CTRLVIBRATION: m_PrefsUseVibration = !m_PrefsUseVibration; - DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); break; case MENUACTION_CTRLCONFIG: CPad::GetPad(0)->Mode++; if (CPad::GetPad(0)->Mode > 3) CPad::GetPad(0)->Mode = 0; - DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); break; #endif + case MENUACTION_INVERTPADY: + CPad::bInvertLook4Pad = !CPad::bInvertLook4Pad; + SaveSettings(); // FIX: Why don't SaveSettings? Because of it's an hidden option? :( + break; + case MENUACTION_CTRLDISPLAY: + m_DisplayControllerOnFoot = !m_DisplayControllerOnFoot; + break; case MENUACTION_FRAMESYNC: m_PrefsVsyncDisp = !m_PrefsVsyncDisp; - DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); - SaveSettings(); + SaveSettings(); // FIX: Again... This makes me very unhappy break; case MENUACTION_FRAMELIMIT: m_PrefsFrameLimiter = !m_PrefsFrameLimiter; - DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); SaveSettings(); break; case MENUACTION_TRAILS: CMBlur::BlurOn = !CMBlur::BlurOn; - DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); SaveSettings(); - if (CMBlur::BlurOn) - CMBlur::MotionBlurOpen(Scene.camera); - else - CMBlur::MotionBlurClose(); break; case MENUACTION_SUBTITLES: m_PrefsShowSubtitles = !m_PrefsShowSubtitles; - DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); SaveSettings(); break; #ifndef ASPECT_RATIO_SCALE case MENUACTION_WIDESCREEN: m_PrefsUseWideScreen = !m_PrefsUseWideScreen; - DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); SaveSettings(); break; #endif + case MENUACTION_LEGENDS: + m_PrefsShowLegends = !m_PrefsShowLegends; + break; + case MENUACTION_HUD: + m_PrefsShowHud = !m_PrefsShowHud; + SaveSettings(); + break; +#ifdef LEGACY_MENU_OPTIONS case MENUACTION_SETDBGFLAG: CTheScripts::InvertDebugFlag(); - DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); break; case MENUACTION_SWITCHBIGWHITEDEBUGLIGHT: gbBigWhiteDebugLightSwitchedOn = !gbBigWhiteDebugLightSwitchedOn; - DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); break; case MENUACTION_COLLISIONPOLYS: gbShowCollisionPolys = !gbShowCollisionPolys; - DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); break; +#endif case MENUACTION_SHOWHEADBOB: TheCamera.m_bHeadBob = !TheCamera.m_bHeadBob; - DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); SaveSettings(); break; case MENUACTION_INVVERT: MousePointerStateHelper.bInvertVertically = !MousePointerStateHelper.bInvertVertically; - DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); SaveSettings(); break; case MENUACTION_DYNAMICACOUSTIC: m_PrefsDMA = !m_PrefsDMA; DMAudio.SetDynamicAcousticModelingStatus(m_PrefsDMA); - DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); SaveSettings(); break; case MENUACTION_MOUSESTEER: - CVehicle::m_bDisableMouseSteering = !CVehicle::m_bDisableMouseSteering; - DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); - SaveSettings(); + if (m_ControlMethod == CONTROL_STANDARD) { + CVehicle::m_bDisableMouseSteering = !CVehicle::m_bDisableMouseSteering; + SaveSettings(); + } break; } } diff --git a/src/core/Frontend.h b/src/core/Frontend.h index 6cd58e7d..0dab83a4 100644 --- a/src/core/Frontend.h +++ b/src/core/Frontend.h @@ -207,8 +207,8 @@ enum eMenuAction MENUACTION_YES, MENUACTION_NO, MENUACTION_CHANGEMENU, - MENUACTION_UNK5, MENUACTION_INVERTPADY, + MENUACTION_CTRLDISPLAY, MENUACTION_FRAMESYNC, MENUACTION_FRAMELIMIT, MENUACTION_TRAILS, @@ -466,7 +466,7 @@ public: bool m_PrefsUseVibration; bool m_PrefsShowHud; int32 m_PrefsRadarMode; - uint8 field_10; + bool m_DisplayControllerOnFoot; bool m_bShutDownFrontEndRequested; bool m_bStartUpFrontEndRequested; int32 m_KeyPressedCode; @@ -702,4 +702,4 @@ VALIDATE_SIZE(CMenuManager, 0x688); extern CMenuManager FrontEndMenuManager; extern CMenuScreen aScreens[]; -#endif \ No newline at end of file +#endif diff --git a/src/core/Pad.cpp b/src/core/Pad.cpp index 36e14e55..785927ce 100644 --- a/src/core/Pad.cpp +++ b/src/core/Pad.cpp @@ -54,6 +54,8 @@ #include "libpad.h" #endif +// --MIAMI: file done except Mobile(see TODOs) and PS2 stuff + CPad Pads[MAX_PADS]; #ifdef GTA_PS2 u_long128 pad_dma_buf[scePadDmaBufferMax] __attribute__((aligned(64))); @@ -66,7 +68,9 @@ bool CPad::bDisplayNoControllerMessage; bool CPad::bObsoleteControllerMessage; bool CPad::bOldDisplayNoControllerMessage; bool CPad::m_bMapPadOneToPadTwo; +bool CPad::m_bDebugCamPCOn; bool CPad::bHasPlayerCheated; +bool CPad::bInvertLook4Pad; #ifdef GTA_PS2 unsigned char act_direct[6]; unsigned char act_align[6]; @@ -93,6 +97,74 @@ extern bool gbFastTime; extern bool gGravityCheat; #endif +void SpecialCarCheats() +{ + if ( !CVehicle::bCheat9 ) + { + ((CVehicleModelInfo*)CModelInfo::GetModelInfo(MI_INFERNUS))->m_wheelScale *= 1.3f; + ((CVehicleModelInfo*)CModelInfo::GetModelInfo(MI_CHEETAH))->m_wheelScale *= 1.3f; + ((CVehicleModelInfo*)CModelInfo::GetModelInfo(MI_PHEONIX))->m_wheelScale *= 1.3f; + ((CVehicleModelInfo*)CModelInfo::GetModelInfo(MI_DELUXO))->m_wheelScale *= 1.3f; + mod_HandlingManager.GetHandlingData(HANDLING_LANDSTAL)->Transmission.fEngineAcceleration *= 2.0f; + mod_HandlingManager.GetHandlingData(HANDLING_PATRIOT)->Transmission.fEngineAcceleration *= 2.0f; + mod_HandlingManager.GetHandlingData(HANDLING_BOBCAT)->Transmission.fEngineAcceleration *= 2.0f; + mod_HandlingManager.GetHandlingData(HANDLING_BFINJECT)->Transmission.fEngineAcceleration *= 2.0f; + mod_HandlingManager.GetHandlingData(HANDLING_RANCHER)->Transmission.fEngineAcceleration *= 2.0f; + mod_HandlingManager.GetHandlingData(HANDLING_DESPERAD)->Transmission.fEngineAcceleration *= 2.0f; + mod_HandlingManager.GetHandlingData(HANDLING_DELUXO)->Transmission.fEngineAcceleration *= 2.0f; + + mod_HandlingManager.GetHandlingData(HANDLING_BAGGAGE)->Transmission.fEngineAcceleration *= 2.0f; + mod_HandlingManager.GetHandlingData(HANDLING_BAGGAGE)->Transmission.fMaxVelocity *= 2.0f; + mod_HandlingManager.GetHandlingData(HANDLING_BAGGAGE)->Transmission.InitGearRatios(); + + mod_HandlingManager.GetHandlingData(HANDLING_GOLFCART)->Transmission.fEngineAcceleration *= 2.0f; + mod_HandlingManager.GetHandlingData(HANDLING_GOLFCART)->Transmission.fMaxVelocity *= 2.0f; + mod_HandlingManager.GetHandlingData(HANDLING_GOLFCART)->Transmission.InitGearRatios(); + + mod_HandlingManager.GetHandlingData(HANDLING_STINGER)->fCollisionDamageMultiplier *= 0.25f; + mod_HandlingManager.GetHandlingData(HANDLING_STINGER)->fMass *= 2.5f; + mod_HandlingManager.GetHandlingData(HANDLING_STINGER)->fTurnMass *= 4.0f; + + mod_HandlingManager.GetHandlingData(HANDLING_BANSHEE)->fCollisionDamageMultiplier *= 0.25f; + mod_HandlingManager.GetHandlingData(HANDLING_BANSHEE)->fMass *= 2.5f; + mod_HandlingManager.GetHandlingData(HANDLING_BANSHEE)->fTurnMass *= 4.0f; + + mod_HandlingManager.GetHandlingData(HANDLING_SABRETUR)->fCollisionDamageMultiplier *= 0.25f; + mod_HandlingManager.GetHandlingData(HANDLING_SABRETUR)->fMass *= 2.5f; + mod_HandlingManager.GetHandlingData(HANDLING_SABRETUR)->fTurnMass *= 4.0f; + + mod_HandlingManager.GetHandlingData(HANDLING_COMET)->fCollisionDamageMultiplier *= 0.25f; + mod_HandlingManager.GetHandlingData(HANDLING_COMET)->fMass *= 2.5f; + mod_HandlingManager.GetHandlingData(HANDLING_COMET)->fTurnMass *= 4.0f; + + mod_HandlingManager.GetHandlingData(HANDLING_DELUXO)->fCollisionDamageMultiplier *= 0.25f; + mod_HandlingManager.GetHandlingData(HANDLING_DELUXO)->fMass *= 2.5f; + mod_HandlingManager.GetHandlingData(HANDLING_DELUXO)->fTurnMass *= 4.0f; + CHud::SetHelpMessage(TheText.Get("CHEAT1"), true); + CVehicle::bCheat9 = true; + CPad::bHasPlayerCheated = true; + } +} + +void PickUpChicksCheat() +{ + if ( FindPlayerVehicle() && (FindPlayerVehicle()->IsCar() || FindPlayerVehicle()->IsBike()) ) + { + CVehicle *vehicle = FindPlayerVehicle(); + if ( FindPlayerVehicle()->m_vehType == 5 ) + { + if ( vehicle->pPassengers[0] ) + vehicle->pPassengers[0]->SetObjective(OBJECTIVE_LEAVE_CAR, vehicle); + } + CPed* someoneElse = (CPed*)CWorld::TestSphereAgainstWorld(vehicle->GetPosition(), 6.0f, FindPlayerPed(), false, false, true, false, false, false); + if ( someoneElse && someoneElse->m_nPedState != PED_DRIVING ) + { + CHud::SetHelpMessage(TheText.Get("CHEAT1"), true); + someoneElse->SetObjective(OBJECTIVE_ENTER_CAR_AS_PASSENGER, vehicle); + } + } +} + void WeaponCheat1() { CHud::SetHelpMessage(TheText.Get("CHEAT2"), true); @@ -127,6 +199,11 @@ void WeaponCheat1() CStreaming::SetModelIsDeletable(MI_RUGER); CStreaming::SetModelIsDeletable(MI_SNIPERRIFLE); CStreaming::SetModelIsDeletable(MI_FLAMETHROWER); +#ifdef MOBILE_IMPROVEMENTS + if (FindPlayerVehicle()) { + FindPlayerPed()->RemoveWeaponWhenEnteringVehicle(); + } +#endif } void WeaponCheat2() @@ -162,6 +239,11 @@ void WeaponCheat2() CStreaming::SetModelIsDeletable(MI_M4); CStreaming::SetModelIsDeletable(MI_LASERSCOPE); CStreaming::SetModelIsDeletable(MI_ROCKETLAUNCHER); +#ifdef MOBILE_IMPROVEMENTS + if (FindPlayerVehicle()) { + FindPlayerPed()->RemoveWeaponWhenEnteringVehicle(); + } +#endif } void WeaponCheat3() @@ -197,6 +279,12 @@ void WeaponCheat3() CStreaming::SetModelIsDeletable(MI_LASERSCOPE); CStreaming::SetModelIsDeletable(MI_MINIGUN); CStreaming::SetModelIsDeletable(MI_MINIGUN2); + +#ifdef MOBILE_IMPROVEMENTS + if (FindPlayerVehicle()) { + FindPlayerPed()->RemoveWeaponWhenEnteringVehicle(); + } +#endif } void HealthCheat() @@ -213,6 +301,7 @@ void HealthCheat() } } +// TODO(Miami): this is HELLA different on mobile, although it mostly has debug oriented things like player exiting it's current car and enters spawned one etc. void VehicleCheat(int model) { CHud::SetHelpMessage(TheText.Get("CHEAT1"), true); @@ -232,7 +321,7 @@ void VehicleCheat(int model) #ifdef FIX_BUGS CAutomobile* vehicle = new CAutomobile(model, RANDOM_VEHICLE); #else - CAutomobile* vehicle = new CAutomobile(MI_RHINO, MISSION_VEHICLE); + CAutomobile* vehicle = new CAutomobile(model, MISSION_VEHICLE); #endif if (vehicle != nil) { CVector pos = ThePaths.m_pathNodes[node].GetPosition(); @@ -249,6 +338,7 @@ void VehicleCheat(int model) CPad::bHasPlayerCheated = true; } + void BlowUpCarsCheat() { CHud::SetHelpMessage(TheText.Get("CHEAT1"), true); @@ -262,7 +352,8 @@ void BlowUpCarsCheat() void ChangePlayerCheat() { - int modelId; + // I don't know wtf is going on in here... + int modelId, anotherModelId; if (FindPlayerPed()->IsPedInControl() && CModelInfo::GetModelInfo("player", nil)) { CHud::SetHelpMessage(TheText.Get("CHEAT1"), true); @@ -270,21 +361,22 @@ void ChangePlayerCheat() AssocGroupId AnimGrp = ped->m_animGroup; do { - do - modelId = CGeneral::GetRandomNumberInRange(0, MI_WFYG2+1); - while (!CModelInfo::GetModelInfo(modelId)); - } while (modelId == MI_TAXI_D); + do { + modelId = CGeneral::GetRandomNumberInRange(0, MI_PGA); + anotherModelId = modelId+1; + } while (!CModelInfo::GetModelInfo(anotherModelId)); + } while (anotherModelId >= MI_SPECIAL01 && anotherModelId <= MI_SPECIAL04 || modelId == MI_TAXI_D); - uint8 flags = CStreaming::ms_aInfoForModel[modelId].m_flags; + uint8 flags = CStreaming::ms_aInfoForModel[anotherModelId].m_flags; ped->DeleteRwObject(); - CStreaming::RequestModel(modelId, STREAMFLAGS_DEPENDENCY| STREAMFLAGS_DONT_REMOVE); + CStreaming::RequestModel(anotherModelId, STREAMFLAGS_DEPENDENCY| STREAMFLAGS_DONT_REMOVE); CStreaming::LoadAllRequestedModels(false); ped->m_modelIndex = -1; - ped->SetModelIndex(modelId); + ped->SetModelIndex(anotherModelId); ped->m_animGroup = AnimGrp; - if (modelId != MI_PLAYER) { + if (modelId != -1) { if (!(flags & STREAMFLAGS_DONT_REMOVE)) - CStreaming::SetModelIsDeletable(modelId); + CStreaming::SetModelIsDeletable(anotherModelId); } } } @@ -426,11 +518,6 @@ void StrongGripCheat() CPad::bHasPlayerCheated = true; } -void NastyLimbsCheat() -{ - CPed::bNastyLimbsCheat = !CPed::bNastyLimbsCheat; -} - void FannyMagnetCheat() { CHud::SetHelpMessage(TheText.Get("CHEAT1"), true); @@ -578,6 +665,7 @@ void FlyingFishCheat(void) { CHud::SetHelpMessage(TheText.Get("CHEAT1"), true); CVehicle::bCheat8 = !CVehicle::bCheat8; + CPad::bHasPlayerCheated = true; } void DoShowChaseStatCheat(void) { @@ -655,6 +743,8 @@ void CPad::Initialise(void) bObsoleteControllerMessage = false; bOldDisplayNoControllerMessage = false; bDisplayNoControllerMessage = false; + m_bMapPadOneToPadTwo = false; + m_bDebugCamPCOn = false; } #endif @@ -687,9 +777,9 @@ void CPad::Clear(bool bResetPlayerControls) if ( bResetPlayerControls ) DisablePlayerControls = PLAYERCONTROL_ENABLED; + JustOutOfFrontend = 0; bApplyBrakes = false; - for ( int32 i = 0; i < HORNHISTORY_SIZE; i++ ) bHornHistory[i] = false; @@ -715,6 +805,14 @@ void CPad::ClearMouseHistory() OldMouseControllerState.Clear(); } +// unused +void CPad::ClearKeyBoardHistory() +{ + NewKeyState.Clear(); + OldKeyState.Clear(); + TempKeyState.Clear(); +} + CMouseControllerState::CMouseControllerState() { LMB = 0; @@ -1113,9 +1211,6 @@ void CPad::AddToCheatString(char c) else if ( !_CHEATCMP("T33L1413") ) StrongGripCheat(); - // "S1CD13TR1X" - SQUARE L1 CIRCLE DOWN L1 R1 TRIANGLE RIGHT L1 CROSS - else if ( !_CHEATCMP("X1RT31DC1S") ) - NastyLimbsCheat(); #undef _CHEATCMP } #endif @@ -1132,6 +1227,7 @@ int Cheat_strncmp(char* sourceStr, char* origCheatStr) return 0; } +// TODO(Miami): Mobile has changed some of the cheats to include debugging things void CPad::AddToPCCheatString(char c) { for (int32 i = ARRAY_SIZE(KeyBoardCheatString) - 2; i >= 0; i--) @@ -1406,6 +1502,16 @@ void CPad::AddToPCCheatString(char c) KeyBoardCheatString[0] = ' '; BackToTheFuture(); } + // LOADSOFLITTLETHINGS + else if (!Cheat_strncmp(KeyBoardCheatString, "VLUJUoHSU_VTMo`J]bV")) { + KeyBoardCheatString[0] = ' '; + SpecialCarCheats(); + } + // HOPINGIRL + else if (!Cheat_strncmp(KeyBoardCheatString, "OWPH[dSVI")) { + KeyBoardCheatString[0] = ' '; + PickUpChicksCheat(); + } //CERTAINDEATH else if (!Cheat_strncmp(KeyBoardCheatString, "KYHFQiLHU]RK")) { KeyBoardCheatString[0] = ' '; @@ -1422,10 +1528,6 @@ void CPad::AddToPCCheatString(char c) FannyMagnetCheat(); } - // "NASTYLIMBSCHEAT" - if (!_CHEATCMP("TAEHCSBMILYTSAN")) - NastyLimbsCheat(); - #ifdef KANGAROO_CHEAT // "KANGAROO" if (!_CHEATCMP("OORAGNAK")) @@ -1879,6 +1981,9 @@ void CPad::Update(int16 pad) if ( !bDisplayNoControllerMessage ) CGame::bDemoMode = false; + + if ( JustOutOfFrontend != 0 ) + --JustOutOfFrontend; } void CPad::DoCheats(void) @@ -1963,7 +2068,6 @@ CPad *CPad::GetPad(int32 pad) #define CURMODE (Mode) #endif - int16 CPad::GetSteeringLeftRight(void) { if ( ArePlayerControlsDisabled() ) @@ -2126,7 +2230,6 @@ int16 CPad::GetPedWalkLeftRight(void) return 0; } - int16 CPad::GetPedWalkUpDown(void) { if ( ArePlayerControlsDisabled() ) @@ -2190,6 +2293,36 @@ int16 CPad::GetAnalogueUpDown(void) return 0; } +int16 CPad::GetAnalogueLeftRight(void) +{ + switch (CURMODE) + { + case 0: + case 2: + { + int16 axis = NewState.LeftStickX; + int16 dpad = (NewState.DPadRight - NewState.DPadLeft) / 2; + + if ( Abs(axis) > Abs(dpad) ) + return axis; + else + return dpad; + + break; + } + + case 1: + case 3: + { + return NewState.LeftStickX; + + break; + } + } + + return 0; +} + bool CPad::GetLookLeft(void) { if ( ArePlayerControlsDisabled() ) @@ -2301,7 +2434,6 @@ bool CPad::HornJustDown(void) return false; } - bool CPad::GetCarGunFired(void) { if ( ArePlayerControlsDisabled() ) @@ -2432,6 +2564,10 @@ bool CPad::GetExitVehicle(void) if ( ArePlayerControlsDisabled() ) return false; + + if ( JustOutOfFrontend != 0 ) + return false; + switch (CURMODE) { case 0: @@ -2459,6 +2595,9 @@ bool CPad::ExitVehicleJustDown(void) if ( ArePlayerControlsDisabled() ) return false; + if ( JustOutOfFrontend != 0 ) + return false; + switch (CURMODE) { case 0: @@ -2585,6 +2724,53 @@ int16 CPad::GetAccelerate(void) return 0; } +bool CPad::CycleCameraModeJustDown(void) +{ + bool result; + switch (CURMODE) + { + case 0: + case 2: + case 3: + { + result = !!(NewState.Select && !OldState.Select); + + break; + } + + case 1: + { + result = !!(NewState.DPadUp && !OldState.DPadUp); + + break; + } + default: + { + result = false; + break; + } + } + + if (!result) + { + switch (CURMODE) + { + case 1: + { + result = !!(NewState.DPadDown && !OldState.DPadDown); + break; + } + default: + { + result = false; + break; + } + } + } + + return result; +} + bool CPad::CycleCameraModeUpJustDown(void) { switch (CURMODE) @@ -2672,7 +2858,6 @@ bool CPad::ChangeStationJustDown(void) return false; } - bool CPad::CycleWeaponLeftJustDown(void) { if ( ArePlayerControlsDisabled() ) @@ -2831,23 +3016,23 @@ bool CPad::ShiftTargetRightJustDown(void) if ( ArePlayerControlsDisabled() ) return false; - return !!(NewState.RightShoulder2 && !OldState.RightShoulder2); + return !!(NewState.LeftShoulder1 && !OldState.LeftShoulder1) || !!(NewState.RightShoulder2 && !OldState.RightShoulder2); } bool CPad::GetAnaloguePadUp(void) { static int16 oldfStickY = 0; - int16 Y = CPad::GetPad(0)->GetAnalogueUpDown(); + int16 leftStickY = CPad::GetPad(0)->GetLeftStickY(); - if ( Y < 0 && oldfStickY >= 0 ) + if ( leftStickY < -15 && oldfStickY >= -5 ) { - oldfStickY = Y; + oldfStickY = leftStickY; return true; } else { - oldfStickY = Y; + oldfStickY = leftStickY; return false; } } @@ -2856,16 +3041,16 @@ bool CPad::GetAnaloguePadDown(void) { static int16 oldfStickY = 0; - int16 Y = CPad::GetPad(0)->GetAnalogueUpDown(); + int16 leftStickY = CPad::GetPad(0)->GetLeftStickY(); - if ( Y > 0 && oldfStickY <= 0 ) + if ( leftStickY > 15 && oldfStickY <= 5 ) { - oldfStickY = Y; + oldfStickY = leftStickY; return true; } else { - oldfStickY = Y; + oldfStickY = leftStickY; return false; } } @@ -2874,16 +3059,16 @@ bool CPad::GetAnaloguePadLeft(void) { static int16 oldfStickX = 0; - int16 X = CPad::GetPad(0)->GetPedWalkLeftRight(); + int16 leftStickX = CPad::GetPad(0)->GetLeftStickX(); - if ( X < 0 && oldfStickX >= 0 ) + if ( leftStickX < -15 && oldfStickX >= -5 ) { - oldfStickX = X; + oldfStickX = leftStickX; return true; } else { - oldfStickX = X; + oldfStickX = leftStickX; return false; } } @@ -2892,16 +3077,16 @@ bool CPad::GetAnaloguePadRight(void) { static int16 oldfStickX = 0; - int16 X = CPad::GetPad(0)->GetPedWalkLeftRight(); + int16 leftStickX = CPad::GetPad(0)->GetLeftStickX(); - if ( X > 0 && oldfStickX <= 0 ) + if ( leftStickX > 15 && oldfStickX <= 5 ) { - oldfStickX = X; + oldfStickX = leftStickX; return true; } else { - oldfStickX = X; + oldfStickX = leftStickX; return false; } } @@ -2914,7 +3099,7 @@ bool CPad::GetAnaloguePadLeftJustUp(void) if ( X == 0 && oldfStickX < 0 ) { - oldfStickX = X; + oldfStickX = 0; return true; } @@ -2934,7 +3119,7 @@ bool CPad::GetAnaloguePadRightJustUp(void) if ( X == 0 && oldfStickX > 0 ) { - oldfStickX = X; + oldfStickX = 0; return true; } @@ -3040,23 +3225,35 @@ int16 CPad::SniperModeLookLeftRight(void) int16 axis = NewState.LeftStickX; int16 dpad = (NewState.DPadRight - NewState.DPadLeft) / 2; - if ( Abs(axis) > Abs(dpad) ) - return axis; - else + if ( Abs(axis) > Abs(dpad) ) { + if ( Abs(axis) > 35.0f ) { + return (axis > 0.f ? axis - 35.f : axis + 35.f) * 1.3763441f; + } else { + return 0; + } + } else return dpad; } int16 CPad::SniperModeLookUpDown(void) { int16 axis = NewState.LeftStickY; -#ifdef FIX_BUGS - axis = -axis; -#endif - int16 dpad = (NewState.DPadUp - NewState.DPadDown) / 2; + int16 dpad; - if ( Abs(axis) > Abs(dpad) ) - return axis; - else + if (CPad::bInvertLook4Pad) { + axis = -axis; + dpad = (NewState.DPadDown - NewState.DPadUp) / 2; + } else { + dpad = (NewState.DPadUp - NewState.DPadDown) / 2; + } + + if ( Abs(axis) > Abs(dpad) ) { + if ( Abs(axis) > 35.0f ) { + return (axis > 0.f ? axis - 35.f : axis + 35.f) * 1.3763441f; + } else { + return 0; + } + } else return dpad; } @@ -3079,9 +3276,8 @@ int16 CPad::LookAroundUpDown(void) { int16 axis = GetPad(0)->NewState.RightStickY; -#ifdef FIX_BUGS - axis = -axis; -#endif + if (CPad::bInvertLook4Pad) + axis = -axis; if ( Abs(axis) > 85 && !GetLookBehindForPed() ) return (int16) ( (axis + ( ( axis > 0 ) ? -85 : 85) ) @@ -3094,7 +3290,6 @@ int16 CPad::LookAroundUpDown(void) return 0; } - void CPad::ResetAverageWeapon(void) { AverageWeapon = GetWeapon(); @@ -3103,6 +3298,9 @@ void CPad::ResetAverageWeapon(void) void CPad::PrintErrorMessage(void) { + if (TheCamera.m_WideScreenOn) + return; + if ( bDisplayNoControllerMessage && !CGame::playingIntro && !FrontEndMenuManager.m_bMenuActive ) { CSprite2d::DrawRect(CRect(SCREEN_STRETCH_X(20.0f), SCREEN_SCALE_FROM_BOTTOM(130.0f), SCREEN_STRETCH_FROM_RIGHT(20.0f), SCREEN_SCALE_Y(140.0f)), CRGBA(50, 50, 50, 210)); @@ -3153,26 +3351,30 @@ void CPad::ResetCheats(void) { CWeather::ReleaseWeather(); + gbFastTime = false; CPopulation::ms_bGivePedsWeapons = false; - - CPed::bNastyLimbsCheat = false; - CPed::bFannyMagnetCheat = false; - CPed::bPedCheat2 = false; - CPed::bPedCheat3 = false; + CTimer::SetTimeScale(1.0f); CVehicle::bWheelsOnlyCheat = false; CVehicle::bAllDodosCheat = false; CVehicle::bCheat3 = false; CVehicle::bCheat4 = false; CVehicle::bCheat5 = false; + CVehicle::bAllTaxisHaveNitro = false; + CVehicle::bHoverCheat = false; CVehicle::bCheat8 = false; + CVehicle::bCheat9 = false; + CVehicle::bCheat10 = false; gbBlackCars = false; gbPinkCars = false; + CCarCtrl::bMadDriversCheat = false; CTrafficLights::bGreenLightsCheat = false; CStats::ShowChaseStatOnScreen = 0; - gbFastTime = false; - CTimer::SetTimeScale(1.0f); + CPed::bNastyLimbsCheat = false; + CPed::bFannyMagnetCheat = false; + CPed::bPedCheat3 = false; + } char *CPad::EditString(char *pStr, int32 nSize) @@ -3377,3 +3579,13 @@ int32 *CPad::EditCodesForControls(int32 *pRsKeys, int32 nSize) return pRsKeys; } + +void CPad::FixPadsAfterSave(void) +{ + UpdatePads(); + if ( bObsoleteControllerMessage ) + { + bObsoleteControllerMessage = false; + GetPad(0)->Phase = 0; + } +} \ No newline at end of file diff --git a/src/core/Pad.h b/src/core/Pad.h index cde2d3c5..01f5bb9b 100644 --- a/src/core/Pad.h +++ b/src/core/Pad.h @@ -158,6 +158,7 @@ public: uint8 ShakeFreq; bool bHornHistory[HORNHISTORY_SIZE]; uint8 iCurrHornHistory; + int8 JustOutOfFrontend; int8 bApplyBrakes; char CheatString[12]; int32 LastTimeTouched; @@ -174,7 +175,9 @@ public: static bool bObsoleteControllerMessage; static bool bOldDisplayNoControllerMessage; static bool m_bMapPadOneToPadTwo; + static bool m_bDebugCamPCOn; static bool bHasPlayerCheated; + static bool bInvertLook4Pad; static CKeyboardState OldKeyState; static CKeyboardState NewKeyState; @@ -190,6 +193,7 @@ public: #endif void Clear(bool bResetPlayerControls); void ClearMouseHistory(); + void ClearKeyBoardHistory(); void UpdateMouse(); CControllerState ReconcileTwoControllersInput(CControllerState const &State1, CControllerState const &State2); void StartShake(int16 nDur, uint8 nFreq); @@ -219,6 +223,7 @@ public: int16 GetPedWalkLeftRight(void); int16 GetPedWalkUpDown(void); int16 GetAnalogueUpDown(void); + int16 GetAnalogueLeftRight(void); bool GetLookLeft(void); bool GetLookRight(void); bool GetLookBehindForCar(void); @@ -234,6 +239,7 @@ public: int32 GetWeapon(void); bool WeaponJustDown(void); int16 GetAccelerate(void); + bool CycleCameraModeJustDown(void); bool CycleCameraModeUpJustDown(void); bool CycleCameraModeDownJustDown(void); bool ChangeStationJustDown(void); @@ -261,6 +267,7 @@ public: int16 LookAroundLeftRight(void); int16 LookAroundUpDown(void); void ResetAverageWeapon(void); + static void FixPadsAfterSave(void); static void PrintErrorMessage(void); static void ResetCheats(void); static char *EditString(char *pStr, int32 nSize); diff --git a/src/core/Radar.cpp b/src/core/Radar.cpp index b9fc369d..5317040f 100644 --- a/src/core/Radar.cpp +++ b/src/core/Radar.cpp @@ -750,9 +750,7 @@ void CRadar::DrawBlips() void CRadar::DrawMap() { if (!TheCamera.m_WideScreenOn && CHud::m_Wants_To_Draw_Hud) { -#if 1 // from VC CalculateCachedSinCos(); -#endif if (FindPlayerVehicle()) { float speed = FindPlayerSpeed().Magnitude(); if (speed < RADAR_MIN_SPEED) @@ -1366,33 +1364,8 @@ void CRadar::TransformRealWorldToTexCoordSpace(CVector2D &out, const CVector2D & void CRadar::TransformRadarPointToRealWorldSpace(CVector2D &out, const CVector2D &in) { float s, c; -#if 1 s = -cachedSin; c = cachedCos; -#else - // Original code - - s = -Sin(TheCamera.GetForward().Heading()); - c = Cos(TheCamera.GetForward().Heading()); - - if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOPDOWN || TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOP_DOWN_PED) { - s = 0.0f; - c = 1.0f; - } - else if (TheCamera.GetLookDirection() != LOOKING_FORWARD) { - CVector forward; - - if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_1STPERSON) { - forward = TheCamera.Cams[TheCamera.ActiveCam].CamTargetEntity->GetForward(); - forward.Normalise(); // a bit useless... - } - else - forward = TheCamera.Cams[TheCamera.ActiveCam].CamTargetEntity->GetPosition() - TheCamera.Cams[TheCamera.ActiveCam].SourceBeforeLookBehind; - - s = -Sin(forward.Heading()); - c = Cos(forward.Heading()); - } -#endif out.x = s * in.y + c * in.x; out.y = c * in.y - s * in.x; @@ -1419,35 +1392,8 @@ void CRadar::TransformRadarPointToScreenSpace(CVector2D &out, const CVector2D &i void CRadar::TransformRealWorldPointToRadarSpace(CVector2D &out, const CVector2D &in) { float s, c; -#if 1 s = cachedSin; c = cachedCos; -#else - // Original code - - float s, c; - if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOPDOWN || TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOP_DOWN_PED) { - s = 0.0f; - c = 1.0f; - } - else if (TheCamera.GetLookDirection() == LOOKING_FORWARD) { - s = Sin(TheCamera.GetForward().Heading()); - c = Cos(TheCamera.GetForward().Heading()); - } - else { - CVector forward; - - if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_1STPERSON) { - forward = TheCamera.Cams[TheCamera.ActiveCam].CamTargetEntity->GetForward(); - forward.Normalise(); // a bit useless... - } - else - forward = TheCamera.Cams[TheCamera.ActiveCam].CamTargetEntity->GetPosition() - TheCamera.Cams[TheCamera.ActiveCam].SourceBeforeLookBehind; - - s = Sin(forward.Heading()); - c = Cos(forward.Heading()); - } -#endif float x = (in.x - vec2DRadarOrigin.x) * (1.0f / m_radarRange); float y = (in.y - vec2DRadarOrigin.y) * (1.0f / m_radarRange); @@ -1534,10 +1480,10 @@ CRadar::ToggleTargetMarker(float x, float y) if (!ms_RadarTrace[nextBlip].m_bInUse) break; } -#ifdef FIX_BUGS + if (nextBlip == NUMRADARBLIPS) return; -#endif + ms_RadarTrace[nextBlip].m_eBlipType = BLIP_COORD; ms_RadarTrace[nextBlip].m_nColor = 0x333333FF; ms_RadarTrace[nextBlip].m_bDim = 1; diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 1393314c..2e112442 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -100,7 +100,8 @@ void FastWeatherCheat(); void OnlyRenderWheelsCheat(); void ChittyChittyBangBangCheat(); void StrongGripCheat(); -void NastyLimbsCheat(); +void SpecialCarCheats(); +void PickUpChicksCheat(); DebugMenuEntry *carCol1; DebugMenuEntry *carCol2; @@ -370,7 +371,8 @@ DebugMenuPopulate(void) DebugMenuAddCmd("Cheats", "Only render wheels", OnlyRenderWheelsCheat); DebugMenuAddCmd("Cheats", "Chitty chitty bang bang", ChittyChittyBangBangCheat); DebugMenuAddCmd("Cheats", "Strong grip", StrongGripCheat); - DebugMenuAddCmd("Cheats", "Nasty limbs", NastyLimbsCheat); + DebugMenuAddCmd("Cheats", "Special car", SpecialCarCheats); + DebugMenuAddCmd("Cheats", "Pickup chicks", PickUpChicksCheat); static int spawnCarId = MI_LANDSTAL; e = DebugMenuAddVar("Spawn", "Spawn Car ID", &spawnCarId, nil, 1, MI_LANDSTAL, MI_VICECHEE, carnames); -- cgit v1.2.3 From 73a3e9d5bb3a12812926b487a17c36dd4381ebc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?eray=20or=C3=A7unus?= Date: Thu, 8 Oct 2020 21:46:00 +0300 Subject: Fixes, some thanks to ASan --- src/core/Pad.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/core') diff --git a/src/core/Pad.cpp b/src/core/Pad.cpp index aa6e5cc8..b723eb1d 100644 --- a/src/core/Pad.cpp +++ b/src/core/Pad.cpp @@ -3209,7 +3209,7 @@ int16 CPad::SniperModeLookLeftRight(void) if ( Abs(axis) > Abs(dpad) ) { if ( Abs(axis) > 35.0f ) { - return (axis > 0.f ? axis - 35.f : axis + 35.f) * 1.3763441f; + return (axis > 0.f ? axis - 35.f : axis + 35.f) * (128.f / (128 - 35)); } else { return 0; } @@ -3231,7 +3231,7 @@ int16 CPad::SniperModeLookUpDown(void) if ( Abs(axis) > Abs(dpad) ) { if ( Abs(axis) > 35.0f ) { - return (axis > 0.f ? axis - 35.f : axis + 35.f) * 1.3763441f; + return (axis > 0.f ? axis - 35.f : axis + 35.f) * (128.f / (128 - 35)); } else { return 0; } @@ -3573,4 +3573,4 @@ void CPad::FixPadsAfterSave(void) bObsoleteControllerMessage = false; GetPad(0)->Phase = 0; } -} \ No newline at end of file +} -- cgit v1.2.3