mirror of
				https://github.com/halpz/re3.git
				synced 2025-11-04 15:35:08 +00:00 
			
		
		
		
	fixes from master, menu helper text
This commit is contained in:
		
							parent
							
								
									2c50cf8ac6
								
							
						
					
					
						commit
						ceb1defc4e
					
				| 
						 | 
				
			
			@ -400,7 +400,7 @@ void CGarage::Update()
 | 
			
		|||
					FindPlayerPed()->m_pWanted->Suspend();
 | 
			
		||||
				}
 | 
			
		||||
				CPad::GetPad(0)->SetEnablePlayerControls(PLAYERCONTROL_GARAGE);
 | 
			
		||||
				FindPlayerPed()->m_pWanted->m_bIgnoredByCops = true;
 | 
			
		||||
				FindPlayerPed()->m_pWanted->m_bIgnoredByCops = false;
 | 
			
		||||
#ifdef FIX_BUGS
 | 
			
		||||
				bool bChangedColour = false;
 | 
			
		||||
#else
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,6 +38,9 @@
 | 
			
		|||
#include "Messages.h"
 | 
			
		||||
#include "FileLoader.h"
 | 
			
		||||
 | 
			
		||||
// TODO(Miami): Remove that!! That was my map implementation for III, instead use MAP_ENHACEMENTS on some places
 | 
			
		||||
#define CUSTOM_MAP
 | 
			
		||||
 | 
			
		||||
// TODO(Miami): This is -3 on VC but still -1 on AudioManager?!? What the hell?
 | 
			
		||||
#define INVALID_AUDIO_PROVIDER -1
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -52,7 +55,6 @@ CRGBA HEADER_COLOR(255, 150, 255, 255);
 | 
			
		|||
CRGBA DARKMENUOPTION_COLOR(195, 90, 165, 255);
 | 
			
		||||
CRGBA SLIDERON_COLOR(97, 194, 247, 255);
 | 
			
		||||
CRGBA SLIDEROFF_COLOR(27, 89, 130, 255);
 | 
			
		||||
CRGBA MAPINFOBOX_COLOR(255, 150, 225, 150);
 | 
			
		||||
 | 
			
		||||
#define TIDY_UP_PBP // ProcessButtonPresses
 | 
			
		||||
#define MAX_VISIBLE_LIST_ROW 30
 | 
			
		||||
| 
						 | 
				
			
			@ -117,9 +119,10 @@ MenuTrapezoid menuBg(CGeneral::GetRandomNumber() % 40 + 65, CGeneral::GetRandomN
 | 
			
		|||
 | 
			
		||||
MenuTrapezoid menuOptionHighlight(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
 | 
			
		||||
 | 
			
		||||
// TODO(Miami): TEMPORARY
 | 
			
		||||
#ifdef CUSTOM_MAP
 | 
			
		||||
bool bMapLoaded = false;
 | 
			
		||||
bool bMapMouseShownOnce = false;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef MASTER
 | 
			
		||||
bool CMenuManager::m_PrefsMarketing = false;
 | 
			
		||||
| 
						 | 
				
			
			@ -664,11 +667,25 @@ CMenuManager::CheckSliderMovement(int value)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
CMenuManager::DisplayHelperText()
 | 
			
		||||
CMenuManager::DisplayHelperText(char *text)
 | 
			
		||||
{
 | 
			
		||||
	if (m_nMenuFadeAlpha != 255)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	// there was a unused static bool
 | 
			
		||||
	static PauseModeTime LastFlash = 0;
 | 
			
		||||
	int32 alpha;
 | 
			
		||||
	int32 alpha = 255;
 | 
			
		||||
 | 
			
		||||
	CFont::SetRightJustifyOn();
 | 
			
		||||
	CFont::SetScale(SCREEN_SCALE_X(SMALLESTTEXT_X_SCALE), SCREEN_SCALE_Y(SMALLESTTEXT_Y_SCALE));
 | 
			
		||||
	CFont::SetFontStyle(FONT_LOCALE(FONT_STANDARD));
 | 
			
		||||
	CFont::SetDropShadowPosition(0);
 | 
			
		||||
 | 
			
		||||
	if (text) {
 | 
			
		||||
		CFont::SetColor(CRGBA(255, 255, 255, 255));
 | 
			
		||||
		CFont::PrintString(SCREEN_STRETCH_FROM_RIGHT(10.f), SCREEN_SCALE_FROM_BOTTOM(18.f), TheText.Get(text));
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (m_nHelperTextMsgId != 0 && m_nHelperTextMsgId != 1) {
 | 
			
		||||
		if (CTimer::GetTimeInMillisecondsPauseMode() - LastFlash > 10) {
 | 
			
		||||
| 
						 | 
				
			
			@ -682,41 +699,67 @@ CMenuManager::DisplayHelperText()
 | 
			
		|||
		alpha = m_nHelperTextAlpha > 255 ? 255 : m_nHelperTextAlpha;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	CFont::SetCentreOn();
 | 
			
		||||
	CFont::SetScale(SCREEN_SCALE_X(SMALLESTTEXT_X_SCALE), SCREEN_SCALE_Y(SMALLESTTEXT_Y_SCALE));
 | 
			
		||||
	CFont::SetFontStyle(FONT_LOCALE(FONT_HEADING));
 | 
			
		||||
 | 
			
		||||
	CFont::SetColor(CRGBA(255, 255, 255, alpha));
 | 
			
		||||
	// TODO: name this cases?
 | 
			
		||||
	switch (m_nHelperTextMsgId) {
 | 
			
		||||
		case 0:
 | 
			
		||||
		{
 | 
			
		||||
			int action = aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action;
 | 
			
		||||
			if (action != MENUACTION_CHANGEMENU && action != MENUACTION_KEYBOARDCTRLS && action != MENUACTION_RESTOREDEF) {
 | 
			
		||||
				CFont::SetColor(CRGBA(255, 255, 255, 255));
 | 
			
		||||
				CFont::PrintString(MENU_X_LEFT_ALIGNED(320.0f), SCREEN_SCALE_FROM_BOTTOM(120.0f), TheText.Get("FET_MIG"));
 | 
			
		||||
			}
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
		case 1:
 | 
			
		||||
			CFont::SetColor(CRGBA(255, 255, 255, 255));
 | 
			
		||||
			CFont::PrintString(MENU_X_LEFT_ALIGNED(320.0f), SCREEN_SCALE_FROM_BOTTOM(120.0f), TheText.Get("FET_APP"));
 | 
			
		||||
			CFont::PrintString(SCREEN_STRETCH_FROM_RIGHT(10.f), SCREEN_SCALE_FROM_BOTTOM(18.f), TheText.Get("FET_APP"));
 | 
			
		||||
			break;
 | 
			
		||||
		case 2:
 | 
			
		||||
			CFont::SetColor(CRGBA(255, 255, 255, alpha));
 | 
			
		||||
			CFont::PrintString(MENU_X_LEFT_ALIGNED(320.0f), SCREEN_SCALE_FROM_BOTTOM(120.0f), TheText.Get("FET_HRD"));
 | 
			
		||||
			CFont::PrintString(SCREEN_STRETCH_FROM_RIGHT(10.f), SCREEN_SCALE_FROM_BOTTOM(18.f), TheText.Get("FET_HRD"));
 | 
			
		||||
			break;
 | 
			
		||||
		case 3:
 | 
			
		||||
			CFont::SetColor(CRGBA(255, 255, 255, alpha));
 | 
			
		||||
			CFont::PrintString(MENU_X_LEFT_ALIGNED(320.0f), SCREEN_SCALE_FROM_BOTTOM(120.0f), TheText.Get("FET_RSO"));
 | 
			
		||||
			CFont::PrintString(SCREEN_STRETCH_FROM_RIGHT(10.f), SCREEN_SCALE_FROM_BOTTOM(18.f), TheText.Get("FET_RSO"));
 | 
			
		||||
			break;
 | 
			
		||||
		case 4:
 | 
			
		||||
			CFont::SetColor(CRGBA(255, 255, 255, alpha));
 | 
			
		||||
			CFont::PrintString(MENU_X_LEFT_ALIGNED(320.0f), SCREEN_SCALE_FROM_BOTTOM(120.0f), TheText.Get("FET_RSC"));
 | 
			
		||||
			CFont::PrintString(SCREEN_STRETCH_FROM_RIGHT(10.f), SCREEN_SCALE_FROM_BOTTOM(18.f), TheText.Get("FET_STS"));
 | 
			
		||||
			break;
 | 
			
		||||
		case 5:
 | 
			
		||||
			CFont::PrintString(SCREEN_STRETCH_FROM_RIGHT(10.f), SCREEN_SCALE_FROM_BOTTOM(18.f), TheText.Get("FET_RSC"));
 | 
			
		||||
			break;
 | 
			
		||||
		default:
 | 
			
		||||
			if (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action == MENUACTION_NO)
 | 
			
		||||
				return;
 | 
			
		||||
 | 
			
		||||
			if (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action == MENUACTION_MUSICVOLUME ||
 | 
			
		||||
				aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action == MENUACTION_SFXVOLUME) {
 | 
			
		||||
 | 
			
		||||
				CFont::PrintString(SCREEN_STRETCH_FROM_RIGHT(10.f), SCREEN_SCALE_FROM_BOTTOM(18.f),
 | 
			
		||||
					m_nPrefsAudio3DProviderIndex == INVALID_AUDIO_PROVIDER ? TheText.Get("FEH_NA") : TheText.Get("FET_MIG"));
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action == MENUACTION_KEYBOARDCTRLS)
 | 
			
		||||
				return;
 | 
			
		||||
 | 
			
		||||
			if (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action == MENUACTION_SCREENRES) {
 | 
			
		||||
				CFont::PrintString(SCREEN_STRETCH_FROM_RIGHT(10.f), SCREEN_SCALE_FROM_BOTTOM(18.f),
 | 
			
		||||
					m_bGameNotLoaded ? TheText.Get("FET_MIG") : TheText.Get("FEH_NA"));
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action == MENUACTION_AUDIOHW ||
 | 
			
		||||
				aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action == MENUACTION_SPEAKERCONF) {
 | 
			
		||||
 | 
			
		||||
				CFont::PrintString(SCREEN_STRETCH_FROM_RIGHT(10.f), SCREEN_SCALE_FROM_BOTTOM(18.f),
 | 
			
		||||
					m_nPrefsAudio3DProviderIndex == INVALID_AUDIO_PROVIDER ? TheText.Get("FEH_NA") : TheText.Get("FET_MIG"));
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action == MENUACTION_RESTOREDEF)
 | 
			
		||||
				return;
 | 
			
		||||
 | 
			
		||||
			if (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action == MENUACTION_MP3VOLUMEBOOST) {
 | 
			
		||||
				CFont::PrintString(SCREEN_STRETCH_FROM_RIGHT(10.f), SCREEN_SCALE_FROM_BOTTOM(18.f),
 | 
			
		||||
					m_nPrefsAudio3DProviderIndex == INVALID_AUDIO_PROVIDER ? TheText.Get("FEH_NA") : TheText.Get("FET_MIG"));
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			CFont::PrintString(SCREEN_STRETCH_FROM_RIGHT(10.f), SCREEN_SCALE_FROM_BOTTOM(18.f),
 | 
			
		||||
				m_nCurrScreen != MENUPAGE_STATS ? TheText.Get("FET_MIG") : TheText.Get("FEH_SSA"));
 | 
			
		||||
 | 
			
		||||
			break;
 | 
			
		||||
	}
 | 
			
		||||
	CFont::SetRightJustifyOff();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// --MIAMI: Done
 | 
			
		||||
| 
						 | 
				
			
			@ -880,28 +923,6 @@ CMenuManager::DrawStandardMenus(bool drawCurrScreen)
 | 
			
		|||
	wchar unicodeTemp[64];
 | 
			
		||||
	char asciiTemp[32];
 | 
			
		||||
 | 
			
		||||
#ifdef MENU_MAP
 | 
			
		||||
	if (m_nCurrScreen == MENUPAGE_MAP) {
 | 
			
		||||
		// Back button
 | 
			
		||||
		wchar *backTx = TheText.Get("FEDS_TB");
 | 
			
		||||
		CFont::SetDropShadowPosition(1);
 | 
			
		||||
		CFont::SetDropColor(CRGBA(0, 0, 0, 255));
 | 
			
		||||
		CFont::SetScale(MENU_X(BIGTEXT_X_SCALE), MENU_Y(BIGTEXT_Y_SCALE));
 | 
			
		||||
		CFont::SetRightJustifyOff();
 | 
			
		||||
		CFont::SetCentreOn();
 | 
			
		||||
		CFont::PrintString(MENU_X(60.0f), SCREEN_SCALE_FROM_BOTTOM(120.0f), backTx);
 | 
			
		||||
		CFont::SetDropShadowPosition(0);
 | 
			
		||||
		if (!CheckHover(MENU_X(30.0f), MENU_X(30.0f) + CFont::GetStringWidth(backTx), SCREEN_SCALE_FROM_BOTTOM(125.0f), SCREEN_SCALE_FROM_BOTTOM(105.0f))) {
 | 
			
		||||
			m_nHoverOption = HOVEROPTION_NOT_HOVERING;
 | 
			
		||||
			m_nCurrOption = m_nPrevOption = 0;
 | 
			
		||||
		} else {
 | 
			
		||||
			m_nHoverOption = HOVEROPTION_RANDOM_ITEM;
 | 
			
		||||
			m_nCurrOption = m_nPrevOption = 1;
 | 
			
		||||
		}
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	bool weHaveLabel = aScreens[m_nCurrScreen].m_aEntries[0].m_Action == MENUACTION_LABEL;
 | 
			
		||||
	uint8 section = 0; // 0: highlight trapezoid  1: texts
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1356,8 +1377,6 @@ CMenuManager::DrawStandardMenus(bool drawCurrScreen)
 | 
			
		|||
		section++;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// TODO(Miami)
 | 
			
		||||
	/*
 | 
			
		||||
	switch (m_nCurrScreen) {
 | 
			
		||||
		case MENUPAGE_STATS:
 | 
			
		||||
		case MENUPAGE_CONTROLLER_PC:
 | 
			
		||||
| 
						 | 
				
			
			@ -1371,7 +1390,6 @@ CMenuManager::DrawStandardMenus(bool drawCurrScreen)
 | 
			
		|||
				DisplayHelperText("FEA_NAH");
 | 
			
		||||
			break;
 | 
			
		||||
	}
 | 
			
		||||
	*/
 | 
			
		||||
 | 
			
		||||
	if (m_nCurrScreen == MENUPAGE_DELETING_IN_PROGRESS) {
 | 
			
		||||
		SmallMessageScreen("FEDL_WR");
 | 
			
		||||
| 
						 | 
				
			
			@ -4344,8 +4362,7 @@ CMenuManager::ProcessButtonPresses(void)
 | 
			
		|||
				case MENUACTION_YES:
 | 
			
		||||
				case MENUACTION_NO:
 | 
			
		||||
				{
 | 
			
		||||
					// TODO(Miami): TEMP
 | 
			
		||||
#ifdef MENU_MAP
 | 
			
		||||
#ifdef CUSTOM_MAP
 | 
			
		||||
					if (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_TargetMenu == MENUPAGE_MAP) {
 | 
			
		||||
						bMapLoaded = false;
 | 
			
		||||
					}
 | 
			
		||||
| 
						 | 
				
			
			@ -4411,12 +4428,11 @@ CMenuManager::ProcessButtonPresses(void)
 | 
			
		|||
					if (m_nDisplayVideoMode != m_nPrefsVideoMode) {
 | 
			
		||||
						m_nPrefsVideoMode = m_nDisplayVideoMode;
 | 
			
		||||
						_psSelectScreenVM(m_nPrefsVideoMode);
 | 
			
		||||
						SetHelperText(0); // TODO(Miami): Remove that
 | 
			
		||||
						DMAudio.ChangeMusicMode(MUSICMODE_FRONTEND);
 | 
			
		||||
						DMAudio.Service();
 | 
			
		||||
						CentreMousePointer();
 | 
			
		||||
						m_bShowMouse = true;
 | 
			
		||||
						// m_nCurrOption = 5; // Why?
 | 
			
		||||
						// m_nCurrOption = 5; // Why? TODO(Miami)
 | 
			
		||||
						m_nOptionHighlightTransitionBlend = 0;
 | 
			
		||||
						SaveSettings();
 | 
			
		||||
					}
 | 
			
		||||
| 
						 | 
				
			
			@ -4426,7 +4442,6 @@ CMenuManager::ProcessButtonPresses(void)
 | 
			
		|||
					if (m_nSelectedScreenMode != m_nPrefsWindowed) {
 | 
			
		||||
						m_nPrefsWindowed = m_nSelectedScreenMode;
 | 
			
		||||
						_psSelectScreenVM(m_nPrefsVideoMode); // apply same resolution
 | 
			
		||||
						SetHelperText(0);
 | 
			
		||||
						SaveSettings();
 | 
			
		||||
					}
 | 
			
		||||
					break;
 | 
			
		||||
| 
						 | 
				
			
			@ -4435,13 +4450,11 @@ CMenuManager::ProcessButtonPresses(void)
 | 
			
		|||
				{
 | 
			
		||||
					int selectedProvider = m_nPrefsAudio3DProviderIndex;
 | 
			
		||||
					if (selectedProvider != INVALID_AUDIO_PROVIDER) {
 | 
			
		||||
						if (selectedProvider == -1)
 | 
			
		||||
							selectedProvider = m_nPrefsAudio3DProviderIndex = DMAudio.AutoDetect3DProviders();
 | 
			
		||||
						m_nPrefsAudio3DProviderIndex = DMAudio.SetCurrent3DProvider(m_nPrefsAudio3DProviderIndex);
 | 
			
		||||
						if (selectedProvider == m_nPrefsAudio3DProviderIndex) {
 | 
			
		||||
							DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0);
 | 
			
		||||
							SetHelperText(0);
 | 
			
		||||
						} else {
 | 
			
		||||
							DMAudio.PlayFrontEndSound(SOUND_FRONTEND_FAIL, 0);
 | 
			
		||||
							SetHelperText(4);
 | 
			
		||||
						if (selectedProvider != m_nPrefsAudio3DProviderIndex) {
 | 
			
		||||
							SetHelperText(5);
 | 
			
		||||
						}
 | 
			
		||||
						SaveSettings();
 | 
			
		||||
					}
 | 
			
		||||
| 
						 | 
				
			
			@ -5163,7 +5176,7 @@ CMenuManager::DrawQuitGameScreen(void)
 | 
			
		|||
	m_AllowNavigation = false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef MENU_MAP
 | 
			
		||||
#ifdef CUSTOM_MAP
 | 
			
		||||
 | 
			
		||||
#define ZOOM(x, y, in) \
 | 
			
		||||
	do { \
 | 
			
		||||
| 
						 | 
				
			
			@ -5177,15 +5190,17 @@ CMenuManager::DrawQuitGameScreen(void)
 | 
			
		|||
			break; \
 | 
			
		||||
		\
 | 
			
		||||
		m_fMapSize *= z2; \
 | 
			
		||||
	} while(0) \
 | 
			
		||||
	} while(0)
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
CMenuManager::PrintMap(void)
 | 
			
		||||
{
 | 
			
		||||
	CFont::SetJustifyOn();
 | 
			
		||||
	m_bMenuMapActive = true;
 | 
			
		||||
	CRadar::InitFrontEndMap();
 | 
			
		||||
 | 
			
		||||
#ifdef CUSTOM_MAP
 | 
			
		||||
	// Just entered to map
 | 
			
		||||
	if (!bMapLoaded) {
 | 
			
		||||
		m_fMapSize = SCREEN_HEIGHT * 2.0f;
 | 
			
		||||
| 
						 | 
				
			
			@ -5207,15 +5222,11 @@ CMenuManager::PrintMap(void)
 | 
			
		|||
			return;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	// Because m_fMapSize is half of the map length, and map consists of 3x3 tiles.
 | 
			
		||||
	float halfTile = m_fMapSize / 3.0f;
 | 
			
		||||
 | 
			
		||||
	// Darken background a bit
 | 
			
		||||
	CSprite2d::DrawRect(CRect(0, 0,
 | 
			
		||||
		SCREEN_WIDTH, SCREEN_HEIGHT),
 | 
			
		||||
		CRGBA(0, 0, 0, FadeIn(128)));
 | 
			
		||||
 | 
			
		||||
	RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERLINEAR);
 | 
			
		||||
 | 
			
		||||
	if (SCREEN_WIDTH >= m_fMapCenterX - m_fMapSize || SCREEN_HEIGHT >= m_fMapCenterY - m_fMapSize) {
 | 
			
		||||
| 
						 | 
				
			
			@ -5265,6 +5276,7 @@ CMenuManager::PrintMap(void)
 | 
			
		|||
 | 
			
		||||
	CRadar::DrawBlips();
 | 
			
		||||
 | 
			
		||||
#ifdef CUSTOM_MAP
 | 
			
		||||
	CVector2D mapPoint;
 | 
			
		||||
	mapPoint.x = m_nMousePosX;
 | 
			
		||||
	mapPoint.y = m_nMousePosY;
 | 
			
		||||
| 
						 | 
				
			
			@ -5338,56 +5350,15 @@ CMenuManager::PrintMap(void)
 | 
			
		|||
	
 | 
			
		||||
	if (m_fMapCenterY - m_fMapSize > SCREEN_HEIGHT / 2)
 | 
			
		||||
		m_fMapCenterY = SCREEN_HEIGHT / 2 + m_fMapSize;
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
	m_bMenuMapActive = false;
 | 
			
		||||
 | 
			
		||||
	// CFont::SetWrapx(MENU_X_RIGHT_ALIGNED(5.0f)); // From VC
 | 
			
		||||
	// CFont::SetRightJustifyWrap(10.0f);
 | 
			
		||||
 | 
			
		||||
	CSprite2d::DrawRect(CRect(MENU_X(14.0f), SCREEN_STRETCH_FROM_BOTTOM(95.0f),
 | 
			
		||||
		SCREEN_STRETCH_FROM_RIGHT(11.0f), SCREEN_STRETCH_FROM_BOTTOM(59.0f)),
 | 
			
		||||
		CRGBA(MAPINFOBOX_COLOR.r, MAPINFOBOX_COLOR.g, MAPINFOBOX_COLOR.b, MAPINFOBOX_COLOR.a));
 | 
			
		||||
 | 
			
		||||
	CFont::SetScale(MENU_X(0.4f), MENU_Y(0.7f));
 | 
			
		||||
	CFont::SetFontStyle(FONT_LOCALE(FONT_STANDARD));
 | 
			
		||||
	CFont::SetColor(CRGBA(0, 0, 0, FadeIn(255)));
 | 
			
		||||
 | 
			
		||||
	float nextX = MENU_X(30.0f), nextY = 95.0f;
 | 
			
		||||
	wchar *text;
 | 
			
		||||
#ifdef MORE_LANGUAGES
 | 
			
		||||
#define TEXT_PIECE(key,extraSpace) \
 | 
			
		||||
	text = TheText.Get(key);\
 | 
			
		||||
	CFont::PrintString(nextX, SCREEN_SCALE_FROM_BOTTOM(nextY), text);\
 | 
			
		||||
	if (CFont::IsJapanese())\
 | 
			
		||||
		nextX += CFont::GetStringWidth_Jap(text) + MENU_X(extraSpace);\
 | 
			
		||||
	else\
 | 
			
		||||
		nextX += CFont::GetStringWidth(text, true) + MENU_X(extraSpace);
 | 
			
		||||
#else
 | 
			
		||||
#define TEXT_PIECE(key,extraSpace) \
 | 
			
		||||
	text = TheText.Get(key); CFont::PrintString(nextX, SCREEN_SCALE_FROM_BOTTOM(nextY), text); nextX += CFont::GetStringWidth(text, true) + MENU_X(extraSpace);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	TEXT_PIECE("FEC_MWF", 3.0f);
 | 
			
		||||
	TEXT_PIECE("FEC_PGU", 1.0f);
 | 
			
		||||
	TEXT_PIECE("FEC_IBT", 1.0f);
 | 
			
		||||
	TEXT_PIECE("FEC_ZIN", 20.0f);
 | 
			
		||||
	TEXT_PIECE("FEC_MWB", 3.0f);
 | 
			
		||||
	TEXT_PIECE("FEC_PGD", 1.0f);
 | 
			
		||||
	TEXT_PIECE("FEC_IBT", 1.0f);
 | 
			
		||||
	CFont::PrintString(nextX, SCREEN_SCALE_FROM_BOTTOM(nextY), TheText.Get("FEC_ZOT")); nextX = MENU_X(30.0f); nextY -= 11.0f;
 | 
			
		||||
	TEXT_PIECE("FEC_UPA", 2.0f);
 | 
			
		||||
	TEXT_PIECE("FEC_DWA", 2.0f);
 | 
			
		||||
	TEXT_PIECE("FEC_LFA", 2.0f);
 | 
			
		||||
	TEXT_PIECE("FEC_RFA", 2.0f);
 | 
			
		||||
	TEXT_PIECE("FEC_MSL", 1.0f);
 | 
			
		||||
	TEXT_PIECE("FEC_IBT", 1.0f);
 | 
			
		||||
	CFont::PrintString(nextX, SCREEN_SCALE_FROM_BOTTOM(nextY), TheText.Get("FEC_MOV")); nextX = MENU_X(30.0f); nextY -= 11.0f;
 | 
			
		||||
	TEXT_PIECE("FEC_MSR", 2.0f);
 | 
			
		||||
	TEXT_PIECE("FEC_IBT", 1.0f);
 | 
			
		||||
	CFont::PrintString(nextX, SCREEN_SCALE_FROM_BOTTOM(nextY), TheText.Get("FEC_TAR"));
 | 
			
		||||
#undef TEXT_PIECE
 | 
			
		||||
	CFont::SetWrapx(MENU_X_RIGHT_ALIGNED(5.0f));
 | 
			
		||||
	CFont::SetRightJustifyWrap(SCREEN_SCALE_X(10.0f));
 | 
			
		||||
	DisplayHelperText("FEH_MPH");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef CUSTOM_MAP
 | 
			
		||||
#undef ZOOM
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -613,7 +613,7 @@ public:
 | 
			
		|||
	void CheckCodesForControls(int);
 | 
			
		||||
	bool CheckHover(int x1, int x2, int y1, int y2);
 | 
			
		||||
	void CheckSliderMovement(int);
 | 
			
		||||
	void DisplayHelperText();
 | 
			
		||||
	void DisplayHelperText(char*);
 | 
			
		||||
	int DisplaySlider(float, float, float, float, float, float, float);
 | 
			
		||||
	void DoSettingsBeforeStartingAGame();
 | 
			
		||||
	void DrawStandardMenus(bool);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -79,11 +79,9 @@ CMenuScreen aScreens[] = {
 | 
			
		|||
		MENUACTION_GOBACK,		"FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE, 0, 0, MENUALIGN_CENTER,
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	// TODO(Miami): This is still my implementation
 | 
			
		||||
	// MENUPAGE_MAP = 6
 | 
			
		||||
	{ "FEH_MAP", MENUPAGE_NONE, 2,
 | 
			
		||||
		 MENUACTION_UNK110,	"", SAVESLOT_NONE, 0,  0, 0, 0, // to prevent cross/enter to go back
 | 
			
		||||
		 MENUACTION_GOBACK,	"FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE, 0, 0, 0,
 | 
			
		||||
		 MENUACTION_GOBACK,	"FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE, 70, 380, MENUALIGN_CENTER,
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	// MENUPAGE_NEW_GAME_RELOAD = 7
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -121,11 +121,11 @@ static_assert(RADAR_TILE_SIZE == (RADAR_SIZE_Y / RADAR_NUM_TILES), "CRadar: not
 | 
			
		|||
#define RADAR_MIN_SPEED (0.3f)
 | 
			
		||||
#define RADAR_MAX_SPEED (0.9f)
 | 
			
		||||
 | 
			
		||||
#ifdef MENU_MAP
 | 
			
		||||
CRGBA CRadar::ArrowBlipColour1;
 | 
			
		||||
CRGBA CRadar::ArrowBlipColour2;
 | 
			
		||||
uint16 CRadar::MapLegendCounter;
 | 
			
		||||
int16 CRadar::MapLegendList[NUM_MAP_LEGENDS];
 | 
			
		||||
#ifdef MAP_ENHANCEMENTS
 | 
			
		||||
int CRadar::TargetMarkerId = -1;
 | 
			
		||||
CVector CRadar::TargetMarkerPos;
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -263,10 +263,9 @@ int LineRadarBoxCollision(CVector2D &out, const CVector2D &p1, const CVector2D &
 | 
			
		|||
 | 
			
		||||
uint8 CRadar::CalculateBlipAlpha(float dist)
 | 
			
		||||
{
 | 
			
		||||
#ifdef MENU_MAP
 | 
			
		||||
	if (FrontEndMenuManager.m_bMenuMapActive)
 | 
			
		||||
		return 255;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	if (dist <= 1.0f)
 | 
			
		||||
		return 255;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -486,9 +485,7 @@ void CRadar::DrawBlips()
 | 
			
		|||
		CVector2D in = CVector2D(0.0f, 0.0f);
 | 
			
		||||
		TransformRadarPointToScreenSpace(out, in);
 | 
			
		||||
 | 
			
		||||
#ifdef MENU_MAP
 | 
			
		||||
		if (!FrontEndMenuManager.m_bMenuMapActive) {
 | 
			
		||||
#endif
 | 
			
		||||
			float angle;
 | 
			
		||||
			if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOPDOWN)
 | 
			
		||||
				angle = PI + FindPlayerHeading();
 | 
			
		||||
| 
						 | 
				
			
			@ -508,9 +505,7 @@ void CRadar::DrawBlips()
 | 
			
		|||
			LimitRadarPoint(in);
 | 
			
		||||
			TransformRadarPointToScreenSpace(out, in);
 | 
			
		||||
			DrawRadarSprite(RADAR_SPRITE_NORTH, out.x, out.y, 255);
 | 
			
		||||
#ifdef MENU_MAP
 | 
			
		||||
		}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
		CEntity *blipEntity = nil;
 | 
			
		||||
		for(int blipId = 0; blipId < NUMRADARBLIPS; blipId++) {
 | 
			
		||||
| 
						 | 
				
			
			@ -743,14 +738,12 @@ void CRadar::DrawBlips()
 | 
			
		|||
					break;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
#ifdef MENU_MAP
 | 
			
		||||
		if (FrontEndMenuManager.m_bMenuMapActive) {
 | 
			
		||||
			CVector2D in, out;
 | 
			
		||||
			TransformRealWorldPointToRadarSpace(in, FindPlayerCentreOfWorld_NoSniperShift());
 | 
			
		||||
			TransformRadarPointToScreenSpace(out, in);
 | 
			
		||||
			DrawYouAreHereSprite(out.x, out.y);
 | 
			
		||||
		}
 | 
			
		||||
#endif
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -898,7 +891,7 @@ void CRadar::DrawRadarSection(int32 x, int32 y)
 | 
			
		|||
void CRadar::DrawRadarSprite(uint16 sprite, float x, float y, uint8 alpha)
 | 
			
		||||
{
 | 
			
		||||
	RadarSprites[sprite]->Draw(CRect(x - SCREEN_SCALE_X(8.0f), y - SCREEN_SCALE_Y(8.0f), x + SCREEN_SCALE_X(8.0f), y + SCREEN_SCALE_Y(8.0f)), CRGBA(255, 255, 255, alpha));
 | 
			
		||||
#ifdef MENU_MAP
 | 
			
		||||
 | 
			
		||||
	if (FrontEndMenuManager.m_bMenuMapActive) {
 | 
			
		||||
		bool alreadyThere = false;
 | 
			
		||||
		for (int i = 0; i < NUM_MAP_LEGENDS; i++) {
 | 
			
		||||
| 
						 | 
				
			
			@ -910,7 +903,6 @@ void CRadar::DrawRadarSprite(uint16 sprite, float x, float y, uint8 alpha)
 | 
			
		|||
			MapLegendCounter++;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void CRadar::DrawRotatingRadarSprite(CSprite2d* sprite, float x, float y, float angle, int32 alpha)
 | 
			
		||||
| 
						 | 
				
			
			@ -1046,10 +1038,10 @@ float CRadar::LimitRadarPoint(CVector2D &point)
 | 
			
		|||
	float dist, invdist;
 | 
			
		||||
 | 
			
		||||
	dist = point.Magnitude();
 | 
			
		||||
#ifdef MENU_MAP
 | 
			
		||||
 | 
			
		||||
	if (FrontEndMenuManager.m_bMenuMapActive)
 | 
			
		||||
		return dist;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	if (dist > 1.0f) {
 | 
			
		||||
		invdist = 1.0f / dist;
 | 
			
		||||
		point.x *= invdist;
 | 
			
		||||
| 
						 | 
				
			
			@ -1130,7 +1122,7 @@ void CRadar::SaveAllRadarBlips(uint8 *buf, uint32 *size)
 | 
			
		|||
INITSAVEBUF
 | 
			
		||||
	WriteSaveHeader(buf, 'R', 'D', 'R', '\0', *size - SAVE_HEADER_SIZE);
 | 
			
		||||
 | 
			
		||||
#ifdef MENU_MAP
 | 
			
		||||
#ifdef MAP_ENHANCEMENTS
 | 
			
		||||
	if (TargetMarkerId != -1) {
 | 
			
		||||
		ClearBlip(TargetMarkerId);
 | 
			
		||||
		TargetMarkerId = -1;
 | 
			
		||||
| 
						 | 
				
			
			@ -1276,7 +1268,8 @@ void CRadar::ShowRadarTraceWithHeight(float x, float y, uint32 size, uint8 red,
 | 
			
		|||
		CSprite2d::DrawRect(CRect(x - SCREEN_SCALE_X(size), y - SCREEN_SCALE_Y(size), SCREEN_SCALE_X(size) + x, SCREEN_SCALE_Y(size) + y), CRGBA(red, green, blue, alpha));
 | 
			
		||||
		break;
 | 
			
		||||
	}
 | 
			
		||||
#ifdef MENU_MAP
 | 
			
		||||
 | 
			
		||||
	// TODO(Miami): Map
 | 
			
		||||
	// VC uses -1 for coords and -2 for entities but meh, I don't want to edit DrawBlips
 | 
			
		||||
	if (FrontEndMenuManager.m_bMenuMapActive) {
 | 
			
		||||
		bool alreadyThere = false;
 | 
			
		||||
| 
						 | 
				
			
			@ -1290,7 +1283,6 @@ void CRadar::ShowRadarTraceWithHeight(float x, float y, uint32 size, uint8 red,
 | 
			
		|||
			ArrowBlipColour1 = CRGBA(red, green, blue, alpha);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void CRadar::Shutdown()
 | 
			
		||||
| 
						 | 
				
			
			@ -1402,13 +1394,10 @@ void CRadar::TransformRadarPointToRealWorldSpace(CVector2D &out, const CVector2D
 | 
			
		|||
// Radar space goes from -1.0 to 1.0 in x and y, top right is (1.0, 1.0)
 | 
			
		||||
void CRadar::TransformRadarPointToScreenSpace(CVector2D &out, const CVector2D &in)
 | 
			
		||||
{
 | 
			
		||||
#ifdef MENU_MAP
 | 
			
		||||
	if (FrontEndMenuManager.m_bMenuMapActive) {
 | 
			
		||||
		out.x = (FrontEndMenuManager.m_fMapCenterX - FrontEndMenuManager.m_fMapSize) + (MENU_MAP_LENGTH / 2 + MENU_MAP_LEFT_OFFSET + in.x) * FrontEndMenuManager.m_fMapSize * MENU_MAP_WIDTH_SCALE * 2.0f / MENU_MAP_LENGTH;
 | 
			
		||||
		out.y = (FrontEndMenuManager.m_fMapCenterY - FrontEndMenuManager.m_fMapSize) + (MENU_MAP_LENGTH / 2 - MENU_MAP_TOP_OFFSET - in.y) * FrontEndMenuManager.m_fMapSize * MENU_MAP_HEIGHT_SCALE * 2.0f / MENU_MAP_LENGTH;
 | 
			
		||||
	} else
 | 
			
		||||
#endif
 | 
			
		||||
	{
 | 
			
		||||
	} else {
 | 
			
		||||
#ifdef FIX_BUGS
 | 
			
		||||
		out.x = (in.x + 1.0f) * 0.5f * SCREEN_SCALE_X(RADAR_WIDTH) + SCREEN_SCALE_X(RADAR_LEFT);
 | 
			
		||||
#else
 | 
			
		||||
| 
						 | 
				
			
			@ -1462,10 +1451,7 @@ void
 | 
			
		|||
CRadar::CalculateCachedSinCos()
 | 
			
		||||
{
 | 
			
		||||
	if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOPDOWN || TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOP_DOWN_PED
 | 
			
		||||
#ifdef MENU_MAP
 | 
			
		||||
		|| FrontEndMenuManager.m_bMenuMapActive
 | 
			
		||||
#endif
 | 
			
		||||
		) {
 | 
			
		||||
		|| FrontEndMenuManager.m_bMenuMapActive ) {
 | 
			
		||||
		cachedSin = 0.0f;
 | 
			
		||||
		cachedCos = 1.0f;
 | 
			
		||||
	} else if (TheCamera.GetLookDirection() == LOOKING_FORWARD) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1486,7 +1472,6 @@ CRadar::CalculateCachedSinCos()
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef MENU_MAP
 | 
			
		||||
void
 | 
			
		||||
CRadar::InitFrontEndMap()
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -1530,6 +1515,7 @@ CRadar::DrawYouAreHereSprite(float x, float y)
 | 
			
		|||
	MapLegendList[MapLegendCounter++] = RADAR_SPRITE_CENTRE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef MAP_ENHANCEMENTS
 | 
			
		||||
void
 | 
			
		||||
CRadar::ToggleTargetMarker(float x, float y)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,6 +21,8 @@
 | 
			
		|||
#define COORDBLIP_MARKER_COLOR_B 242
 | 
			
		||||
#define COORDBLIP_MARKER_COLOR_A 255
 | 
			
		||||
 | 
			
		||||
#define NUM_MAP_LEGENDS 75
 | 
			
		||||
 | 
			
		||||
#define MENU_MAP_LENGTH_UNIT 1190.0f // in game unit
 | 
			
		||||
#define MENU_MAP_WIDTH_SCALE 1.112f // in game unit (originally 1.112494151260504f)
 | 
			
		||||
#define MENU_MAP_HEIGHT_SCALE 1.119f // in game unit (originally 1.118714268907563f)
 | 
			
		||||
| 
						 | 
				
			
			@ -48,10 +50,8 @@ enum eBlipDisplay
 | 
			
		|||
 | 
			
		||||
enum eRadarSprite
 | 
			
		||||
{
 | 
			
		||||
#ifdef MENU_MAP
 | 
			
		||||
	RADAR_SPRITE_ENTITY_BLIP = -2,
 | 
			
		||||
	RADAR_SPRITE_COORD_BLIP = -1,
 | 
			
		||||
#endif
 | 
			
		||||
	RADAR_SPRITE_NONE = 0,
 | 
			
		||||
	RADAR_SPRITE_CENTRE,
 | 
			
		||||
	RADAR_SPRITE_MAP_HERE,
 | 
			
		||||
| 
						 | 
				
			
			@ -173,17 +173,19 @@ public:
 | 
			
		|||
	static CSprite2d *RadarSprites[RADAR_SPRITE_COUNT];
 | 
			
		||||
	static float cachedCos;
 | 
			
		||||
	static float cachedSin;
 | 
			
		||||
#ifdef MENU_MAP
 | 
			
		||||
#define NUM_MAP_LEGENDS 75
 | 
			
		||||
	static CRGBA ArrowBlipColour1;
 | 
			
		||||
	static CRGBA ArrowBlipColour2;
 | 
			
		||||
	static int16 MapLegendList[NUM_MAP_LEGENDS];
 | 
			
		||||
	static uint16 MapLegendCounter;
 | 
			
		||||
 | 
			
		||||
#ifdef MAP_ENHANCEMENTS
 | 
			
		||||
	static int TargetMarkerId;
 | 
			
		||||
	static CVector TargetMarkerPos;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	static void InitFrontEndMap();
 | 
			
		||||
	static void DrawYouAreHereSprite(float, float);
 | 
			
		||||
#ifdef MAP_ENHANCEMENTS
 | 
			
		||||
	static void ToggleTargetMarker(float, float);
 | 
			
		||||
#endif
 | 
			
		||||
	static uint8 CalculateBlipAlpha(float dist);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -182,7 +182,7 @@ CWanted::RegisterCrime(eCrimeType type, const CVector &coors, uint32 id, bool po
 | 
			
		|||
void
 | 
			
		||||
CWanted::RegisterCrime_Immediately(eCrimeType type, const CVector &coors, uint32 id, bool policeDoesntCare)
 | 
			
		||||
{
 | 
			
		||||
#ifdef FIX_BUGS
 | 
			
		||||
#ifdef FIX_SIGNIFICANT_BUGS
 | 
			
		||||
	if(!AddCrimeToQ(type, id, coors, true, policeDoesntCare))
 | 
			
		||||
#else
 | 
			
		||||
	if(!AddCrimeToQ(type, id, coors, false, policeDoesntCare))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -242,7 +242,7 @@ enum Config {
 | 
			
		|||
//#	define PS2_MENU_USEALLPAGEICONS
 | 
			
		||||
#else
 | 
			
		||||
//#	define PS2_LIKE_MENU	// An effort to recreate PS2 menu, cycling through tabs, different bg etc.
 | 
			
		||||
#	define MENU_MAP			// VC-like menu map. Make sure you have new menu.txd
 | 
			
		||||
#	define MAP_ENHANCEMENTS			// Adding waypoint etc.
 | 
			
		||||
#	define SCROLLABLE_STATS_PAGE	// only draggable by mouse atm
 | 
			
		||||
#	define TRIANGLE_BACK_BUTTON
 | 
			
		||||
//#	define CIRCLE_BACK_BUTTON
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -77,7 +77,6 @@ mysrand(unsigned int seed)
 | 
			
		|||
 | 
			
		||||
void ReloadFrontendOptions(void)
 | 
			
		||||
{
 | 
			
		||||
	RemoveCustomFrontendOptions();
 | 
			
		||||
	CustomFrontendOptionsPopulate();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -139,6 +138,8 @@ void ToggleFreeCam(int8 action)
 | 
			
		|||
void
 | 
			
		||||
CustomFrontendOptionsPopulate(void)
 | 
			
		||||
{
 | 
			
		||||
	RemoveCustomFrontendOptions(); // if exist
 | 
			
		||||
 | 
			
		||||
#ifdef MORE_LANGUAGES
 | 
			
		||||
	FrontendOptionSetPosition(MENUPAGE_LANGUAGE_SETTINGS);
 | 
			
		||||
	FrontendOptionAddDynamic(TheText.Get("FEL_POL"), nil, LangPolSelect, nil);
 | 
			
		||||
| 
						 | 
				
			
			@ -152,11 +153,6 @@ CustomFrontendOptionsPopulate(void)
 | 
			
		|||
	FrontendOptionAddSelect(TheText.Get("SCRFOR"), screenModes, 2, (int8*)&FrontEndMenuManager.m_nPrefsWindowed, true, ScreenModeChange, nil);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef MENU_MAP
 | 
			
		||||
	FrontendOptionSetPosition(MENUPAGE_PAUSE_MENU, 2);
 | 
			
		||||
	FrontendOptionAddRedirect(TheText.Get("FEG_MAP"), MENUPAGE_MAP);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef FREE_CAM
 | 
			
		||||
	static const wchar *text = (wchar*)L"TOGGLE FREE CAM";
 | 
			
		||||
	FrontendOptionSetPosition(MENUPAGE_CONTROLLER_PC, 1);
 | 
			
		||||
| 
						 | 
				
			
			@ -252,7 +248,7 @@ FixCar(void)
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef MENU_MAP
 | 
			
		||||
#ifdef MAP_ENHANCEMENTS
 | 
			
		||||
static void
 | 
			
		||||
TeleportToWaypoint(void)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -499,7 +495,7 @@ DebugMenuPopulate(void)
 | 
			
		|||
 | 
			
		||||
		DebugMenuAddVarBool8("Debug", "pad 1 -> pad 2", &CPad::m_bMapPadOneToPadTwo, nil);
 | 
			
		||||
		DebugMenuAddVarBool8("Debug", "Edit on", &CSceneEdit::m_bEditOn, nil);
 | 
			
		||||
#ifdef MENU_MAP
 | 
			
		||||
#ifdef MAP_ENHANCEMENTS
 | 
			
		||||
		DebugMenuAddCmd("Debug", "Teleport to map waypoint", TeleportToWaypoint);
 | 
			
		||||
#endif
 | 
			
		||||
		DebugMenuAddCmd("Debug", "Switch car collision", SwitchCarCollision);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11356,19 +11356,34 @@ CPed::ProcessControl(void)
 | 
			
		|||
 | 
			
		||||
					int vehAnim = m_pVehicleAnim->animId;
 | 
			
		||||
 | 
			
		||||
					static bool cancelJack = false;
 | 
			
		||||
					int16 padWalkX = pad->GetPedWalkLeftRight();
 | 
			
		||||
					int16 padWalkY = pad->GetPedWalkUpDown();
 | 
			
		||||
					if (Abs(padWalkX) > 0.0f || Abs(padWalkY) > 0.0f) {
 | 
			
		||||
						if (vehAnim == ANIM_CAR_OPEN_LHS || vehAnim == ANIM_CAR_OPEN_RHS || vehAnim == ANIM_COACH_OPEN_L || vehAnim == ANIM_COACH_OPEN_R ||
 | 
			
		||||
							vehAnim == ANIM_VAN_OPEN_L || vehAnim == ANIM_VAN_OPEN) {
 | 
			
		||||
 | 
			
		||||
							if (!m_pMyVehicle->pDriver) {
 | 
			
		||||
								cancelJack = false;
 | 
			
		||||
								bCancelEnteringCar = true;
 | 
			
		||||
							} else
 | 
			
		||||
								cancelJack = true;
 | 
			
		||||
						} else if (vehAnim == ANIM_CAR_QJACK && m_pVehicleAnim->GetTimeLeft() > 0.75f) {
 | 
			
		||||
							cancelJack = true;
 | 
			
		||||
						} else if (vehAnim == ANIM_CAR_PULLOUT_LHS || vehAnim == ANIM_CAR_PULLOUT_LOW_LHS || vehAnim == ANIM_CAR_PULLOUT_LOW_RHS || vehAnim == ANIM_CAR_PULLOUT_RHS) {
 | 
			
		||||
							bCancelEnteringCar = true;
 | 
			
		||||
						} else if (vehAnim == ANIM_CAR_QJACK) {
 | 
			
		||||
							if (m_pVehicleAnim->GetTimeLeft() > 0.69f && m_pVehicleAnim->GetTimeLeft() < 0.72f) {
 | 
			
		||||
								QuitEnteringCar();
 | 
			
		||||
								RestorePreviousObjective();
 | 
			
		||||
							}
 | 
			
		||||
							cancelJack = false;
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
					if (cancelJack && vehAnim == ANIM_CAR_QJACK && m_pVehicleAnim->GetTimeLeft() > 0.75f && m_pVehicleAnim->GetTimeLeft() < 0.78f) {
 | 
			
		||||
						cancelJack = false;
 | 
			
		||||
						QuitEnteringCar();
 | 
			
		||||
						RestorePreviousObjective();
 | 
			
		||||
					}
 | 
			
		||||
					if (cancelJack && (vehAnim == ANIM_CAR_PULLOUT_LHS || vehAnim == ANIM_CAR_PULLOUT_LOW_LHS || vehAnim == ANIM_CAR_PULLOUT_LOW_RHS || vehAnim == ANIM_CAR_PULLOUT_RHS)) {
 | 
			
		||||
						cancelJack = false;
 | 
			
		||||
						bCancelEnteringCar = true;
 | 
			
		||||
					}
 | 
			
		||||
#endif
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
| 
						 | 
				
			
			@ -12163,6 +12178,15 @@ CPed::PedAnimPullPedOutCB(CAnimBlendAssociation* animAssoc, void* arg)
 | 
			
		|||
		if (!ped->IsNotInWreckedVehicle())
 | 
			
		||||
			return;
 | 
			
		||||
 | 
			
		||||
#ifdef CANCELLABLE_CAR_ENTER
 | 
			
		||||
		if (ped->bCancelEnteringCar) {
 | 
			
		||||
			ped->QuitEnteringCar();
 | 
			
		||||
			ped->RestorePreviousObjective();
 | 
			
		||||
			ped->bCancelEnteringCar = false;
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
		bool isLow = !!veh->bLowVehicle;
 | 
			
		||||
 | 
			
		||||
		int padNo;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue