diff options
| author | Bastien Bouclet | 2019-11-07 11:02:00 +0100 | 
|---|---|---|
| committer | Bastien Bouclet | 2019-11-07 11:02:00 +0100 | 
| commit | 6901ee0242c128d3b6026f83a10da4ca90e265e0 (patch) | |
| tree | aa901fd36658b97bae8f3e83c21aafa37a2b1595 /backends/platform/3ds/osystem-events.cpp | |
| parent | e34d27c1bdc7b58368767d250494ad5946a0bf67 (diff) | |
| download | scummvm-rg350-6901ee0242c128d3b6026f83a10da4ca90e265e0.tar.gz scummvm-rg350-6901ee0242c128d3b6026f83a10da4ca90e265e0.tar.bz2 scummvm-rg350-6901ee0242c128d3b6026f83a10da4ca90e265e0.zip  | |
3DS: Use the full resolution for the overlay on the top screen
Diffstat (limited to 'backends/platform/3ds/osystem-events.cpp')
| -rw-r--r-- | backends/platform/3ds/osystem-events.cpp | 77 | 
1 files changed, 52 insertions, 25 deletions
diff --git a/backends/platform/3ds/osystem-events.cpp b/backends/platform/3ds/osystem-events.cpp index 8c06187b09..fb30d665a0 100644 --- a/backends/platform/3ds/osystem-events.cpp +++ b/backends/platform/3ds/osystem-events.cpp @@ -22,13 +22,14 @@  #define FORBIDDEN_SYMBOL_EXCEPTION_time_h -#include "osystem.h" +#include "backends/platform/3ds/osystem.h" + +#include "backends/platform/3ds/config.h" +#include "backends/platform/3ds/options-dialog.h"  #include "backends/timer/default/default-timer.h" -#include "gui/gui-manager.h" +#include "common/translation.h"  #include "engines/engine.h" -#include "gui.h" -#include "options-dialog.h" -#include "config.h" +#include "gui/gui-manager.h"  namespace _3DS { @@ -149,29 +150,29 @@ static void eventThreadFunc(void *arg) {  		if (keysPressed & KEY_L) {  			if (g_gui.isActive()) {  				// TODO: Prevent the magnify effect from updating while the GUI is active -				osys->displayMessageOnOSD("Magnify Mode cannot be activated in menus."); +				osys->displayMessageOnOSD(_("Magnify Mode cannot be activated in menus."));  			} else if (config.screen != kScreenBoth && osys->getMagnifyMode() == MODE_MAGOFF) {  				// TODO: Automatically enable both screens while magnify mode is on -				osys->displayMessageOnOSD("Magnify Mode can only be activated\n when both screens are enabled."); +				osys->displayMessageOnOSD(_("Magnify Mode can only be activated\n when both screens are enabled."));  			} else if (osys->getWidth() <= 400 && osys->getHeight() <= 240) { -				osys->displayMessageOnOSD("In-game resolution too small to magnify."); +				osys->displayMessageOnOSD(_("In-game resolution too small to magnify."));  			} else {  				if (osys->getMagnifyMode() == MODE_MAGOFF) {  					osys->setMagnifyMode(MODE_MAGON);  					if (inputMode == MODE_DRAG) {  						inputMode = MODE_HOVER; -						osys->displayMessageOnOSD("Magnify Mode On. Switching to Hover Mode..."); +						osys->displayMessageOnOSD(_("Magnify Mode On. Switching to Hover Mode..."));  					} else { -						osys->displayMessageOnOSD("Magnify Mode On"); +						osys->displayMessageOnOSD(_("Magnify Mode On"));  					}  				} else {  					osys->setMagnifyMode(MODE_MAGOFF);  					osys->updateSize();  					if (savedInputMode == MODE_DRAG) {  						inputMode = savedInputMode; -						osys->displayMessageOnOSD("Magnify Mode Off. Reactivating Drag Mode..."); +						osys->displayMessageOnOSD(_("Magnify Mode Off. Reactivating Drag Mode..."));  					} else { -						osys->displayMessageOnOSD("Magnify Mode Off"); +						osys->displayMessageOnOSD(_("Magnify Mode Off"));  					}  				}  			} @@ -179,13 +180,13 @@ static void eventThreadFunc(void *arg) {  		if (keysPressed & KEY_R) {  			if (inputMode == MODE_DRAG) {  				inputMode = savedInputMode = MODE_HOVER; -				osys->displayMessageOnOSD("Hover Mode"); +				osys->displayMessageOnOSD(_("Hover Mode"));  			} else {  				if (osys->getMagnifyMode() == MODE_MAGOFF) {  					inputMode = savedInputMode = MODE_DRAG; -					osys->displayMessageOnOSD("Drag Mode"); +					osys->displayMessageOnOSD(_("Drag Mode"));  				} else -					osys->displayMessageOnOSD("Cannot Switch to Drag Mode while Magnify Mode is On"); +					osys->displayMessageOnOSD(_("Cannot Switch to Drag Mode while Magnify Mode is On"));  			}  		}  		if (keysPressed & KEY_A || keysPressed & KEY_DLEFT || keysReleased & KEY_A || keysReleased & KEY_DLEFT) { @@ -238,9 +239,9 @@ static void eventThreadFunc(void *arg) {  				osys->updateSize();  				if (savedInputMode == MODE_DRAG) {  					inputMode = savedInputMode; -					osys->displayMessageOnOSD("Magnify Mode Off. Reactivating Drag Mode.\nReturning to Launcher..."); +					osys->displayMessageOnOSD(_("Magnify Mode Off. Reactivating Drag Mode.\nReturning to Launcher..."));  				} else -					osys->displayMessageOnOSD("Magnify Mode Off. Returning to Launcher..."); +					osys->displayMessageOnOSD(_("Magnify Mode Off. Returning to Launcher..."));  			}  		} @@ -309,8 +310,12 @@ void OSystem_3DS::destroyEvents() {  void OSystem_3DS::transformPoint(touchPosition &point) {  	if (!_overlayVisible) { -		point.px = static_cast<float>(point.px) / _gameBottomTexture.getScaleX() - _gameBottomX; -		point.py = static_cast<float>(point.py) / _gameBottomTexture.getScaleY() - _gameBottomY; +		point.px = static_cast<float>(point.px) / _gameBottomTexture.getScaleX() - _gameBottomTexture.getPosX(); +		point.py = static_cast<float>(point.py) / _gameBottomTexture.getScaleY() - _gameBottomTexture.getPosY(); +	} else { +		if (config.screen == kScreenTop) { +			point.px = (uint32) point.px * 400 / 320; // TODO: Fix horizontal speed +		}  	}  } @@ -323,12 +328,7 @@ bool OSystem_3DS::pollEvent(Common::Event &event) {  	if (optionMenuOpening) {  		optionMenuOpening = false; -		OptionsDialog dialog; -		if (g_engine) -			g_engine->pauseEngine(true); -		dialog.runModal(); -		if (g_engine) -			g_engine->pauseEngine(false); +		runOptionsDialog();  	}  	Common::StackLock lock(*eventMutex); @@ -340,4 +340,31 @@ bool OSystem_3DS::pollEvent(Common::Event &event) {  	return true;  } +void OSystem_3DS::runOptionsDialog() { +	OptionsDialog dialog; +	if (g_engine) +		g_engine->pauseEngine(true); +	int result = dialog.runModal(); +	if (g_engine) +		g_engine->pauseEngine(false); + +	if (result > 0) { +		int oldScreen = config.screen; + +		config.showCursor   = dialog.getShowCursor(); +		config.snapToBorder = dialog.getSnapToBorder(); +		config.stretchToFit = dialog.getStretchToFit(); +		config.sensitivity  = dialog.getSensitivity(); +		config.screen       = dialog.getScreen(); + +		saveConfig(); +		loadConfig(); + +		if (config.screen != oldScreen) { +			_screenChangeId++; +			g_gui.checkScreenChange(); +		} +	} +} +  } // namespace _3DS  | 
