summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/Frontend.cpp37
-rw-r--r--src/core/MenuScreens.h2
-rw-r--r--src/core/Radar.cpp4
-rw-r--r--src/skel/glfw/glfw.cpp8
4 files changed, 41 insertions, 10 deletions
diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp
index e2c2a453..06b9a151 100644
--- a/src/core/Frontend.cpp
+++ b/src/core/Frontend.cpp
@@ -901,6 +901,25 @@ CMenuManager::Draw()
bool foundTheHoveringItem = false;
wchar unicodeTemp[64];
+#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::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
+
for (int i = 0; i < NUM_MENUROWS; ++i) {
if (aScreens[m_nCurrScreen].m_aEntries[i].m_Action != MENUACTION_LABEL && aScreens[m_nCurrScreen].m_aEntries[i].m_EntryName[0] != '\0') {
wchar *rightText = nil;
@@ -5381,13 +5400,13 @@ CMenuManager::PrintController(void)
#define ZOOM(x, y, in) \
do { \
- if(fMapSize > SCREEN_WIDTH * 2 && in) \
+ if(fMapSize > SCREEN_HEIGHT * 3.0f && in) \
break; \
float z2 = in? 1.1f : 1.f/1.1f; \
fMapCenterX += (x - fMapCenterX) * (1.0f - z2); \
fMapCenterY += (y - fMapCenterY) * (1.0f - z2); \
\
- if (fMapSize < SCREEN_WIDTH / 3 && !in) \
+ if (fMapSize < SCREEN_HEIGHT / 2 && !in) \
break; \
\
fMapSize *= z2; \
@@ -5400,10 +5419,18 @@ CMenuManager::PrintMap(void)
bMenuMapActive = true;
CRadar::InitFrontEndMap();
+ // Just entered to map
if (!bMapLoaded) {
- fMapCenterX = SCREEN_WIDTH / 2;
- fMapCenterY = SCREEN_HEIGHT / 3;
- fMapSize = SCREEN_HEIGHT / CDraw::GetAspectRatio();
+ fMapSize = SCREEN_HEIGHT * 2.0f;
+ fMapCenterX = 0.0f;
+ fMapCenterY = 0.0f;
+ CVector2D radarSpacePlayer;
+ CVector2D screenSpacePlayer;
+ CRadar::TransformRealWorldPointToRadarSpace(radarSpacePlayer, CVector2D(FindPlayerCoors()));
+ CRadar::TransformRadarPointToScreenSpace(screenSpacePlayer, radarSpacePlayer);
+
+ fMapCenterX = (-screenSpacePlayer.x) + SCREEN_WIDTH / 2;
+ fMapCenterY = (-screenSpacePlayer.y) + SCREEN_HEIGHT / 2;
bMapMouseShownOnce = false;
bMapLoaded = true;
diff --git a/src/core/MenuScreens.h b/src/core/MenuScreens.h
index 339479b8..6c2ebdb8 100644
--- a/src/core/MenuScreens.h
+++ b/src/core/MenuScreens.h
@@ -459,6 +459,8 @@ const CMenuScreen aScreens[] = {
#ifdef MENU_MAP
// MENUPAGE_MAP = 59
{ "FEG_MAP", 1, MENUPAGE_NONE, MENUPAGE_NONE, 5, 2,
+ MENUACTION_UNK110, "", SAVESLOT_NONE, MENUPAGE_NONE, // to prevent cross/enter to go back
+ MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE,
},
#endif
};
diff --git a/src/core/Radar.cpp b/src/core/Radar.cpp
index 7e3d0083..9406f1bd 100644
--- a/src/core/Radar.cpp
+++ b/src/core/Radar.cpp
@@ -1435,9 +1435,9 @@ CRadar::DrawYouAreHereSprite(float x, float y)
if (show) {
float left = x - SCREEN_SCALE_X(12.0f);
- float top = y - SCREEN_SCALE_Y(2.0f);
+ float top = y;
float right = SCREEN_SCALE_X(12.0) + x;
- float bottom = y - SCREEN_SCALE_Y(26.0f);
+ float bottom = y - SCREEN_SCALE_Y(24.0f);
CentreSprite.Draw(CRect(left, top, right, bottom), CRGBA(255, 255, 255, 255));
}
MapLegendList[MapLegendCounter++] = RADAR_SPRITE_CENTRE;
diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp
index 34f24c5d..3ae363c7 100644
--- a/src/skel/glfw/glfw.cpp
+++ b/src/skel/glfw/glfw.cpp
@@ -1024,12 +1024,14 @@ void resizeCB(GLFWwindow* window, int width, int height) {
if (RwInitialised && height > 0 && width > 0) {
RwRect r;
- // TODO support resizing with mouse. Now enabling this makes weird things to trails and CameraSize messing with sizes
+ // TODO fix artifacts of resizing with mouse
+ RsGlobal.maximumHeight = height;
+ RsGlobal.maximumWidth = width;
r.x = 0;
r.y = 0;
- r.w = RsGlobal.maximumWidth;
- r.h = RsGlobal.maximumHeight;
+ r.w = width;
+ r.h = height;
RsEventHandler(rsCAMERASIZE, &r);
}