Index: binaries/data/mods/mod/gui/gui.rng =================================================================== --- binaries/data/mods/mod/gui/gui.rng +++ binaries/data/mods/mod/gui/gui.rng @@ -255,6 +255,16 @@ + + + + + + + + + + Index: binaries/data/mods/public/gui/session/minimap/MiniMap.xml =================================================================== --- binaries/data/mods/public/gui/session/minimap/MiniMap.xml +++ binaries/data/mods/public/gui/session/minimap/MiniMap.xml @@ -46,6 +46,19 @@ mouse_event_mask="texture:session/minimap-flare.png" /> + + + + + + + \ No newline at end of file Index: binaries/data/mods/public/gui/session/minimap/MiniMapDialogButton.js =================================================================== --- /dev/null +++ binaries/data/mods/public/gui/session/minimap/MiniMapDialogButton.js @@ -0,0 +1,22 @@ +/** + * If the button that this class manages is pressed, an idle unit having one of the given classes is selected. + */ +class MiniMapDialogButton +{ + constructor(miniMapDialog) + { + this.dialogButton = Engine.GetGUIObjectByName("miniMapDialogButton"); + this.dialogButton.onPress = miniMapDialog.toggle.bind(miniMapDialog); + + registerHotkeyChangeHandler(this.onHotkeyChange.bind(this)); + } + + onHotkeyChange() + { + this.dialogButton.tooltip = + colorizeHotkey("%(hotkey)s" + " ", "session.minimapdialog") + + translate(this.Tooltip); + } +} + +MiniMapDialogButton.prototype.Tooltip = markForTranslation("Open large view of mini map"); Index: binaries/data/mods/public/gui/session/minimap/MiniMapPanel.js =================================================================== --- binaries/data/mods/public/gui/session/minimap/MiniMapPanel.js +++ binaries/data/mods/public/gui/session/minimap/MiniMapPanel.js @@ -3,11 +3,12 @@ */ class MiniMapPanel { - constructor(playerViewControl, diplomacyColors, idleWorkerClasses) + constructor(playerViewControl, diplomacyColors, idleWorkerClasses, miniMapDialog) { this.diplomacyColorsButton = new MiniMapDiplomacyColorsButton(diplomacyColors); this.idleWorkerButton = new MiniMapIdleWorkerButton(playerViewControl, idleWorkerClasses); this.flareButton = new MiniMapFlareButton(playerViewControl); + this.dialogButton = new MiniMapDialogButton(miniMapDialog); this.miniMap = new MiniMap(); } Index: binaries/data/mods/public/gui/session/session.js =================================================================== --- binaries/data/mods/public/gui/session/session.js +++ binaries/data/mods/public/gui/session/session.js @@ -18,6 +18,7 @@ var g_DiplomacyDialog; var g_GameSpeedControl; var g_Menu; +var g_MiniMapDialog; var g_MiniMapPanel; var g_NetworkStatusOverlay; var g_NetworkDelayOverlay; @@ -288,7 +289,8 @@ g_DiplomacyDialog = new DiplomacyDialog(g_PlayerViewControl, g_DiplomacyColors); g_GameSpeedControl = new GameSpeedControl(g_PlayerViewControl); g_Menu = new Menu(g_PauseControl, g_PlayerViewControl, g_Chat); - g_MiniMapPanel = new MiniMapPanel(g_PlayerViewControl, g_DiplomacyColors, g_WorkerTypes); + g_MiniMapDialog = new MiniMapDialog(); + g_MiniMapPanel = new MiniMapPanel(g_PlayerViewControl, g_DiplomacyColors, g_WorkerTypes, g_MiniMapDialog); g_NetworkStatusOverlay = new NetworkStatusOverlay(); g_NetworkDelayOverlay = new NetworkDelayOverlay(); g_ObjectivesDialog = new ObjectivesDialog(g_PlayerViewControl, mapCache); @@ -511,6 +513,7 @@ g_DiplomacyDialog.close(); g_ObjectivesDialog.close(); g_TradeDialog.close(); + g_MiniMapDialog.close(); } function endGame() Index: binaries/data/mods/public/gui/session/session.xml =================================================================== --- binaries/data/mods/public/gui/session/session.xml +++ binaries/data/mods/public/gui/session/session.xml @@ -63,6 +63,7 @@ + @@ -80,7 +81,7 @@ - + Index: source/gui/ObjectTypes/CMiniMap.h =================================================================== --- source/gui/ObjectTypes/CMiniMap.h +++ source/gui/ObjectTypes/CMiniMap.h @@ -83,6 +83,11 @@ CGUISimpleSetting m_FlareAnimationSpeed; CGUISimpleSetting m_FlareLifetimeSeconds; + // Wheter clicking should move the camera + CGUISimpleSetting m_MoveCameraOnClick; + // Wheter clicking should show the camera + CGUISimpleSetting m_ShowCamera; + // Whether to draw a black square around and under the minimap. CGUISimpleSetting m_Mask; Index: source/gui/ObjectTypes/CMiniMap.cpp =================================================================== --- source/gui/ObjectTypes/CMiniMap.cpp +++ source/gui/ObjectTypes/CMiniMap.cpp @@ -145,7 +145,8 @@ m_NextBlinkTime(0.0), m_PingDuration(25.0), m_BlinkState(false), m_FlareTextureCount(this, "flare_texture_count", 0), m_FlareRenderSize(this, "flare_render_size", 0), m_FlareInterleave(this, "flare_interleave", false), m_FlareAnimationSpeed(this, "flare_animation_speed", 0.0f), - m_FlareLifetimeSeconds(this, "flare_lifetime_seconds", 0.0f) + m_FlareLifetimeSeconds(this, "flare_lifetime_seconds", 0.0f), m_MoveCameraOnClick(this, "move_camera_on_click", true), + m_ShowCamera(this, "show_camera", true) { m_Clicking = false; m_MouseHovering = false; @@ -309,6 +310,7 @@ void CMiniMap::SetCameraPositionFromMousePosition() { + if(!m_MoveCameraOnClick) return; CTerrain* terrain = g_Game->GetWorld()->GetTerrain(); CVector3D target; @@ -703,7 +705,8 @@ tech->EndPass(); - DrawViewRect(unitMatrix); + if(m_ShowCamera) + DrawViewRect(unitMatrix); while (!m_MapFlares.empty() && m_FlareLifetimeSeconds + m_MapFlares.front().time < cur_time) m_MapFlares.pop_front();