UI: Added message on pause screen in fullscreen mode (instructions to revert to window mode)

This commit is contained in:
Sour 2018-06-03 14:35:54 -04:00
parent 24f40ecb5f
commit a5756aabbe
16 changed files with 59 additions and 0 deletions

View file

@ -12,6 +12,8 @@ Language EmulationSettings::_displayLanguage = Language::English;
const vector<uint32_t> EmulationSettings::_speedValues = { { 1, 3, 6, 12, 25, 50, 75, 100, 150, 200, 250, 300, 350, 400, 450, 500, 750, 1000, 2000, 4000 } };
string EmulationSettings::_pauseScreenMessage;
SimpleLock EmulationSettings::_lock;
uint64_t EmulationSettings::_flags = 0;

View file

@ -577,6 +577,8 @@ private:
static uint32_t _currentPalette[64];
static uint8_t _paletteLut[11][64];
static string _pauseScreenMessage;
static uint64_t _flags;
static Language _displayLanguage;
@ -1460,4 +1462,14 @@ public:
MessageManager::DisplayMessage("Input", "KeyboardModeDisabled");
}
}
static void SetPauseScreenMessage(string message)
{
_pauseScreenMessage = message;
}
static string GetPauseScreenMessage()
{
return _pauseScreenMessage;
}
};

View file

@ -710,6 +710,8 @@
<Message ID="CheatsFound">{0} jocs i {1} trucs presents a la base de dades</Message>
<Message ID="CheatsImported">S'han importat {0} trucs per al joc {1}.</Message>
<Message ID="PressToExitFullscreen">Press {0} to exit fullscreen</Message>
<Message ID="RomsFound">S'han trobat {0} roms</Message>
<Message ID="RiskyOptionHint">(no recomanat)</Message>

View file

@ -739,6 +739,8 @@
<Message ID="PlayerNumber">Player {0}</Message>
<Message ID="ExpansionDevice">Expansion Device</Message>
<Message ID="PressToExitFullscreen">Press {0} to exit fullscreen</Message>
<Message ID="RomsFound">{0} roms found</Message>
<Message ID="RiskyOptionHint">(not recommended)</Message>

View file

@ -727,6 +727,8 @@
<Message ID="CheatsFound">{0} y {1} trucos de juegos presentes en la base de datos</Message>
<Message ID="CheatsImported">{0} trucos se importaron para el juego {1}.</Message>
<Message ID="PressToExitFullscreen">Press {0} to exit fullscreen</Message>
<Message ID="RomsFound">{0} roms encontradas</Message>
<Message ID="RiskyOptionHint">(no recomendado)</Message>

View file

@ -737,6 +737,8 @@
<Message ID="Disconnect">Deconnexion</Message>
<Message ID="PlayerNumber">Joueur {0}</Message>
<Message ID="PressToExitFullscreen">Quitter le mode plein écran: {0}</Message>
<Message ID="RomsFound">{0} roms trouvés</Message>
<Message ID="RiskyOptionHint">(déconseillé)</Message>

View file

@ -722,6 +722,8 @@
<Message ID="Disconnect">切断</Message>
<Message ID="PlayerNumber">プレーヤー {0}</Message>
<Message ID="PressToExitFullscreen">全画面表示モードを終了: {0}</Message>
<Message ID="RomsFound">{0}個</Message>
<Message ID="RiskyOptionHint">(推奨されません)</Message>

View file

@ -723,6 +723,8 @@
<Message ID="PlayerNumber">Jogador {0}</Message>
<Message ID="ExpansionDevice">Dispositivo de expansão</Message>
<Message ID="PressToExitFullscreen">Press {0} to exit fullscreen</Message>
<Message ID="RomsFound">{0} roms encontradas</Message>
<Message ID="RiskyOptionHint">(Não recomendado)</Message>

View file

@ -725,6 +725,8 @@
<Message ID="Disconnect">Отключиться</Message>
<Message ID="PlayerNumber">Игрок {0}</Message>
<Message ID="PressToExitFullscreen">Press {0} to exit fullscreen</Message>
<Message ID="RomsFound">{0} Найденные ROM файлы</Message>
<Message ID="RiskyOptionHint">(not recommended)</Message>

View file

@ -725,6 +725,8 @@
<Message ID="Disconnect">Відключитися</Message>
<Message ID="PlayerNumber">Гравець {0}</Message>
<Message ID="PressToExitFullscreen">Press {0} to exit fullscreen</Message>
<Message ID="RomsFound">{0} Знайдені ROM файли</Message>
<Message ID="RiskyOptionHint">(не рекомендовано)</Message>

View file

@ -440,6 +440,19 @@ namespace Mesen.GUI.Forms
enabled = false;
}
//Setup message to show on screen when paused while in fullscreen (instructions to revert to windowed mode)
InteropEmu.SetPauseScreenMessage("");
if(enabled) {
ShortcutKeyInfo shortcut = ConfigManager.Config.PreferenceInfo.ShortcutKeys1.Find(ski => ski.Shortcut == EmulatorShortcut.ToggleFullscreen);
if(shortcut == null || shortcut.KeyCombination.IsEmpty) {
shortcut = ConfigManager.Config.PreferenceInfo.ShortcutKeys2.Find(ski => ski.Shortcut == EmulatorShortcut.ToggleFullscreen);
}
if(shortcut != null && !shortcut.KeyCombination.IsEmpty) {
InteropEmu.SetPauseScreenMessage(ResourceHelper.GetMessage("PressToExitFullscreen", shortcut.KeyCombination.ToString()));
}
}
bool saveState = !_fullscreenMode;
_fullscreenMode = enabled;
mnuFullscreen.Checked = enabled;

View file

@ -190,6 +190,7 @@ namespace Mesen.GUI
[DllImport(DLLPath)] public static extern void SetNtscFilterSettings(double artifacts, double bleed, double fringing, double gamma, double resolution, double sharpness, [MarshalAs(UnmanagedType.I1)]bool mergeFields, double yFilterLength, double iFilterLength, double qFilterLength, [MarshalAs(UnmanagedType.I1)]bool verticalBlend);
[DllImport(DLLPath)] public static extern void SetInputDisplaySettings(byte visiblePorts, InputDisplayPosition displayPosition, [MarshalAs(UnmanagedType.I1)]bool displayHorizontally);
[DllImport(DLLPath)] public static extern void SetAutoSaveOptions(UInt32 delayInMinutes, [MarshalAs(UnmanagedType.I1)]bool showMessage);
[DllImport(DLLPath)] public static extern void SetPauseScreenMessage([MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(UTF8Marshaler))]string message);
[DllImport(DLLPath, EntryPoint = "GetRgbPalette")] private static extern void GetRgbPaletteWrapper(IntPtr paletteBuffer);

View file

@ -471,6 +471,7 @@ namespace InteropEmu {
DllExport void __stdcall SetRgbPalette(uint32_t *paletteBuffer) { EmulationSettings::SetRgbPalette(paletteBuffer); }
DllExport void __stdcall SetPictureSettings(double brightness, double contrast, double saturation, double hue, double scanlineIntensity) { EmulationSettings::SetPictureSettings(brightness, contrast, saturation, hue, scanlineIntensity); }
DllExport void __stdcall SetNtscFilterSettings(double artifacts, double bleed, double fringing, double gamma, double resolution, double sharpness, bool mergeFields, double yFilterLength, double iFilterLength, double qFilterLength, bool verticalBlend) { EmulationSettings::SetNtscFilterSettings(artifacts, bleed, fringing, gamma, resolution, sharpness, mergeFields, yFilterLength, iFilterLength, qFilterLength, verticalBlend, false); }
DllExport void __stdcall SetPauseScreenMessage(char* message) { EmulationSettings::SetPauseScreenMessage(message); }
DllExport void __stdcall SetInputDisplaySettings(uint8_t visiblePorts, InputDisplayPosition displayPosition, bool displayHorizontally) { EmulationSettings::SetInputDisplaySettings(visiblePorts, displayPosition, displayHorizontally); }
DllExport void __stdcall SetAutoSaveOptions(uint32_t delayInMinutes, bool showMessage) { EmulationSettings::SetAutoSaveOptions(delayInMinutes, showMessage); }

View file

@ -214,6 +214,13 @@ void SdlRenderer::DrawPauseScreen(bool disableOverlay)
XMVECTOR stringDimensions = _largeFont->MeasureString(L"PAUSE");
float* measureF = (float*)&stringDimensions;
_largeFont->DrawString(_sdlRenderer, L"PAUSE", (int)(_screenWidth / 2 - measureF[0] / 2), (int)(_screenHeight / 2 - measureF[1] / 2 - 8), 250, 235, 215);
string utf8Message = EmulationSettings::GetPauseScreenMessage();
if(utf8Message.size() > 0) {
std::wstring message = utf8::utf8::decode(utf8Message);
float width = MeasureString(message);
DrawString(message, _screenWidth - width - 20, _screenHeight - 40);
}
}
}

View file

@ -573,6 +573,13 @@ namespace NES
float x = (float)_screenWidth / 2 - stringDimensions.m128_f32[0] / 2;
float y = (float)_screenHeight / 2 - stringDimensions.m128_f32[1] / 2 - 8;
DrawString("PAUSE", x, y, Colors::AntiqueWhite, 1.0f, _largeFont.get());
string utf8Message = EmulationSettings::GetPauseScreenMessage();
if(utf8Message.size() > 0) {
std::wstring message = utf8::utf8::decode(utf8Message);
float width = MeasureString(message);
DrawString(message, _screenWidth - width - 20, _screenHeight - 40, Colors::AntiqueWhite, 1.0f, _font.get());
}
}
}