mirror of
https://gitlab.com/GaryOderNichts/re3-wiiu.git
synced 2024-11-27 03:24:15 +01:00
Merge remote-tracking branch 'upstream/miami' into miami
This commit is contained in:
commit
5999ddc76d
@ -94,7 +94,7 @@ int32 CCarCtrl::NumRandomCars;
|
|||||||
int32 CCarCtrl::NumParkedCars;
|
int32 CCarCtrl::NumParkedCars;
|
||||||
int32 CCarCtrl::NumPermanentCars;
|
int32 CCarCtrl::NumPermanentCars;
|
||||||
int8 CCarCtrl::CountDownToCarsAtStart;
|
int8 CCarCtrl::CountDownToCarsAtStart;
|
||||||
int32 CCarCtrl::MaxNumberOfCarsInUse = 12;
|
int32 CCarCtrl::MaxNumberOfCarsInUse = DEFAULT_MAX_NUMBER_OF_CARS;
|
||||||
uint32 CCarCtrl::LastTimeLawEnforcerCreated;
|
uint32 CCarCtrl::LastTimeLawEnforcerCreated;
|
||||||
uint32 CCarCtrl::LastTimeFireTruckCreated;
|
uint32 CCarCtrl::LastTimeFireTruckCreated;
|
||||||
uint32 CCarCtrl::LastTimeAmbulanceCreated;
|
uint32 CCarCtrl::LastTimeAmbulanceCreated;
|
||||||
|
@ -208,6 +208,7 @@ wchar* CMenuManager::m_pDialogText = nil;
|
|||||||
CFont::SetWrapx(MENU_X_RIGHT_ALIGNED(MENU_X_MARGIN)); \
|
CFont::SetWrapx(MENU_X_RIGHT_ALIGNED(MENU_X_MARGIN)); \
|
||||||
CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(MENU_X_MARGIN));
|
CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(MENU_X_MARGIN));
|
||||||
|
|
||||||
|
// value must be between 0.0-1.0
|
||||||
#define ProcessSlider(value, origY, increaseAction, decreaseAction, hoverEndX, onlyWhenHoveringRow) \
|
#define ProcessSlider(value, origY, increaseAction, decreaseAction, hoverEndX, onlyWhenHoveringRow) \
|
||||||
do { \
|
do { \
|
||||||
float y = origY MINUS_SCROLL_OFFSET; \
|
float y = origY MINUS_SCROLL_OFFSET; \
|
||||||
@ -346,7 +347,7 @@ CMenuManager::ThingsToDoBeforeLeavingPage()
|
|||||||
option.m_CFODynamic->buttonPressFunc(FEOPTION_ACTION_FOCUSLOSS);
|
option.m_CFODynamic->buttonPressFunc(FEOPTION_ACTION_FOCUSLOSS);
|
||||||
|
|
||||||
if (option.m_Action == MENUACTION_CFO_SELECT && option.m_CFOSelect->onlyApplyOnEnter && option.m_CFOSelect->lastSavedValue != option.m_CFOSelect->displayedValue)
|
if (option.m_Action == MENUACTION_CFO_SELECT && option.m_CFOSelect->onlyApplyOnEnter && option.m_CFOSelect->lastSavedValue != option.m_CFOSelect->displayedValue)
|
||||||
option.m_CFOSelect->displayedValue = *option.m_CFO->value = option.m_CFOSelect->lastSavedValue;
|
option.m_CFOSelect->displayedValue = *(int8*)option.m_CFO->value = option.m_CFOSelect->lastSavedValue;
|
||||||
|
|
||||||
if (aScreens[m_nCurrScreen].returnPrevPageFunc) {
|
if (aScreens[m_nCurrScreen].returnPrevPageFunc) {
|
||||||
aScreens[m_nCurrScreen].returnPrevPageFunc();
|
aScreens[m_nCurrScreen].returnPrevPageFunc();
|
||||||
@ -700,27 +701,33 @@ CMenuManager::CheckSliderMovement(int value)
|
|||||||
{
|
{
|
||||||
switch (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action) {
|
switch (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action) {
|
||||||
case MENUACTION_BRIGHTNESS:
|
case MENUACTION_BRIGHTNESS:
|
||||||
|
#ifdef FIX_BUGS
|
||||||
|
m_PrefsBrightness += value * (384 / MENUSLIDER_LOGICAL_BARS);
|
||||||
|
#else
|
||||||
m_PrefsBrightness += value * 24.19f;
|
m_PrefsBrightness += value * 24.19f;
|
||||||
|
#endif
|
||||||
m_PrefsBrightness = Clamp(m_PrefsBrightness, 0, 384);
|
m_PrefsBrightness = Clamp(m_PrefsBrightness, 0, 384);
|
||||||
break;
|
break;
|
||||||
case MENUACTION_DRAWDIST:
|
case MENUACTION_DRAWDIST:
|
||||||
if(value > 0)
|
if(value > 0)
|
||||||
m_PrefsLOD += ((1.8f - 0.925f) / 16.0f);
|
m_PrefsLOD += ((1.8f - 0.925f) / MENUSLIDER_LOGICAL_BARS);
|
||||||
else
|
else
|
||||||
m_PrefsLOD -= ((1.8f - 0.925f) / 16.0f);
|
m_PrefsLOD -= ((1.8f - 0.925f) / MENUSLIDER_LOGICAL_BARS);
|
||||||
m_PrefsLOD = Clamp(m_PrefsLOD, 0.925f, 1.8f);
|
m_PrefsLOD = Clamp(m_PrefsLOD, 0.925f, 1.8f);
|
||||||
CRenderer::ms_lodDistScale = m_PrefsLOD;
|
CRenderer::ms_lodDistScale = m_PrefsLOD;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
// I wonder the idea behind clamping those max to 65
|
||||||
case MENUACTION_MUSICVOLUME:
|
case MENUACTION_MUSICVOLUME:
|
||||||
if (m_nPrefsAudio3DProviderIndex != NO_AUDIO_PROVIDER) {
|
if (m_nPrefsAudio3DProviderIndex != NO_AUDIO_PROVIDER) {
|
||||||
m_PrefsMusicVolume += value * (128 / 32);
|
m_PrefsMusicVolume += value * (64 / MENUSLIDER_LOGICAL_BARS);
|
||||||
m_PrefsMusicVolume = Clamp(m_PrefsMusicVolume, 0, 65);
|
m_PrefsMusicVolume = Clamp(m_PrefsMusicVolume, 0, 65);
|
||||||
DMAudio.SetMusicMasterVolume(m_PrefsMusicVolume);
|
DMAudio.SetMusicMasterVolume(m_PrefsMusicVolume);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MENUACTION_SFXVOLUME:
|
case MENUACTION_SFXVOLUME:
|
||||||
if (m_nPrefsAudio3DProviderIndex != NO_AUDIO_PROVIDER) {
|
if (m_nPrefsAudio3DProviderIndex != NO_AUDIO_PROVIDER) {
|
||||||
m_PrefsSfxVolume += value * (128 / 32);
|
m_PrefsSfxVolume += value * (64 / MENUSLIDER_LOGICAL_BARS);
|
||||||
m_PrefsSfxVolume = Clamp(m_PrefsSfxVolume, 0, 65);
|
m_PrefsSfxVolume = Clamp(m_PrefsSfxVolume, 0, 65);
|
||||||
DMAudio.SetEffectsMasterVolume(m_PrefsSfxVolume);
|
DMAudio.SetEffectsMasterVolume(m_PrefsSfxVolume);
|
||||||
}
|
}
|
||||||
@ -728,19 +735,33 @@ CMenuManager::CheckSliderMovement(int value)
|
|||||||
case MENUACTION_MP3VOLUMEBOOST:
|
case MENUACTION_MP3VOLUMEBOOST:
|
||||||
if (m_nPrefsAudio3DProviderIndex != NO_AUDIO_PROVIDER) {
|
if (m_nPrefsAudio3DProviderIndex != NO_AUDIO_PROVIDER) {
|
||||||
if (DMAudio.IsMP3RadioChannelAvailable()) {
|
if (DMAudio.IsMP3RadioChannelAvailable()) {
|
||||||
m_PrefsMP3BoostVolume += value * (128 / 32);
|
m_PrefsMP3BoostVolume += value * (64 / MENUSLIDER_LOGICAL_BARS);
|
||||||
m_PrefsMP3BoostVolume = Clamp(m_PrefsMP3BoostVolume, 0, 65);
|
m_PrefsMP3BoostVolume = Clamp(m_PrefsMP3BoostVolume, 0, 65);
|
||||||
DMAudio.SetMP3BoostVolume(m_PrefsMP3BoostVolume);
|
DMAudio.SetMP3BoostVolume(m_PrefsMP3BoostVolume);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MENUACTION_MOUSESENS:
|
case MENUACTION_MOUSESENS:
|
||||||
TheCamera.m_fMouseAccelHorzntl += value * 1.0f/200.0f/15.0f; // ???
|
TheCamera.m_fMouseAccelHorzntl += value * 1.0f/200.0f/15.0f; // probably because diving it to 15 instead of 16(MENUSLIDER_LOGICAL_BARS) had more accurate steps
|
||||||
TheCamera.m_fMouseAccelHorzntl = Clamp(TheCamera.m_fMouseAccelHorzntl, 1.0f/3200.0f, 1.0f/200.0f);
|
TheCamera.m_fMouseAccelHorzntl = Clamp(TheCamera.m_fMouseAccelHorzntl, 1.0f/3200.0f, 1.0f/200.0f);
|
||||||
#ifdef FIX_BUGS
|
#ifdef FIX_BUGS
|
||||||
TheCamera.m_fMouseAccelVertical = TheCamera.m_fMouseAccelHorzntl + 0.0005f;
|
TheCamera.m_fMouseAccelVertical = TheCamera.m_fMouseAccelHorzntl + 0.0005f;
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
#ifdef CUSTOM_FRONTEND_OPTIONS
|
||||||
|
case MENUACTION_CFO_SLIDER:
|
||||||
|
{
|
||||||
|
CMenuScreenCustom::CMenuEntry &option = aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption];
|
||||||
|
float oldValue = *(float*)option.m_CFOSlider->value;
|
||||||
|
*(float*)option.m_CFOSlider->value += value * ((option.m_CFOSlider->max - option.m_CFOSlider->min) / MENUSLIDER_LOGICAL_BARS);
|
||||||
|
*(float*)option.m_CFOSlider->value = Clamp(*(float*)option.m_CFOSlider->value, option.m_CFOSlider->min, option.m_CFOSlider->max);
|
||||||
|
|
||||||
|
if (*(float*)option.m_CFOSlider->value != oldValue && option.m_CFOSlider->changeFunc)
|
||||||
|
option.m_CFOSlider->changeFunc(oldValue, *(float*)option.m_CFOSlider->value);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -852,10 +873,10 @@ CMenuManager::DisplaySlider(float x, float y, float mostLeftBarSize, float mostR
|
|||||||
|
|
||||||
int lastActiveBarX = 0;
|
int lastActiveBarX = 0;
|
||||||
float curBarX = 0.0f;
|
float curBarX = 0.0f;
|
||||||
for (int i = 0; i < 16; i++) {
|
for (int i = 0; i < MENUSLIDER_BARS; i++) {
|
||||||
curBarX = i * rectSize/16.0f + x;
|
curBarX = i * rectSize/MENUSLIDER_BARS + x;
|
||||||
|
|
||||||
if (i / 16.0f + 1 / 32.0f < progress) {
|
if (i / (float)MENUSLIDER_BARS + 1 / (MENUSLIDER_BARS * 2.f) < progress) {
|
||||||
color = CRGBA(SLIDERON_COLOR.r, SLIDERON_COLOR.g, SLIDERON_COLOR.b, FadeIn(255));
|
color = CRGBA(SLIDERON_COLOR.r, SLIDERON_COLOR.g, SLIDERON_COLOR.b, FadeIn(255));
|
||||||
lastActiveBarX = curBarX;
|
lastActiveBarX = curBarX;
|
||||||
} else
|
} else
|
||||||
@ -863,7 +884,7 @@ CMenuManager::DisplaySlider(float x, float y, float mostLeftBarSize, float mostR
|
|||||||
|
|
||||||
maxBarHeight = Max(mostLeftBarSize, mostRightBarSize);
|
maxBarHeight = Max(mostLeftBarSize, mostRightBarSize);
|
||||||
|
|
||||||
float curBarFreeSpace = ((16 - i) * mostLeftBarSize + i * mostRightBarSize) / 16.0f;
|
float curBarFreeSpace = ((MENUSLIDER_BARS - i) * mostLeftBarSize + i * mostRightBarSize) / (float)MENUSLIDER_BARS;
|
||||||
float left = curBarX;
|
float left = curBarX;
|
||||||
float top = y + maxBarHeight - curBarFreeSpace;
|
float top = y + maxBarHeight - curBarFreeSpace;
|
||||||
float right = spacing + curBarX;
|
float right = spacing + curBarX;
|
||||||
@ -1328,8 +1349,8 @@ CMenuManager::DrawStandardMenus(bool activeScreen)
|
|||||||
CFont::SetColor(CRGBA(DARKMENUOPTION_COLOR.r, DARKMENUOPTION_COLOR.g, DARKMENUOPTION_COLOR.b, FadeIn(255)));
|
CFont::SetColor(CRGBA(DARKMENUOPTION_COLOR.r, DARKMENUOPTION_COLOR.g, DARKMENUOPTION_COLOR.b, FadeIn(255)));
|
||||||
|
|
||||||
// To whom manipulate option.m_CFO->value of static options externally (like RestoreDef functions)
|
// To whom manipulate option.m_CFO->value of static options externally (like RestoreDef functions)
|
||||||
if (*option.m_CFO->value != option.m_CFOSelect->lastSavedValue)
|
if (*(int8*)option.m_CFO->value != option.m_CFOSelect->lastSavedValue)
|
||||||
option.m_CFOSelect->displayedValue = option.m_CFOSelect->lastSavedValue = *option.m_CFO->value;
|
option.m_CFOSelect->displayedValue = option.m_CFOSelect->lastSavedValue = *(int8*)option.m_CFO->value;
|
||||||
|
|
||||||
if (option.m_CFOSelect->displayedValue >= option.m_CFOSelect->numRightTexts || option.m_CFOSelect->displayedValue < 0)
|
if (option.m_CFOSelect->displayedValue >= option.m_CFOSelect->numRightTexts || option.m_CFOSelect->displayedValue < 0)
|
||||||
option.m_CFOSelect->displayedValue = 0;
|
option.m_CFOSelect->displayedValue = 0;
|
||||||
@ -1379,7 +1400,11 @@ CMenuManager::DrawStandardMenus(bool activeScreen)
|
|||||||
int saveSlot = aScreens[m_nCurrScreen].m_aEntries[i].m_SaveSlot;
|
int saveSlot = aScreens[m_nCurrScreen].m_aEntries[i].m_SaveSlot;
|
||||||
if (rightText || action == MENUACTION_DRAWDIST || action == MENUACTION_BRIGHTNESS || action == MENUACTION_MUSICVOLUME ||
|
if (rightText || action == MENUACTION_DRAWDIST || action == MENUACTION_BRIGHTNESS || action == MENUACTION_MUSICVOLUME ||
|
||||||
action == MENUACTION_SFXVOLUME || action == MENUACTION_MP3VOLUMEBOOST || action == MENUACTION_MOUSESENS ||
|
action == MENUACTION_SFXVOLUME || action == MENUACTION_MP3VOLUMEBOOST || action == MENUACTION_MOUSESENS ||
|
||||||
saveSlot >= SAVESLOT_1 && saveSlot <= SAVESLOT_8) {
|
saveSlot >= SAVESLOT_1 && saveSlot <= SAVESLOT_8
|
||||||
|
#ifdef CUSTOM_FRONTEND_OPTIONS
|
||||||
|
|| action == MENUACTION_CFO_SLIDER
|
||||||
|
#endif
|
||||||
|
) {
|
||||||
rightXMin = 600;
|
rightXMin = 600;
|
||||||
leftXMax = 40;
|
leftXMax = 40;
|
||||||
}
|
}
|
||||||
@ -1506,30 +1531,41 @@ CMenuManager::DrawStandardMenus(bool activeScreen)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CUSTOM_FRONTEND_OPTIONS
|
||||||
|
#define SLIDER_Y(pos) (aScreens[m_nCurrScreen].m_aEntries[i].m_Y - 5.f)
|
||||||
|
#else
|
||||||
|
#define SLIDER_Y(pos) pos
|
||||||
|
#endif
|
||||||
// Sliders
|
// Sliders
|
||||||
int lastActiveBarX;
|
int lastActiveBarX;
|
||||||
switch (aScreens[m_nCurrScreen].m_aEntries[i].m_Action) {
|
switch (aScreens[m_nCurrScreen].m_aEntries[i].m_Action) {
|
||||||
case MENUACTION_BRIGHTNESS:
|
case MENUACTION_BRIGHTNESS:
|
||||||
ProcessSlider(m_PrefsBrightness / 384.0f, 70.0f, HOVEROPTION_INCREASE_BRIGHTNESS, HOVEROPTION_DECREASE_BRIGHTNESS, SCREEN_WIDTH, true);
|
ProcessSlider(m_PrefsBrightness / 384.0f, SLIDER_Y(70.0f), HOVEROPTION_INCREASE_BRIGHTNESS, HOVEROPTION_DECREASE_BRIGHTNESS, SCREEN_WIDTH, true);
|
||||||
break;
|
break;
|
||||||
case MENUACTION_DRAWDIST:
|
case MENUACTION_DRAWDIST:
|
||||||
ProcessSlider((m_PrefsLOD - 0.925f) / 0.875f, 99.0f, HOVEROPTION_INCREASE_DRAWDIST, HOVEROPTION_DECREASE_DRAWDIST, SCREEN_WIDTH, true);
|
ProcessSlider((m_PrefsLOD - 0.925f) / 0.875f, SLIDER_Y(99.0f), HOVEROPTION_INCREASE_DRAWDIST, HOVEROPTION_DECREASE_DRAWDIST, SCREEN_WIDTH, true);
|
||||||
break;
|
break;
|
||||||
case MENUACTION_MUSICVOLUME:
|
case MENUACTION_MUSICVOLUME:
|
||||||
if(m_nPrefsAudio3DProviderIndex != NO_AUDIO_PROVIDER)
|
if(m_nPrefsAudio3DProviderIndex != NO_AUDIO_PROVIDER)
|
||||||
ProcessSlider(m_PrefsMusicVolume / 64.0f, 70.0f, HOVEROPTION_INCREASE_MUSICVOLUME, HOVEROPTION_DECREASE_MUSICVOLUME, SCREEN_WIDTH, true);
|
ProcessSlider(m_PrefsMusicVolume / 64.0f, SLIDER_Y(70.0f), HOVEROPTION_INCREASE_MUSICVOLUME, HOVEROPTION_DECREASE_MUSICVOLUME, SCREEN_WIDTH, true);
|
||||||
break;
|
break;
|
||||||
case MENUACTION_SFXVOLUME:
|
case MENUACTION_SFXVOLUME:
|
||||||
if (m_nPrefsAudio3DProviderIndex != NO_AUDIO_PROVIDER)
|
if (m_nPrefsAudio3DProviderIndex != NO_AUDIO_PROVIDER)
|
||||||
ProcessSlider(m_PrefsSfxVolume / 64.0f, 99.0f, HOVEROPTION_INCREASE_SFXVOLUME, HOVEROPTION_DECREASE_SFXVOLUME, SCREEN_WIDTH, true);
|
ProcessSlider(m_PrefsSfxVolume / 64.0f, SLIDER_Y(99.0f), HOVEROPTION_INCREASE_SFXVOLUME, HOVEROPTION_DECREASE_SFXVOLUME, SCREEN_WIDTH, true);
|
||||||
break;
|
break;
|
||||||
case MENUACTION_MOUSESENS:
|
case MENUACTION_MOUSESENS:
|
||||||
ProcessSlider(TheCamera.m_fMouseAccelHorzntl * 200.0f, 170.0f, HOVEROPTION_INCREASE_MOUSESENS, HOVEROPTION_DECREASE_MOUSESENS, SCREEN_WIDTH, false);
|
ProcessSlider(TheCamera.m_fMouseAccelHorzntl * 200.0f, SLIDER_Y(170.0f), HOVEROPTION_INCREASE_MOUSESENS, HOVEROPTION_DECREASE_MOUSESENS, SCREEN_WIDTH, false);
|
||||||
break;
|
break;
|
||||||
case MENUACTION_MP3VOLUMEBOOST:
|
case MENUACTION_MP3VOLUMEBOOST:
|
||||||
if(m_nPrefsAudio3DProviderIndex != NO_AUDIO_PROVIDER && DMAudio.IsMP3RadioChannelAvailable())
|
if(m_nPrefsAudio3DProviderIndex != NO_AUDIO_PROVIDER && DMAudio.IsMP3RadioChannelAvailable())
|
||||||
ProcessSlider(m_PrefsMP3BoostVolume / 64.f, 128.0f, HOVEROPTION_INCREASE_MP3BOOST, HOVEROPTION_DECREASE_MP3BOOST, SCREEN_WIDTH, true);
|
ProcessSlider(m_PrefsMP3BoostVolume / 64.f, SLIDER_Y(128.0f), HOVEROPTION_INCREASE_MP3BOOST, HOVEROPTION_DECREASE_MP3BOOST, SCREEN_WIDTH, true);
|
||||||
break;
|
break;
|
||||||
|
#ifdef CUSTOM_FRONTEND_OPTIONS
|
||||||
|
case MENUACTION_CFO_SLIDER:
|
||||||
|
CMenuScreenCustom::CMenuEntry &option = aScreens[m_nCurrScreen].m_aEntries[i];
|
||||||
|
ProcessSlider((*(float*)option.m_CFOSlider->value - option.m_CFOSlider->min) / (option.m_CFOSlider->max - option.m_CFOSlider->min), SLIDER_Y(0), HOVEROPTION_INCREASE_CFO_SLIDER, HOVEROPTION_DECREASE_CFO_SLIDER, SCREEN_WIDTH, true);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// Not just unused, but also collides with the bug fix in Font.cpp. Yikes.
|
// Not just unused, but also collides with the bug fix in Font.cpp. Yikes.
|
||||||
@ -4267,7 +4303,11 @@ CMenuManager::UserInput(void)
|
|||||||
|
|
||||||
int action = aScreens[m_nCurrScreen].m_aEntries[rowToCheck].m_Action;
|
int action = aScreens[m_nCurrScreen].m_aEntries[rowToCheck].m_Action;
|
||||||
if (action != MENUACTION_BRIGHTNESS && action != MENUACTION_DRAWDIST && action != MENUACTION_MUSICVOLUME
|
if (action != MENUACTION_BRIGHTNESS && action != MENUACTION_DRAWDIST && action != MENUACTION_MUSICVOLUME
|
||||||
&& action != MENUACTION_SFXVOLUME && action != MENUACTION_MOUSESENS && action != MENUACTION_MP3VOLUMEBOOST)
|
&& action != MENUACTION_SFXVOLUME && action != MENUACTION_MOUSESENS && action != MENUACTION_MP3VOLUMEBOOST
|
||||||
|
#ifdef CUSTOM_FRONTEND_OPTIONS
|
||||||
|
&& action != MENUACTION_CFO_SLIDER
|
||||||
|
#endif
|
||||||
|
)
|
||||||
m_nHoverOption = HOVEROPTION_RANDOM_ITEM;
|
m_nHoverOption = HOVEROPTION_RANDOM_ITEM;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -4347,6 +4387,9 @@ CMenuManager::UserInput(void)
|
|||||||
case HOVEROPTION_INCREASE_MUSICVOLUME:
|
case HOVEROPTION_INCREASE_MUSICVOLUME:
|
||||||
case HOVEROPTION_INCREASE_SFXVOLUME:
|
case HOVEROPTION_INCREASE_SFXVOLUME:
|
||||||
case HOVEROPTION_INCREASE_MOUSESENS:
|
case HOVEROPTION_INCREASE_MOUSESENS:
|
||||||
|
#ifdef CUSTOM_FRONTEND_OPTIONS
|
||||||
|
case HOVEROPTION_INCREASE_CFO_SLIDER:
|
||||||
|
#endif
|
||||||
CheckSliderMovement(1);
|
CheckSliderMovement(1);
|
||||||
break;
|
break;
|
||||||
case HOVEROPTION_DECREASE_BRIGHTNESS:
|
case HOVEROPTION_DECREASE_BRIGHTNESS:
|
||||||
@ -4355,6 +4398,9 @@ CMenuManager::UserInput(void)
|
|||||||
case HOVEROPTION_DECREASE_MUSICVOLUME:
|
case HOVEROPTION_DECREASE_MUSICVOLUME:
|
||||||
case HOVEROPTION_DECREASE_SFXVOLUME:
|
case HOVEROPTION_DECREASE_SFXVOLUME:
|
||||||
case HOVEROPTION_DECREASE_MOUSESENS:
|
case HOVEROPTION_DECREASE_MOUSESENS:
|
||||||
|
#ifdef CUSTOM_FRONTEND_OPTIONS
|
||||||
|
case HOVEROPTION_DECREASE_CFO_SLIDER:
|
||||||
|
#endif
|
||||||
CheckSliderMovement(-1);
|
CheckSliderMovement(-1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -4386,7 +4432,11 @@ CMenuManager::UserInput(void)
|
|||||||
|| CPad::GetPad(0)->GetAnaloguePadLeftJustUp() || CPad::GetPad(0)->GetAnaloguePadRightJustUp()
|
|| CPad::GetPad(0)->GetAnaloguePadLeftJustUp() || CPad::GetPad(0)->GetAnaloguePadRightJustUp()
|
||||||
|| CPad::GetPad(0)->GetMouseWheelUpJustDown() || CPad::GetPad(0)->GetMouseWheelDownJustDown()) {
|
|| CPad::GetPad(0)->GetMouseWheelUpJustDown() || CPad::GetPad(0)->GetMouseWheelDownJustDown()) {
|
||||||
int option = aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action;
|
int option = aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action;
|
||||||
if (option == MENUACTION_BRIGHTNESS)
|
if (option == MENUACTION_BRIGHTNESS
|
||||||
|
#ifdef CUSTOM_FRONTEND_OPTIONS
|
||||||
|
|| option == MENUACTION_CFO_SLIDER
|
||||||
|
#endif
|
||||||
|
)
|
||||||
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_ENTER_OR_ADJUST, 0);
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_ENTER_OR_ADJUST, 0);
|
||||||
else if (option == MENUACTION_SFXVOLUME)
|
else if (option == MENUACTION_SFXVOLUME)
|
||||||
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_AUDIO_TEST, 0);
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_AUDIO_TEST, 0);
|
||||||
@ -4417,7 +4467,11 @@ CMenuManager::UserInput(void)
|
|||||||
if (curAction == MENUACTION_BRIGHTNESS || curAction == MENUACTION_MUSICVOLUME ||
|
if (curAction == MENUACTION_BRIGHTNESS || curAction == MENUACTION_MUSICVOLUME ||
|
||||||
curAction == MENUACTION_SFXVOLUME || curAction == MENUACTION_RADIO ||
|
curAction == MENUACTION_SFXVOLUME || curAction == MENUACTION_RADIO ||
|
||||||
curAction == MENUACTION_DRAWDIST || curAction == MENUACTION_MOUSESENS ||
|
curAction == MENUACTION_DRAWDIST || curAction == MENUACTION_MOUSESENS ||
|
||||||
curAction == MENUACTION_MP3VOLUMEBOOST)
|
curAction == MENUACTION_MP3VOLUMEBOOST
|
||||||
|
#ifdef CUSTOM_FRONTEND_OPTIONS
|
||||||
|
|| curAction == MENUACTION_CFO_SLIDER
|
||||||
|
#endif
|
||||||
|
)
|
||||||
changeValueBy = -1;
|
changeValueBy = -1;
|
||||||
|
|
||||||
lastSliderDecrease = CTimer::GetTimeInMillisecondsPauseMode();
|
lastSliderDecrease = CTimer::GetTimeInMillisecondsPauseMode();
|
||||||
@ -4428,7 +4482,11 @@ CMenuManager::UserInput(void)
|
|||||||
if (curAction == MENUACTION_BRIGHTNESS || curAction == MENUACTION_MUSICVOLUME ||
|
if (curAction == MENUACTION_BRIGHTNESS || curAction == MENUACTION_MUSICVOLUME ||
|
||||||
curAction == MENUACTION_SFXVOLUME || curAction == MENUACTION_RADIO ||
|
curAction == MENUACTION_SFXVOLUME || curAction == MENUACTION_RADIO ||
|
||||||
curAction == MENUACTION_DRAWDIST || curAction == MENUACTION_MOUSESENS ||
|
curAction == MENUACTION_DRAWDIST || curAction == MENUACTION_MOUSESENS ||
|
||||||
curAction == MENUACTION_MP3VOLUMEBOOST)
|
curAction == MENUACTION_MP3VOLUMEBOOST
|
||||||
|
#ifdef CUSTOM_FRONTEND_OPTIONS
|
||||||
|
|| curAction == MENUACTION_CFO_SLIDER
|
||||||
|
#endif
|
||||||
|
)
|
||||||
changeValueBy = 1;
|
changeValueBy = 1;
|
||||||
lastSliderIncrease = CTimer::GetTimeInMillisecondsPauseMode();
|
lastSliderIncrease = CTimer::GetTimeInMillisecondsPauseMode();
|
||||||
}
|
}
|
||||||
@ -4487,10 +4545,10 @@ CMenuManager::UserInput(void)
|
|||||||
if (oldEntry.m_CFOSelect->displayedValue != oldEntry.m_CFOSelect->lastSavedValue)
|
if (oldEntry.m_CFOSelect->displayedValue != oldEntry.m_CFOSelect->lastSavedValue)
|
||||||
SetHelperText(3); // Restored original value
|
SetHelperText(3); // Restored original value
|
||||||
|
|
||||||
oldEntry.m_CFOSelect->displayedValue = oldEntry.m_CFOSelect->lastSavedValue = *oldEntry.m_CFO->value;
|
oldEntry.m_CFOSelect->displayedValue = oldEntry.m_CFOSelect->lastSavedValue = *(int8*)oldEntry.m_CFO->value;
|
||||||
}
|
}
|
||||||
} else if (oldEntry.m_Action == MENUACTION_CFO_SELECT && oldEntry.m_CFOSelect->onlyApplyOnEnter) {
|
} else if (oldEntry.m_Action == MENUACTION_CFO_SELECT && oldEntry.m_CFOSelect->onlyApplyOnEnter) {
|
||||||
if (oldEntry.m_CFOSelect->displayedValue != *oldEntry.m_CFO->value)
|
if (oldEntry.m_CFOSelect->displayedValue != *(int8*)oldEntry.m_CFO->value)
|
||||||
SetHelperText(1); // Enter to apply
|
SetHelperText(1); // Enter to apply
|
||||||
else if (m_nHelperTextMsgId == 1)
|
else if (m_nHelperTextMsgId == 1)
|
||||||
ResetHelperText(); // Applied
|
ResetHelperText(); // Applied
|
||||||
@ -4919,9 +4977,9 @@ CMenuManager::ProcessUserInput(uint8 goDown, uint8 goUp, uint8 optionSelected, u
|
|||||||
if (option.m_CFOSelect->displayedValue >= option.m_CFOSelect->numRightTexts || option.m_CFOSelect->displayedValue < 0)
|
if (option.m_CFOSelect->displayedValue >= option.m_CFOSelect->numRightTexts || option.m_CFOSelect->displayedValue < 0)
|
||||||
option.m_CFOSelect->displayedValue = 0;
|
option.m_CFOSelect->displayedValue = 0;
|
||||||
}
|
}
|
||||||
int8 oldValue = *option.m_CFO->value;
|
int8 oldValue = *(int8*)option.m_CFO->value;
|
||||||
|
|
||||||
*option.m_CFO->value = option.m_CFOSelect->lastSavedValue = option.m_CFOSelect->displayedValue;
|
*(int8*)option.m_CFO->value = option.m_CFOSelect->lastSavedValue = option.m_CFOSelect->displayedValue;
|
||||||
|
|
||||||
// Now everything is saved in .ini, and LOAD_INI_SETTINGS is fundamental for CFO
|
// Now everything is saved in .ini, and LOAD_INI_SETTINGS is fundamental for CFO
|
||||||
// if (option.m_CFOSelect->save)
|
// if (option.m_CFOSelect->save)
|
||||||
@ -5086,9 +5144,9 @@ CMenuManager::ProcessUserInput(uint8 goDown, uint8 goUp, uint8 optionSelected, u
|
|||||||
option.m_CFOSelect->displayedValue = option.m_CFOSelect->numRightTexts - 1;
|
option.m_CFOSelect->displayedValue = option.m_CFOSelect->numRightTexts - 1;
|
||||||
}
|
}
|
||||||
if (!option.m_CFOSelect->onlyApplyOnEnter) {
|
if (!option.m_CFOSelect->onlyApplyOnEnter) {
|
||||||
int8 oldValue = *option.m_CFO->value;
|
int8 oldValue = *(int8*)option.m_CFO->value;
|
||||||
|
|
||||||
*option.m_CFO->value = option.m_CFOSelect->lastSavedValue = option.m_CFOSelect->displayedValue;
|
*(int8*)option.m_CFO->value = option.m_CFOSelect->lastSavedValue = option.m_CFOSelect->displayedValue;
|
||||||
|
|
||||||
// Now everything is saved in .ini, and LOAD_INI_SETTINGS is fundamental for CFO
|
// Now everything is saved in .ini, and LOAD_INI_SETTINGS is fundamental for CFO
|
||||||
// if (option.m_CFOSelect->save)
|
// if (option.m_CFOSelect->save)
|
||||||
|
@ -15,6 +15,9 @@
|
|||||||
|
|
||||||
#define MENUACTION_SCALE_MULT 0.9f
|
#define MENUACTION_SCALE_MULT 0.9f
|
||||||
|
|
||||||
|
#define MENUSLIDER_BARS 16
|
||||||
|
#define MENUSLIDER_LOGICAL_BARS MENUSLIDER_BARS
|
||||||
|
|
||||||
#define MENULABEL_X_MARGIN 80.0f
|
#define MENULABEL_X_MARGIN 80.0f
|
||||||
#define MENULABEL_POS_X 100.0f
|
#define MENULABEL_POS_X 100.0f
|
||||||
#define MENULABEL_POS_Y 97.0f
|
#define MENULABEL_POS_Y 97.0f
|
||||||
@ -230,6 +233,7 @@ enum eMenuScreen
|
|||||||
enum eMenuAction
|
enum eMenuAction
|
||||||
{
|
{
|
||||||
#ifdef CUSTOM_FRONTEND_OPTIONS
|
#ifdef CUSTOM_FRONTEND_OPTIONS
|
||||||
|
MENUACTION_CFO_SLIDER = -3,
|
||||||
MENUACTION_CFO_SELECT = -2,
|
MENUACTION_CFO_SELECT = -2,
|
||||||
MENUACTION_CFO_DYNAMIC = -1,
|
MENUACTION_CFO_DYNAMIC = -1,
|
||||||
#endif
|
#endif
|
||||||
@ -335,6 +339,10 @@ enum eCheckHover
|
|||||||
HOVEROPTION_DECREASE_MOUSESENS,
|
HOVEROPTION_DECREASE_MOUSESENS,
|
||||||
HOVEROPTION_INCREASE_MP3BOOST,
|
HOVEROPTION_INCREASE_MP3BOOST,
|
||||||
HOVEROPTION_DECREASE_MP3BOOST,
|
HOVEROPTION_DECREASE_MP3BOOST,
|
||||||
|
#ifdef CUSTOM_FRONTEND_OPTIONS
|
||||||
|
HOVEROPTION_INCREASE_CFO_SLIDER,
|
||||||
|
HOVEROPTION_DECREASE_CFO_SLIDER,
|
||||||
|
#endif
|
||||||
HOVEROPTION_NOT_HOVERING,
|
HOVEROPTION_NOT_HOVERING,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -407,7 +415,7 @@ struct CCustomScreenLayout {
|
|||||||
|
|
||||||
struct CCFO
|
struct CCFO
|
||||||
{
|
{
|
||||||
int8 *value;
|
void *value;
|
||||||
const char *saveCat;
|
const char *saveCat;
|
||||||
const char *save;
|
const char *save;
|
||||||
};
|
};
|
||||||
@ -438,6 +446,24 @@ struct CCFOSelect : CCFO
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Value is float in here
|
||||||
|
struct CCFOSlider : CCFO
|
||||||
|
{
|
||||||
|
ChangeFuncFloat changeFunc;
|
||||||
|
float min;
|
||||||
|
float max;
|
||||||
|
|
||||||
|
CCFOSlider() {};
|
||||||
|
CCFOSlider(float* value, const char* saveCat, const char* save, float min, float max, ChangeFuncFloat changeFunc = nil){
|
||||||
|
this->value = value;
|
||||||
|
this->saveCat = saveCat;
|
||||||
|
this->save = save;
|
||||||
|
this->changeFunc = changeFunc;
|
||||||
|
this->min = min;
|
||||||
|
this->max = max;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
struct CCFODynamic : CCFO
|
struct CCFODynamic : CCFO
|
||||||
{
|
{
|
||||||
DrawFunc drawFunc;
|
DrawFunc drawFunc;
|
||||||
@ -469,6 +495,7 @@ struct CMenuScreenCustom
|
|||||||
CCFO *m_CFO; // for initializing
|
CCFO *m_CFO; // for initializing
|
||||||
CCFOSelect *m_CFOSelect;
|
CCFOSelect *m_CFOSelect;
|
||||||
CCFODynamic *m_CFODynamic;
|
CCFODynamic *m_CFODynamic;
|
||||||
|
CCFOSlider *m_CFOSlider;
|
||||||
};
|
};
|
||||||
int32 m_SaveSlot; // eSaveSlot
|
int32 m_SaveSlot; // eSaveSlot
|
||||||
int32 m_TargetMenu; // eMenuScreen
|
int32 m_TargetMenu; // eMenuScreen
|
||||||
|
@ -373,6 +373,10 @@ bool CGame::Initialise(const char* datFile)
|
|||||||
CPools::Initialise();
|
CPools::Initialise();
|
||||||
|
|
||||||
#ifndef GTA_PS2
|
#ifndef GTA_PS2
|
||||||
|
#ifdef PED_CAR_DENSITY_SLIDERS
|
||||||
|
// Load density values from gta3.ini only if our reVC.ini have them 0.6f
|
||||||
|
if (CIniFile::PedNumberMultiplier == 0.6f && CIniFile::CarNumberMultiplier == 0.6f)
|
||||||
|
#endif
|
||||||
CIniFile::LoadIniFile();
|
CIniFile::LoadIniFile();
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_TEXTURE_POOL
|
#ifdef USE_TEXTURE_POOL
|
||||||
@ -899,7 +903,13 @@ void CGame::Process(void)
|
|||||||
CEventList::Update();
|
CEventList::Update();
|
||||||
CParticle::Update();
|
CParticle::Update();
|
||||||
gFireManager.Update();
|
gFireManager.Update();
|
||||||
|
|
||||||
|
// Otherwise even on 30 fps most probably you won't see any peds around Ocean View Hospital
|
||||||
|
#if defined FIX_BUGS && !defined SQUEEZE_PERFORMANCE
|
||||||
|
if (processTime > 2) {
|
||||||
|
#else
|
||||||
if (processTime >= 2) {
|
if (processTime >= 2) {
|
||||||
|
#endif
|
||||||
CPopulation::Update(false);
|
CPopulation::Update(false);
|
||||||
} else {
|
} else {
|
||||||
uint32 startTime = CTimer::GetCurrentTimeInCycles() / CTimer::GetCyclesPerMillisecond();
|
uint32 startTime = CTimer::GetCurrentTimeInCycles() / CTimer::GetCyclesPerMillisecond();
|
||||||
|
@ -23,7 +23,7 @@ void CIniFile::LoadIniFile()
|
|||||||
CarNumberMultiplier = Min(3.0f, Max(0.5f, CarNumberMultiplier));
|
CarNumberMultiplier = Min(3.0f, Max(0.5f, CarNumberMultiplier));
|
||||||
CFileMgr::CloseFile(f);
|
CFileMgr::CloseFile(f);
|
||||||
}
|
}
|
||||||
CPopulation::MaxNumberOfPedsInUse = 25.0f * PedNumberMultiplier;
|
CPopulation::MaxNumberOfPedsInUse = DEFAULT_MAX_NUMBER_OF_PEDS * PedNumberMultiplier;
|
||||||
CPopulation::MaxNumberOfPedsInUseInterior = 40.0f * PedNumberMultiplier;
|
CPopulation::MaxNumberOfPedsInUseInterior = DEFAULT_MAX_NUMBER_OF_PEDS_INTERIOR * PedNumberMultiplier;
|
||||||
CCarCtrl::MaxNumberOfCarsInUse = 12.0f * CarNumberMultiplier;
|
CCarCtrl::MaxNumberOfCarsInUse = DEFAULT_MAX_NUMBER_OF_CARS * CarNumberMultiplier;
|
||||||
}
|
}
|
@ -1,5 +1,9 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#define DEFAULT_MAX_NUMBER_OF_PEDS 25.0f
|
||||||
|
#define DEFAULT_MAX_NUMBER_OF_PEDS_INTERIOR 40.0f
|
||||||
|
#define DEFAULT_MAX_NUMBER_OF_CARS 12.0f
|
||||||
|
|
||||||
class CIniFile
|
class CIniFile
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -27,6 +27,9 @@
|
|||||||
#include "Pad.h"
|
#include "Pad.h"
|
||||||
#include "ControllerConfig.h"
|
#include "ControllerConfig.h"
|
||||||
#include "DMAudio.h"
|
#include "DMAudio.h"
|
||||||
|
#include "IniFile.h"
|
||||||
|
#include "CarCtrl.h"
|
||||||
|
#include "Population.h"
|
||||||
|
|
||||||
// Menu screens array is at the bottom of the file.
|
// Menu screens array is at the bottom of the file.
|
||||||
|
|
||||||
@ -64,6 +67,15 @@
|
|||||||
#define DUALPASS_SELECTOR
|
#define DUALPASS_SELECTOR
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef PED_CAR_DENSITY_SLIDERS
|
||||||
|
// 0.2f - 3.4f makes it possible to have 1.0f somewhere inbetween
|
||||||
|
#define DENSITY_SLIDERS \
|
||||||
|
MENUACTION_CFO_SLIDER, "FEM_PED", { new CCFOSlider(&CIniFile::PedNumberMultiplier, "Display", "PedDensity", 0.2f, 3.4f, PedDensityChange) }, 0, 0, MENUALIGN_LEFT, \
|
||||||
|
MENUACTION_CFO_SLIDER, "FEM_CAR", { new CCFOSlider(&CIniFile::CarNumberMultiplier, "Display", "CarDensity", 0.2f, 3.4f, CarDensityChange) }, 0, 0, MENUALIGN_LEFT,
|
||||||
|
#else
|
||||||
|
#define DENSITY_SLIDERS
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef NO_ISLAND_LOADING
|
#ifdef NO_ISLAND_LOADING
|
||||||
#define ISLAND_LOADING_SELECTOR MENUACTION_CFO_SELECT, "FEM_ISL", { new CCFOSelect((int8*)&FrontEndMenuManager.m_PrefsIslandLoading, "Graphics", "IslandLoading", islandLoadingOpts, ARRAY_SIZE(islandLoadingOpts), true, IslandLoadingAfterChange) }, 0, 0, MENUALIGN_LEFT,
|
#define ISLAND_LOADING_SELECTOR MENUACTION_CFO_SELECT, "FEM_ISL", { new CCFOSelect((int8*)&FrontEndMenuManager.m_PrefsIslandLoading, "Graphics", "IslandLoading", islandLoadingOpts, ARRAY_SIZE(islandLoadingOpts), true, IslandLoadingAfterChange) }, 0, 0, MENUALIGN_LEFT,
|
||||||
#else
|
#else
|
||||||
@ -136,6 +148,9 @@ void RestoreDefDisplay(int8 action) {
|
|||||||
#ifdef FREE_CAM
|
#ifdef FREE_CAM
|
||||||
TheCamera.bFreeCam = false;
|
TheCamera.bFreeCam = false;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef PED_CAR_DENSITY_SLIDERS
|
||||||
|
CIniFile::LoadIniFile();
|
||||||
|
#endif
|
||||||
#ifdef GRAPHICS_MENU_OPTIONS // otherwise Frontend will handle those
|
#ifdef GRAPHICS_MENU_OPTIONS // otherwise Frontend will handle those
|
||||||
FrontEndMenuManager.m_PrefsBrightness = 256;
|
FrontEndMenuManager.m_PrefsBrightness = 256;
|
||||||
FrontEndMenuManager.m_PrefsLOD = 1.2f;
|
FrontEndMenuManager.m_PrefsLOD = 1.2f;
|
||||||
@ -182,6 +197,17 @@ void IslandLoadingAfterChange(int8 before, int8 after) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef PED_CAR_DENSITY_SLIDERS
|
||||||
|
void PedDensityChange(float before, float after) {
|
||||||
|
CPopulation::MaxNumberOfPedsInUse = DEFAULT_MAX_NUMBER_OF_PEDS * after;
|
||||||
|
CPopulation::MaxNumberOfPedsInUseInterior = DEFAULT_MAX_NUMBER_OF_PEDS_INTERIOR * after;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CarDensityChange(float before, float after) {
|
||||||
|
CCarCtrl::MaxNumberOfCarsInUse = DEFAULT_MAX_NUMBER_OF_CARS * after;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef MULTISAMPLING
|
#ifndef MULTISAMPLING
|
||||||
void GraphicsGoBack() {
|
void GraphicsGoBack() {
|
||||||
}
|
}
|
||||||
@ -417,6 +443,7 @@ CMenuScreenCustom aScreens[] = {
|
|||||||
DUALPASS_SELECTOR
|
DUALPASS_SELECTOR
|
||||||
CUTSCENE_BORDERS_TOGGLE
|
CUTSCENE_BORDERS_TOGGLE
|
||||||
FREE_CAM_TOGGLE
|
FREE_CAM_TOGGLE
|
||||||
|
DENSITY_SLIDERS
|
||||||
POSTFX_SELECTORS
|
POSTFX_SELECTORS
|
||||||
// re3.cpp inserts here pipeline selectors if neo/neo.txd exists and EXTENDED_PIPELINES defined
|
// re3.cpp inserts here pipeline selectors if neo/neo.txd exists and EXTENDED_PIPELINES defined
|
||||||
MENUACTION_RESTOREDEF, "FET_DEF", {nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS}, 320, 0, MENUALIGN_CENTER,
|
MENUACTION_RESTOREDEF, "FET_DEF", {nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS}, 320, 0, MENUALIGN_CENTER,
|
||||||
@ -428,6 +455,7 @@ CMenuScreenCustom aScreens[] = {
|
|||||||
MENUACTION_DRAWDIST, "FEM_LOD", { nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS }, 0, 0, MENUALIGN_LEFT,
|
MENUACTION_DRAWDIST, "FEM_LOD", { nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS }, 0, 0, MENUALIGN_LEFT,
|
||||||
CUTSCENE_BORDERS_TOGGLE
|
CUTSCENE_BORDERS_TOGGLE
|
||||||
FREE_CAM_TOGGLE
|
FREE_CAM_TOGGLE
|
||||||
|
DENSITY_SLIDERS
|
||||||
MENUACTION_LEGENDS, "MAP_LEG", { nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS }, 0, 0, MENUALIGN_LEFT,
|
MENUACTION_LEGENDS, "MAP_LEG", { nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS }, 0, 0, MENUALIGN_LEFT,
|
||||||
MENUACTION_RADARMODE, "FED_RDR", { nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS }, 0, 0, MENUALIGN_LEFT,
|
MENUACTION_RADARMODE, "FED_RDR", { nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS }, 0, 0, MENUALIGN_LEFT,
|
||||||
MENUACTION_HUD, "FED_HUD", { nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS }, 0, 0, MENUALIGN_LEFT,
|
MENUACTION_HUD, "FED_HUD", { nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS }, 0, 0, MENUALIGN_LEFT,
|
||||||
|
@ -369,6 +369,7 @@ enum Config {
|
|||||||
# define CUTSCENE_BORDERS_SWITCH
|
# define CUTSCENE_BORDERS_SWITCH
|
||||||
# define MULTISAMPLING // adds MSAA option
|
# define MULTISAMPLING // adds MSAA option
|
||||||
# define INVERT_LOOK_FOR_PAD // enable the hidden option
|
# define INVERT_LOOK_FOR_PAD // enable the hidden option
|
||||||
|
# define PED_CAR_DENSITY_SLIDERS
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -44,6 +44,9 @@
|
|||||||
#include "Camera.h"
|
#include "Camera.h"
|
||||||
#include "MBlur.h"
|
#include "MBlur.h"
|
||||||
#include "ControllerConfig.h"
|
#include "ControllerConfig.h"
|
||||||
|
#include "CarCtrl.h"
|
||||||
|
#include "Population.h"
|
||||||
|
#include "IniFile.h"
|
||||||
|
|
||||||
#ifdef DETECT_JOYSTICK_MENU
|
#ifdef DETECT_JOYSTICK_MENU
|
||||||
#include "crossplatform.h"
|
#include "crossplatform.h"
|
||||||
@ -560,22 +563,30 @@ bool LoadINISettings()
|
|||||||
|
|
||||||
// CFO check
|
// CFO check
|
||||||
if (option.m_Action < MENUACTION_NOTHING && option.m_CFO->save) {
|
if (option.m_Action < MENUACTION_NOTHING && option.m_CFO->save) {
|
||||||
// CFO only supports saving uint8 right now
|
|
||||||
|
|
||||||
// Migrate from old .ini to new .ini
|
// Migrate from old .ini to new .ini
|
||||||
if (migrate && ReadIniIfExists("FrontendOptions", option.m_CFO->save, option.m_CFO->value))
|
// Old values can only be int8, new ones can contain float if it is slider
|
||||||
|
if (migrate && ReadIniIfExists("FrontendOptions", option.m_CFO->save, (int8*)option.m_CFO->value))
|
||||||
cfg["FrontendOptions"].remove(option.m_CFO->save);
|
cfg["FrontendOptions"].remove(option.m_CFO->save);
|
||||||
|
else if (option.m_Action == MENUACTION_CFO_SLIDER)
|
||||||
|
ReadIniIfExists(option.m_CFO->saveCat, option.m_CFO->save, (float*)option.m_CFO->value);
|
||||||
else
|
else
|
||||||
ReadIniIfExists(option.m_CFO->saveCat, option.m_CFO->save, option.m_CFO->value);
|
ReadIniIfExists(option.m_CFO->saveCat, option.m_CFO->save, (int8*)option.m_CFO->value);
|
||||||
|
|
||||||
if (option.m_Action == MENUACTION_CFO_SELECT) {
|
if (option.m_Action == MENUACTION_CFO_SELECT) {
|
||||||
option.m_CFOSelect->lastSavedValue = option.m_CFOSelect->displayedValue = *option.m_CFO->value;
|
option.m_CFOSelect->lastSavedValue = option.m_CFOSelect->displayedValue = *(int8*)option.m_CFO->value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Fetched in above block, but needs evaluation
|
||||||
|
#ifdef PED_CAR_DENSITY_SLIDERS
|
||||||
|
CPopulation::MaxNumberOfPedsInUse = DEFAULT_MAX_NUMBER_OF_PEDS * CIniFile::PedNumberMultiplier;
|
||||||
|
CPopulation::MaxNumberOfPedsInUseInterior = DEFAULT_MAX_NUMBER_OF_PEDS_INTERIOR * CIniFile::PedNumberMultiplier;
|
||||||
|
CCarCtrl::MaxNumberOfCarsInUse = DEFAULT_MAX_NUMBER_OF_CARS * CIniFile::CarNumberMultiplier;
|
||||||
|
#endif
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -656,8 +667,10 @@ void SaveINISettings()
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
if (option.m_Action < MENUACTION_NOTHING && option.m_CFO->save) {
|
if (option.m_Action < MENUACTION_NOTHING && option.m_CFO->save) {
|
||||||
// Beware: CFO only supports saving uint8 right now
|
if (option.m_Action == MENUACTION_CFO_SLIDER)
|
||||||
StoreIni(option.m_CFO->saveCat, option.m_CFO->save, *option.m_CFO->value);
|
StoreIni(option.m_CFO->saveCat, option.m_CFO->save, *(float*)option.m_CFO->value);
|
||||||
|
else
|
||||||
|
StoreIni(option.m_CFO->saveCat, option.m_CFO->save, *(int8*)option.m_CFO->value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -226,14 +226,13 @@ CPhysical::RemoveAndAdd(void)
|
|||||||
CRect
|
CRect
|
||||||
CPhysical::GetBoundRect(void)
|
CPhysical::GetBoundRect(void)
|
||||||
{
|
{
|
||||||
CVUVECTOR center;
|
CVector center;
|
||||||
float radius;
|
float radius;
|
||||||
GetBoundCentre(center);
|
center = GetBoundCentre();
|
||||||
radius = GetBoundRadius();
|
radius = GetBoundRadius();
|
||||||
return CRect(center.x-radius, center.y-radius, center.x+radius, center.y+radius);
|
return CRect(center.x-radius, center.y-radius, center.x+radius, center.y+radius);
|
||||||
}
|
}
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
void
|
void
|
||||||
CPhysical::AddToMovingList(void)
|
CPhysical::AddToMovingList(void)
|
||||||
{
|
{
|
||||||
@ -241,7 +240,6 @@ CPhysical::AddToMovingList(void)
|
|||||||
m_movingListNode = CWorld::GetMovingEntityList().InsertItem(this);
|
m_movingListNode = CWorld::GetMovingEntityList().InsertItem(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
void
|
void
|
||||||
CPhysical::RemoveFromMovingList(void)
|
CPhysical::RemoveFromMovingList(void)
|
||||||
{
|
{
|
||||||
@ -261,7 +259,6 @@ CPhysical::SetDamagedPieceRecord(uint16 piece, float impulse, CEntity *entity, C
|
|||||||
m_vecDamageNormal = dir;
|
m_vecDamageNormal = dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
void
|
void
|
||||||
CPhysical::AddCollisionRecord(CEntity *ent)
|
CPhysical::AddCollisionRecord(CEntity *ent)
|
||||||
{
|
{
|
||||||
@ -285,7 +282,6 @@ CPhysical::AddCollisionRecord(CEntity *ent)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
void
|
void
|
||||||
CPhysical::AddCollisionRecord_Treadable(CEntity *ent)
|
CPhysical::AddCollisionRecord_Treadable(CEntity *ent)
|
||||||
{
|
{
|
||||||
@ -293,7 +289,6 @@ CPhysical::AddCollisionRecord_Treadable(CEntity *ent)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
bool
|
bool
|
||||||
CPhysical::GetHasCollidedWith(CEntity *ent)
|
CPhysical::GetHasCollidedWith(CEntity *ent)
|
||||||
{
|
{
|
||||||
@ -305,7 +300,6 @@ CPhysical::GetHasCollidedWith(CEntity *ent)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
void
|
void
|
||||||
CPhysical::RemoveRefsToEntity(CEntity *ent)
|
CPhysical::RemoveRefsToEntity(CEntity *ent)
|
||||||
{
|
{
|
||||||
@ -321,7 +315,6 @@ CPhysical::RemoveRefsToEntity(CEntity *ent)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
void
|
void
|
||||||
CPhysical::PlacePhysicalRelativeToOtherPhysical(CPhysical *other, CPhysical *phys, CVector localPos)
|
CPhysical::PlacePhysicalRelativeToOtherPhysical(CPhysical *other, CPhysical *phys, CVector localPos)
|
||||||
{
|
{
|
||||||
@ -338,7 +331,6 @@ CPhysical::PlacePhysicalRelativeToOtherPhysical(CPhysical *other, CPhysical *phy
|
|||||||
CWorld::Add(phys);
|
CWorld::Add(phys);
|
||||||
}
|
}
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
int32
|
int32
|
||||||
CPhysical::ProcessEntityCollision(CEntity *ent, CColPoint *colpoints)
|
CPhysical::ProcessEntityCollision(CEntity *ent, CColPoint *colpoints)
|
||||||
{
|
{
|
||||||
@ -357,7 +349,6 @@ CPhysical::ProcessEntityCollision(CEntity *ent, CColPoint *colpoints)
|
|||||||
return numSpheres;
|
return numSpheres;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
void
|
void
|
||||||
CPhysical::ProcessControl(void)
|
CPhysical::ProcessControl(void)
|
||||||
{
|
{
|
||||||
@ -425,7 +416,6 @@ CPhysical::GetSpeed(const CVector &r)
|
|||||||
return m_vecMoveSpeed + m_vecMoveFriction + CrossProduct(m_vecTurnFriction + m_vecTurnSpeed, r);
|
return m_vecMoveSpeed + m_vecMoveFriction + CrossProduct(m_vecTurnFriction + m_vecTurnSpeed, r);
|
||||||
}
|
}
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
void
|
void
|
||||||
CPhysical::ApplyMoveSpeed(void)
|
CPhysical::ApplyMoveSpeed(void)
|
||||||
{
|
{
|
||||||
@ -435,7 +425,6 @@ CPhysical::ApplyMoveSpeed(void)
|
|||||||
GetMatrix().Translate(m_vecMoveSpeed * CTimer::GetTimeStep());
|
GetMatrix().Translate(m_vecMoveSpeed * CTimer::GetTimeStep());
|
||||||
}
|
}
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
void
|
void
|
||||||
CPhysical::ApplyTurnSpeed(void)
|
CPhysical::ApplyTurnSpeed(void)
|
||||||
{
|
{
|
||||||
@ -451,14 +440,12 @@ CPhysical::ApplyTurnSpeed(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
void
|
void
|
||||||
CPhysical::ApplyMoveForce(float jx, float jy, float jz)
|
CPhysical::ApplyMoveForce(float jx, float jy, float jz)
|
||||||
{
|
{
|
||||||
m_vecMoveSpeed += CVector(jx, jy, jz)*(1.0f/m_fMass);
|
m_vecMoveSpeed += CVector(jx, jy, jz)*(1.0f/m_fMass);
|
||||||
}
|
}
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
void
|
void
|
||||||
CPhysical::ApplyTurnForce(float jx, float jy, float jz, float px, float py, float pz)
|
CPhysical::ApplyTurnForce(float jx, float jy, float jz, float px, float py, float pz)
|
||||||
{
|
{
|
||||||
@ -473,7 +460,6 @@ CPhysical::ApplyFrictionMoveForce(float jx, float jy, float jz)
|
|||||||
m_vecMoveFriction += CVector(jx, jy, jz)*(1.0f/m_fMass);
|
m_vecMoveFriction += CVector(jx, jy, jz)*(1.0f/m_fMass);
|
||||||
}
|
}
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
void
|
void
|
||||||
CPhysical::ApplyFrictionTurnForce(float jx, float jy, float jz, float px, float py, float pz)
|
CPhysical::ApplyFrictionTurnForce(float jx, float jy, float jz, float px, float py, float pz)
|
||||||
{
|
{
|
||||||
@ -482,7 +468,6 @@ CPhysical::ApplyFrictionTurnForce(float jx, float jy, float jz, float px, float
|
|||||||
m_vecTurnFriction += turnimpulse*(1.0f/m_fTurnMass);
|
m_vecTurnFriction += turnimpulse*(1.0f/m_fTurnMass);
|
||||||
}
|
}
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
bool
|
bool
|
||||||
CPhysical::ApplySpringCollision(float springConst, CVector &springDir, CVector &point, float springRatio, float bias)
|
CPhysical::ApplySpringCollision(float springConst, CVector &springDir, CVector &point, float springRatio, float bias)
|
||||||
{
|
{
|
||||||
@ -496,7 +481,6 @@ CPhysical::ApplySpringCollision(float springConst, CVector &springDir, CVector &
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
bool
|
bool
|
||||||
CPhysical::ApplySpringCollisionAlt(float springConst, CVector &springDir, CVector &point, float springRatio, float bias, CVector &forceDir)
|
CPhysical::ApplySpringCollisionAlt(float springConst, CVector &springDir, CVector &point, float springRatio, float bias, CVector &forceDir)
|
||||||
{
|
{
|
||||||
@ -514,7 +498,6 @@ CPhysical::ApplySpringCollisionAlt(float springConst, CVector &springDir, CVecto
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
// What exactly is speed?
|
// What exactly is speed?
|
||||||
bool
|
bool
|
||||||
CPhysical::ApplySpringDampening(float damping, CVector &springDir, CVector &point, CVector &speed)
|
CPhysical::ApplySpringDampening(float damping, CVector &springDir, CVector &point, CVector &speed)
|
||||||
@ -579,7 +562,6 @@ CPhysical::ApplyFriction(void)
|
|||||||
m_vecTurnFriction = CVector(0.0f, 0.0f, 0.0f);
|
m_vecTurnFriction = CVector(0.0f, 0.0f, 0.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
void
|
void
|
||||||
CPhysical::ApplyAirResistance(void)
|
CPhysical::ApplyAirResistance(void)
|
||||||
{
|
{
|
||||||
@ -698,7 +680,7 @@ CPhysical::ApplyCollision(CPhysical *B, CColPoint &colpoint, float &impulseA, fl
|
|||||||
if(model == MI_FIRE_HYDRANT && !Bobj->bHasBeenDamaged){
|
if(model == MI_FIRE_HYDRANT && !Bobj->bHasBeenDamaged){
|
||||||
CParticleObject::AddObject(POBJECT_FIRE_HYDRANT, B->GetPosition() - CVector(0.0f, 0.0f, 0.5f), true);
|
CParticleObject::AddObject(POBJECT_FIRE_HYDRANT, B->GetPosition() - CVector(0.0f, 0.0f, 0.5f), true);
|
||||||
Bobj->bHasBeenDamaged = true;
|
Bobj->bHasBeenDamaged = true;
|
||||||
}else if(model == MI_PARKINGMETER || model == MI_PARKINGMETER2){
|
}else if((model == MI_PARKINGMETER || model == MI_PARKINGMETER2) && !Bobj->bHasBeenDamaged){
|
||||||
CPickups::CreateSomeMoney(GetPosition(), CGeneral::GetRandomNumber()%100);
|
CPickups::CreateSomeMoney(GetPosition(), CGeneral::GetRandomNumber()%100);
|
||||||
Bobj->bHasBeenDamaged = true;
|
Bobj->bHasBeenDamaged = true;
|
||||||
}else if(B->IsObject() && !IsExplosiveThingModel(model))
|
}else if(B->IsObject() && !IsExplosiveThingModel(model))
|
||||||
@ -716,14 +698,17 @@ CPhysical::ApplyCollision(CPhysical *B, CColPoint &colpoint, float &impulseA, fl
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}else if(!B->bInfiniteMass)
|
}else if(!B->bInfiniteMass){
|
||||||
B->SetIsStatic(false);
|
B->SetIsStatic(false);
|
||||||
|
CWorld::Players[CWorld::PlayerInFocus].m_nHavocLevel += 2;
|
||||||
|
CStats::PropertyDestroyed += CGeneral::GetRandomNumberInRange(30, 60);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(B->GetIsStatic())
|
if(B->GetIsStatic())
|
||||||
return false;
|
return false;
|
||||||
if(!B->bInfiniteMass && !B->m_phy_flagA08)
|
if(!B->bInfiniteMass && !B->bIsStaticWaitingForCollision)
|
||||||
B->AddToMovingList();
|
B->AddToMovingList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -733,11 +718,11 @@ CPhysical::ApplyCollision(CPhysical *B, CColPoint &colpoint, float &impulseA, fl
|
|||||||
// negative if A is moving towards B
|
// negative if A is moving towards B
|
||||||
speedA = DotProduct(A->m_vecMoveSpeed, colpoint.normal);
|
speedA = DotProduct(A->m_vecMoveSpeed, colpoint.normal);
|
||||||
// positive if B is moving towards A
|
// positive if B is moving towards A
|
||||||
float speedB = DotProduct(B->m_vecMoveSpeed, colpoint.normal);
|
speedB = DotProduct(B->m_vecMoveSpeed, colpoint.normal);
|
||||||
|
|
||||||
bool affectB = false;
|
bool affectB = false;
|
||||||
float mA = A->m_fMass;;
|
float mA = A->m_fMass;
|
||||||
float mB = B->m_fMass;;
|
float mB = B->m_fMass;
|
||||||
float speedSum;
|
float speedSum;
|
||||||
if(((CPed*)A)->GetPedState() == PED_FOLLOW_PATH){
|
if(((CPed*)A)->GetPedState() == PED_FOLLOW_PATH){
|
||||||
affectB = true;
|
affectB = true;
|
||||||
@ -1009,7 +994,7 @@ CPhysical::ApplyCollisionAlt(CEntity *B, CColPoint &colpoint, float &impulse, CV
|
|||||||
Abs(m_vecMoveSpeed.z) < minspeed*2.0f)
|
Abs(m_vecMoveSpeed.z) < minspeed*2.0f)
|
||||||
impulse = -0.8f * normalSpeed * mass;
|
impulse = -0.8f * normalSpeed * mass;
|
||||||
else if(IsVehicle() && ((CVehicle*)this)->IsBoat() &&
|
else if(IsVehicle() && ((CVehicle*)this)->IsBoat() &&
|
||||||
colpoint.surfaceB == SURFACE_WOOD_SOLID && colpoint.normal.z < 0.5f)
|
(colpoint.surfaceB == SURFACE_WOOD_SOLID || colpoint.normal.z < 0.5f))
|
||||||
impulse = -(2.0f * m_fElasticity + 1.0f) * normalSpeed * mass;
|
impulse = -(2.0f * m_fElasticity + 1.0f) * normalSpeed * mass;
|
||||||
else
|
else
|
||||||
impulse = -(m_fElasticity + 1.0f) * normalSpeed * mass;
|
impulse = -(m_fElasticity + 1.0f) * normalSpeed * mass;
|
||||||
@ -1037,7 +1022,6 @@ CPhysical::ApplyCollisionAlt(CEntity *B, CColPoint &colpoint, float &impulse, CV
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
bool
|
bool
|
||||||
CPhysical::ApplyFriction(CPhysical *B, float adhesiveLimit, CColPoint &colpoint)
|
CPhysical::ApplyFriction(CPhysical *B, float adhesiveLimit, CColPoint &colpoint)
|
||||||
{
|
{
|
||||||
@ -1187,7 +1171,6 @@ CPhysical::ApplyFriction(CPhysical *B, float adhesiveLimit, CColPoint &colpoint)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
bool
|
bool
|
||||||
CPhysical::ApplyFriction(float adhesiveLimit, CColPoint &colpoint)
|
CPhysical::ApplyFriction(float adhesiveLimit, CColPoint &colpoint)
|
||||||
{
|
{
|
||||||
@ -1253,7 +1236,6 @@ CPhysical::ApplyFriction(float adhesiveLimit, CColPoint &colpoint)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
bool
|
bool
|
||||||
CPhysical::ProcessShiftSectorList(CPtrList *lists)
|
CPhysical::ProcessShiftSectorList(CPtrList *lists)
|
||||||
{
|
{
|
||||||
@ -1287,11 +1269,12 @@ CPhysical::ProcessShiftSectorList(CPtrList *lists)
|
|||||||
skipShift = false;
|
skipShift = false;
|
||||||
|
|
||||||
if(B->IsBuilding() ||
|
if(B->IsBuilding() ||
|
||||||
B->IsObject() && B->bInfiniteMass)
|
B->IsObject() && B->bInfiniteMass ||
|
||||||
|
A->IsPed() && B->IsObject() && B->GetIsStatic() && !Bobj->bHasBeenDamaged)
|
||||||
canshift = true;
|
canshift = true;
|
||||||
else
|
else
|
||||||
canshift = A->IsPed() &&
|
canshift = false;
|
||||||
B->IsObject() && B->GetIsStatic() && !Bobj->bHasBeenDamaged;
|
|
||||||
if(B == A ||
|
if(B == A ||
|
||||||
B->m_scanCode == CWorld::GetCurrentScanCode() ||
|
B->m_scanCode == CWorld::GetCurrentScanCode() ||
|
||||||
!B->bUsesCollision ||
|
!B->bUsesCollision ||
|
||||||
@ -1320,7 +1303,7 @@ CPhysical::ProcessShiftSectorList(CPtrList *lists)
|
|||||||
Aobj->m_pCollidingEntity = nil;
|
Aobj->m_pCollidingEntity = nil;
|
||||||
}else if(Aobj->m_pCollidingEntity != B){
|
}else if(Aobj->m_pCollidingEntity != B){
|
||||||
CMatrix inv;
|
CMatrix inv;
|
||||||
CVector size = CModelInfo::GetModelInfo(A->GetModelIndex())->GetColModel()->boundingBox.GetSize();
|
CVector size = CModelInfo::GetColModel(A->GetModelIndex())->boundingBox.GetSize();
|
||||||
size = A->GetMatrix() * size;
|
size = A->GetMatrix() * size;
|
||||||
if(size.z < B->GetPosition().z ||
|
if(size.z < B->GetPosition().z ||
|
||||||
(Invert(B->GetMatrix(), inv) * size).z < 0.0f){
|
(Invert(B->GetMatrix(), inv) * size).z < 0.0f){
|
||||||
@ -1338,7 +1321,7 @@ CPhysical::ProcessShiftSectorList(CPtrList *lists)
|
|||||||
Bobj->m_pCollidingEntity = nil;
|
Bobj->m_pCollidingEntity = nil;
|
||||||
}else if(Bobj->m_pCollidingEntity != A){
|
}else if(Bobj->m_pCollidingEntity != A){
|
||||||
CMatrix inv;
|
CMatrix inv;
|
||||||
CVector size = CModelInfo::GetModelInfo(B->GetModelIndex())->GetColModel()->boundingBox.GetSize();
|
CVector size = CModelInfo::GetColModel(B->GetModelIndex())->boundingBox.GetSize();
|
||||||
size = B->GetMatrix() * size;
|
size = B->GetMatrix() * size;
|
||||||
if(size.z < A->GetPosition().z ||
|
if(size.z < A->GetPosition().z ||
|
||||||
(Invert(A->GetMatrix(), inv) * size).z < 0.0f)
|
(Invert(A->GetMatrix(), inv) * size).z < 0.0f)
|
||||||
@ -1350,8 +1333,9 @@ CPhysical::ProcessShiftSectorList(CPtrList *lists)
|
|||||||
else if(A->IsPed() && IsBodyPart(B->GetModelIndex()))
|
else if(A->IsPed() && IsBodyPart(B->GetModelIndex()))
|
||||||
skipShift = true;
|
skipShift = true;
|
||||||
else if(A->IsPed() && ((CPed*)A)->m_pCollidingEntity == B ||
|
else if(A->IsPed() && ((CPed*)A)->m_pCollidingEntity == B ||
|
||||||
B->IsPed() && ((CPed*)B)->m_pCollidingEntity == A ||
|
B->IsPed() && ((CPed*)B)->m_pCollidingEntity == A)
|
||||||
A->GetModelIndex() == MI_RCBANDIT && B->IsVehicle() ||
|
skipShift = true;
|
||||||
|
else if(A->GetModelIndex() == MI_RCBANDIT && B->IsVehicle() ||
|
||||||
B->GetModelIndex() == MI_RCBANDIT && (A->IsPed() || A->IsVehicle()))
|
B->GetModelIndex() == MI_RCBANDIT && (A->IsPed() || A->IsVehicle()))
|
||||||
skipShift = true;
|
skipShift = true;
|
||||||
|
|
||||||
@ -1416,7 +1400,6 @@ CPhysical::ProcessShiftSectorList(CPtrList *lists)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
bool
|
bool
|
||||||
CPhysical::ProcessCollisionSectorList_SimpleCar(CPtrList *lists)
|
CPhysical::ProcessCollisionSectorList_SimpleCar(CPtrList *lists)
|
||||||
{
|
{
|
||||||
@ -1583,7 +1566,6 @@ collision:
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
bool
|
bool
|
||||||
CPhysical::ProcessCollisionSectorList(CPtrList *lists)
|
CPhysical::ProcessCollisionSectorList(CPtrList *lists)
|
||||||
{
|
{
|
||||||
@ -1621,9 +1603,9 @@ CPhysical::ProcessCollisionSectorList(CPtrList *lists)
|
|||||||
bool isTouching = true;
|
bool isTouching = true;
|
||||||
if(!B->bUsesCollision ||
|
if(!B->bUsesCollision ||
|
||||||
B->m_scanCode == CWorld::GetCurrentScanCode() ||
|
B->m_scanCode == CWorld::GetCurrentScanCode() ||
|
||||||
B == A ||
|
B == A)
|
||||||
!(isTouching = B->GetIsTouching(center, radius))){
|
continue;
|
||||||
if(!isTouching){
|
if(!B->GetIsTouching(center, radius)){
|
||||||
if(A->IsObject() && Aobj->m_pCollidingEntity == B)
|
if(A->IsObject() && Aobj->m_pCollidingEntity == B)
|
||||||
Aobj->m_pCollidingEntity = nil;
|
Aobj->m_pCollidingEntity = nil;
|
||||||
else if(B->IsObject() && Bobj->m_pCollidingEntity == A)
|
else if(B->IsObject() && Bobj->m_pCollidingEntity == A)
|
||||||
@ -1632,7 +1614,6 @@ CPhysical::ProcessCollisionSectorList(CPtrList *lists)
|
|||||||
Aped->m_pCollidingEntity = nil;
|
Aped->m_pCollidingEntity = nil;
|
||||||
else if(B->IsPed() && Bped->m_pCollidingEntity == A)
|
else if(B->IsPed() && Bped->m_pCollidingEntity == A)
|
||||||
Bped->m_pCollidingEntity = nil;
|
Bped->m_pCollidingEntity = nil;
|
||||||
}
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1664,7 +1645,7 @@ CPhysical::ProcessCollisionSectorList(CPtrList *lists)
|
|||||||
skipCollision = true;
|
skipCollision = true;
|
||||||
else if(Aobj->m_nCollisionDamageEffect < DAMAGE_EFFECT_SMASH_COMPLETELY){
|
else if(Aobj->m_nCollisionDamageEffect < DAMAGE_EFFECT_SMASH_COMPLETELY){
|
||||||
CMatrix inv;
|
CMatrix inv;
|
||||||
CVector size = CModelInfo::GetModelInfo(A->GetModelIndex())->GetColModel()->boundingBox.GetSize();
|
CVector size = CModelInfo::GetColModel(A->GetModelIndex())->boundingBox.GetSize();
|
||||||
size = A->GetMatrix() * size;
|
size = A->GetMatrix() * size;
|
||||||
if(size.z < B->GetPosition().z ||
|
if(size.z < B->GetPosition().z ||
|
||||||
(Invert(B->GetMatrix(), inv) * size).z < 0.0f){
|
(Invert(B->GetMatrix(), inv) * size).z < 0.0f){
|
||||||
@ -1683,7 +1664,7 @@ CPhysical::ProcessCollisionSectorList(CPtrList *lists)
|
|||||||
skipCollision = true;
|
skipCollision = true;
|
||||||
else if(Bobj->m_nCollisionDamageEffect < DAMAGE_EFFECT_SMASH_COMPLETELY){
|
else if(Bobj->m_nCollisionDamageEffect < DAMAGE_EFFECT_SMASH_COMPLETELY){
|
||||||
CMatrix inv;
|
CMatrix inv;
|
||||||
CVector size = CModelInfo::GetModelInfo(B->GetModelIndex())->GetColModel()->boundingBox.GetSize();
|
CVector size = CModelInfo::GetColModel(B->GetModelIndex())->boundingBox.GetSize();
|
||||||
size = B->GetMatrix() * size;
|
size = B->GetMatrix() * size;
|
||||||
if(size.z < A->GetPosition().z ||
|
if(size.z < A->GetPosition().z ||
|
||||||
(Invert(A->GetMatrix(), inv) * size).z < 0.0f){
|
(Invert(A->GetMatrix(), inv) * size).z < 0.0f){
|
||||||
@ -1833,7 +1814,7 @@ CPhysical::ProcessCollisionSectorList(CPtrList *lists)
|
|||||||
if(!CWorld::bNoMoreCollisionTorque &&
|
if(!CWorld::bNoMoreCollisionTorque &&
|
||||||
A->GetStatus() == STATUS_PLAYER && A->IsVehicle() &&
|
A->GetStatus() == STATUS_PLAYER && A->IsVehicle() &&
|
||||||
Abs(A->m_vecMoveSpeed.x) > 0.2f &&
|
Abs(A->m_vecMoveSpeed.x) > 0.2f &&
|
||||||
Abs(A->m_vecMoveSpeed.y) > 0.2f){
|
Abs(A->m_vecMoveSpeed.y) > 0.2f && !A->bIsInWater){
|
||||||
A->m_vecMoveFriction.x += moveSpeed.x * -0.3f / numCollisions;
|
A->m_vecMoveFriction.x += moveSpeed.x * -0.3f / numCollisions;
|
||||||
A->m_vecMoveFriction.y += moveSpeed.y * -0.3f / numCollisions;
|
A->m_vecMoveFriction.y += moveSpeed.y * -0.3f / numCollisions;
|
||||||
A->m_vecTurnFriction += turnSpeed * -0.3f / numCollisions;
|
A->m_vecTurnFriction += turnSpeed * -0.3f / numCollisions;
|
||||||
@ -1986,7 +1967,7 @@ CPhysical::ProcessCollisionSectorList(CPtrList *lists)
|
|||||||
Bobj->ObjectDamage(maxImpulseB);
|
Bobj->ObjectDamage(maxImpulseB);
|
||||||
else if(Bobj->m_nCollisionDamageEffect >= DAMAGE_EFFECT_SMASH_COMPLETELY){
|
else if(Bobj->m_nCollisionDamageEffect >= DAMAGE_EFFECT_SMASH_COMPLETELY){
|
||||||
CMatrix inv;
|
CMatrix inv;
|
||||||
CVector size = CModelInfo::GetModelInfo(B->GetModelIndex())->GetColModel()->boundingBox.GetSize();
|
CVector size = CModelInfo::GetColModel(B->GetModelIndex())->boundingBox.GetSize();
|
||||||
size = B->GetMatrix() * size;
|
size = B->GetMatrix() * size;
|
||||||
if(size.z < A->GetPosition().z ||
|
if(size.z < A->GetPosition().z ||
|
||||||
(Invert(A->GetMatrix(), inv) * size).z < 0.0f)
|
(Invert(A->GetMatrix(), inv) * size).z < 0.0f)
|
||||||
@ -2001,7 +1982,7 @@ CPhysical::ProcessCollisionSectorList(CPtrList *lists)
|
|||||||
else if(Bobj->m_nCollisionDamageEffect >= DAMAGE_EFFECT_SMASH_COMPLETELY){
|
else if(Bobj->m_nCollisionDamageEffect >= DAMAGE_EFFECT_SMASH_COMPLETELY){
|
||||||
#endif
|
#endif
|
||||||
CMatrix inv;
|
CMatrix inv;
|
||||||
CVector size = CModelInfo::GetModelInfo(A->GetModelIndex())->GetColModel()->boundingBox.GetSize();
|
CVector size = CModelInfo::GetColModel(A->GetModelIndex())->boundingBox.GetSize();
|
||||||
size = A->GetMatrix() * size;
|
size = A->GetMatrix() * size;
|
||||||
if(size.z < B->GetPosition().z ||
|
if(size.z < B->GetPosition().z ||
|
||||||
(Invert(B->GetMatrix(), inv) * size).z < 0.0f)
|
(Invert(B->GetMatrix(), inv) * size).z < 0.0f)
|
||||||
@ -2054,7 +2035,6 @@ CPhysical::CheckCollision_SimpleCar(void)
|
|||||||
|
|
||||||
float PHYSICAL_SHIFT_SPEED_DAMP = 0.707f;
|
float PHYSICAL_SHIFT_SPEED_DAMP = 0.707f;
|
||||||
|
|
||||||
// --MIAMI: Proof-read once
|
|
||||||
void
|
void
|
||||||
CPhysical::ProcessShift(void)
|
CPhysical::ProcessShift(void)
|
||||||
{
|
{
|
||||||
@ -2110,7 +2090,7 @@ CPhysical::ProcessShift(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// x is the number of units (m) we would like to step
|
// x is the number of units (m) we would like to step
|
||||||
#define NUMSTEPS(x) ceil(Sqrt(distSq) * (1.0f/(x)))
|
#define NUMSTEPS(x) Ceil(Sqrt(distSq) * (1.0f/(x)))
|
||||||
|
|
||||||
float HIGHSPEED_ELASTICITY_MULT_PED = 2.0f;
|
float HIGHSPEED_ELASTICITY_MULT_PED = 2.0f;
|
||||||
float HIGHSPEED_ELASTICITY_MULT_COPCAR = 2.0f;
|
float HIGHSPEED_ELASTICITY_MULT_COPCAR = 2.0f;
|
||||||
@ -2186,10 +2166,11 @@ CPhysical::ProcessCollision(void)
|
|||||||
m_bIsVehicleBeingShifted = false;
|
m_bIsVehicleBeingShifted = false;
|
||||||
|
|
||||||
bJustCheckCollision = true;
|
bJustCheckCollision = true;
|
||||||
|
bool savedUsesCollision = bUsesCollision;
|
||||||
bUsesCollision = false;
|
bUsesCollision = false;
|
||||||
if(!CheckCollision()){
|
if(!CheckCollision()){
|
||||||
bJustCheckCollision = false;
|
bJustCheckCollision = false;
|
||||||
bUsesCollision = true;
|
bUsesCollision = savedUsesCollision;
|
||||||
if(IsVehicle())
|
if(IsVehicle())
|
||||||
((CVehicle*)this)->bVehicleColProcessed = true;
|
((CVehicle*)this)->bVehicleColProcessed = true;
|
||||||
|
|
||||||
@ -2204,7 +2185,7 @@ CPhysical::ProcessCollision(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
bJustCheckCollision = false;
|
bJustCheckCollision = false;
|
||||||
bUsesCollision = true;
|
bUsesCollision = savedUsesCollision;
|
||||||
GetMatrix() = savedMatrix;
|
GetMatrix() = savedMatrix;
|
||||||
m_vecMoveSpeed = savedMoveSpeed;
|
m_vecMoveSpeed = savedMoveSpeed;
|
||||||
if(IsVehicle() && ((CVehicle*)this)->bIsLawEnforcer)
|
if(IsVehicle() && ((CVehicle*)this)->bIsLawEnforcer)
|
||||||
|
@ -15,8 +15,6 @@ class CTreadable;
|
|||||||
class CPhysical : public CEntity
|
class CPhysical : public CEntity
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// The not properly indented fields haven't been checked properly yet
|
|
||||||
|
|
||||||
int32 m_audioEntityId;
|
int32 m_audioEntityId;
|
||||||
float m_phys_unused1;
|
float m_phys_unused1;
|
||||||
uint32 m_nLastTimeCollided;
|
uint32 m_nLastTimeCollided;
|
||||||
|
@ -35,6 +35,8 @@ typedef void (*ReturnPrevPageFunc)();
|
|||||||
typedef void (*ChangeFunc)(int8 before, int8 after); // called after updating the value.
|
typedef void (*ChangeFunc)(int8 before, int8 after); // called after updating the value.
|
||||||
// only called on enter if onlyApplyOnEnter set, otherwise called on every value change
|
// only called on enter if onlyApplyOnEnter set, otherwise called on every value change
|
||||||
|
|
||||||
|
typedef void (*ChangeFuncFloat)(float before, float after); // called after updating the value.
|
||||||
|
|
||||||
// for dynamic options
|
// for dynamic options
|
||||||
typedef wchar* (*DrawFunc)(bool* disabled, bool userHovering); // you must return a pointer for right text.
|
typedef wchar* (*DrawFunc)(bool* disabled, bool userHovering); // you must return a pointer for right text.
|
||||||
// you can also set *disabled if you want to gray it out.
|
// you can also set *disabled if you want to gray it out.
|
||||||
|
@ -40,8 +40,8 @@ bool CPopulation::ms_bGivePedsWeapons;
|
|||||||
int32 CPopulation::m_AllRandomPedsThisType = -1;
|
int32 CPopulation::m_AllRandomPedsThisType = -1;
|
||||||
float CPopulation::PedDensityMultiplier = 1.0f;
|
float CPopulation::PedDensityMultiplier = 1.0f;
|
||||||
uint32 CPopulation::ms_nTotalMissionPeds;
|
uint32 CPopulation::ms_nTotalMissionPeds;
|
||||||
int32 CPopulation::MaxNumberOfPedsInUse = 25;
|
int32 CPopulation::MaxNumberOfPedsInUse = DEFAULT_MAX_NUMBER_OF_PEDS;
|
||||||
int32 CPopulation::MaxNumberOfPedsInUseInterior = 40;
|
int32 CPopulation::MaxNumberOfPedsInUseInterior = DEFAULT_MAX_NUMBER_OF_PEDS_INTERIOR;
|
||||||
uint32 CPopulation::ms_nNumCivMale;
|
uint32 CPopulation::ms_nNumCivMale;
|
||||||
uint32 CPopulation::ms_nNumCivFemale;
|
uint32 CPopulation::ms_nNumCivFemale;
|
||||||
uint32 CPopulation::ms_nNumCop;
|
uint32 CPopulation::ms_nNumCop;
|
||||||
@ -1095,6 +1095,7 @@ CPopulation::ManagePopulation(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
float dist = (ped->GetPosition() - playerPos).Magnitude2D();
|
float dist = (ped->GetPosition() - playerPos).Magnitude2D();
|
||||||
|
|
||||||
bool pedIsFarAway = false;
|
bool pedIsFarAway = false;
|
||||||
|
|
||||||
if (ped->IsGangMember())
|
if (ped->IsGangMember())
|
||||||
|
Loading…
Reference in New Issue
Block a user