[planetblupi] 16/29: Save the window zoom and fullscreen settings in the user preferences
Didier Raboud
odyx at moszumanska.debian.org
Tue Jan 2 08:38:42 UTC 2018
This is an automated email from the git hooks/post-receive script.
odyx pushed a commit to branch debian/master
in repository planetblupi.
commit 1db67ed20012839628efba65d24ba0bee6cf449d
Author: Mathieu Schroeter <mathieu at schroetersa.ch>
Date: Thu Dec 14 23:07:17 2017 +0100
Save the window zoom and fullscreen settings in the user preferences
---
src/blupi.cxx | 16 ++++++-----
src/blupi.h | 1 +
src/event.cxx | 87 ++++++++++++++++++++++++++++-------------------------------
src/event.h | 3 ---
src/menu.cxx | 3 +--
5 files changed, 53 insertions(+), 57 deletions(-)
diff --git a/src/blupi.cxx b/src/blupi.cxx
index 515d38d..c516ff2 100644
--- a/src/blupi.cxx
+++ b/src/blupi.cxx
@@ -936,10 +936,6 @@ DoInit (int argc, char * argv[], bool & exit)
return EXIT_FAILURE;
}
- // Load all cursors
- g_pPixmap->LoadCursors (g_windowScale);
- g_pPixmap->ChangeSprite (SPRITE_WAIT); // met le sablier maison
-
// Create the sound manager.
g_pSound = new CSound;
if (g_pSound == nullptr)
@@ -981,10 +977,18 @@ DoInit (int argc, char * argv[], bool & exit)
return EXIT_FAILURE;
}
+ const bool zoom = g_windowScale;
+
g_pEvent->Create (g_pPixmap, g_pDecor, g_pSound, g_pMovie);
+
+ // Load all cursors
+ g_pPixmap->LoadCursors (g_windowScale);
+ g_pPixmap->ChangeSprite (SPRITE_WAIT); // met le sablier maison
+
g_updateThread = new std::thread (CheckForUpdates);
- g_pEvent->SetFullScreen (g_bFullScreen);
- if (!g_bFullScreen)
+ if (g_bFullScreen)
+ g_pEvent->SetFullScreen (true);
+ if (!g_bFullScreen && zoom != g_windowScale)
g_pEvent->SetWindowSize (g_windowScale);
g_pEvent->ChangePhase (EV_PHASE_INTRO1);
diff --git a/src/blupi.h b/src/blupi.h
index 49d4363..54b7bd8 100644
--- a/src/blupi.h
+++ b/src/blupi.h
@@ -29,6 +29,7 @@
extern SDL_Window * g_window;
extern SDL_Renderer * g_renderer;
extern bool g_bFullScreen;
+extern Uint8 g_windowScale;
extern bool g_restoreBugs;
extern bool g_restoreMidi;
extern bool g_enableRecorder;
diff --git a/src/event.cxx b/src/event.cxx
index 959e141..f8817bd 100644
--- a/src/event.cxx
+++ b/src/event.cxx
@@ -72,8 +72,10 @@ typedef struct {
Sint16 language;
// v1.2
Sint16 musicMidi;
+ Sint16 fullScreen;
+ Sint16 zoom;
- Sint16 reserve2[91];
+ Sint16 reserve2[89];
} DescInfo;
// Toutes les premières lettres doivent
@@ -1539,8 +1541,6 @@ CEvent::CEvent ()
{
Sint32 i;
- m_bFullScreen = false;
- m_WindowScale = 1;
m_exercice = 0;
m_mission = 0;
m_private = 0;
@@ -1657,25 +1657,22 @@ CEvent::GetMousePos ()
void
CEvent::SetFullScreen (bool bFullScreen)
{
- if (bFullScreen == m_bFullScreen)
- return;
-
int x, y;
SDL_GetMouseState (&x, &y);
- x /= m_WindowScale;
- y /= m_WindowScale;
+ x /= g_windowScale;
+ y /= g_windowScale;
- m_WindowScale = 1;
+ g_windowScale = 1;
SDL_SetWindowSize (g_window, LXIMAGE, LYIMAGE);
- m_bFullScreen = bFullScreen;
+ g_bFullScreen = bFullScreen;
SDL_SetWindowFullscreen (g_window, bFullScreen ? SDL_WINDOW_FULLSCREEN : 0);
SDL_SetWindowBordered (g_window, bFullScreen ? SDL_FALSE : SDL_TRUE);
SDL_SetWindowGrab (g_window, bFullScreen ? SDL_TRUE : SDL_FALSE);
SDL_SetWindowPosition (
g_window, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED);
- m_pPixmap->LoadCursors (m_WindowScale);
+ m_pPixmap->LoadCursors (g_windowScale);
m_pPixmap->ReloadTargetTextures ();
/* Force this update before otherwise the coordinates retrieved with
@@ -1699,16 +1696,13 @@ CEvent::SetFullScreen (bool bFullScreen)
void
CEvent::SetWindowSize (Uint8 newScale)
{
- if (newScale == m_WindowScale)
- return;
-
- auto scale = m_WindowScale;
- m_WindowScale = newScale;
+ auto scale = g_windowScale;
+ g_windowScale = newScale;
switch (newScale)
{
case 1:
case 2:
- SetWindowSize (scale, m_WindowScale);
+ SetWindowSize (scale, g_windowScale);
break;
default:
@@ -1748,12 +1742,6 @@ CEvent::SetWindowSize (Uint8 prevScale, Uint8 newScale)
CEvent::PushUserEvent (EV_WARPMOUSE, coord);
}
-Uint8
-CEvent::GetWindowScale ()
-{
- return m_WindowScale;
-}
-
// Crée le gestionnaire d'événements.
void
@@ -2092,11 +2080,11 @@ CEvent::DrawButtons ()
SetEnable (EV_BUTTON1, m_Lang != m_Languages.begin ());
SetEnable (EV_BUTTON2, m_Lang != m_Languages.end () - 1);
- SetEnable (EV_BUTTON3, !m_bFullScreen);
- SetEnable (EV_BUTTON4, m_bFullScreen);
+ SetEnable (EV_BUTTON3, !g_bFullScreen);
+ SetEnable (EV_BUTTON4, g_bFullScreen);
- SetEnable (EV_BUTTON5, !m_bFullScreen && m_WindowScale > 1);
- SetEnable (EV_BUTTON6, !m_bFullScreen && m_WindowScale < 2);
+ SetEnable (EV_BUTTON5, !g_bFullScreen && g_windowScale > 1);
+ SetEnable (EV_BUTTON6, !g_bFullScreen && g_windowScale < 2);
SetEnable (EV_BUTTON7, g_restoreMidi);
SetEnable (EV_BUTTON8, !g_restoreMidi);
@@ -2574,15 +2562,15 @@ CEvent::DrawButtons ()
DrawText (m_pPixmap, pos, lang.c_str ());
const char * text =
- m_bFullScreen ? gettext ("Fullscreen") : gettext ("Windowed");
+ g_bFullScreen ? gettext ("Fullscreen") : gettext ("Windowed");
lg = GetTextWidth (text);
pos.x = (169 + 40) - lg / 2;
pos.y = 330 - 20;
DrawText (m_pPixmap, pos, text);
- if (!m_bFullScreen)
+ if (!g_bFullScreen)
{
- snprintf (res, sizeof (res), "%dx", m_WindowScale);
+ snprintf (res, sizeof (res), "%dx", g_windowScale);
lg = GetTextWidth (res);
pos.x = (284 + 40) - lg / 2;
pos.y = 330 - 20;
@@ -2690,7 +2678,7 @@ CEvent::MousePosToSprite (Point pos)
pos.y <= POSMAPY + DIMMAPY)
sprite = SPRITE_MAP;
- if (m_bFullScreen && !m_bDemoRec && !m_bDemoPlay && m_scrollSpeed != 0)
+ if (g_bFullScreen && !m_bDemoRec && !m_bDemoPlay && m_scrollSpeed != 0)
{
if (pos.x <= 5 && pos.x >= -2)
bLeft = true;
@@ -3591,7 +3579,7 @@ CEvent::DecorAutoShift ()
m_bShift = false;
- if (!byKeyboard && (!m_bFullScreen || m_scrollSpeed == 0))
+ if (!byKeyboard && (!g_bFullScreen || m_scrollSpeed == 0))
return;
max = maxLimit - m_scrollSpeed; // max <- 3..1
@@ -4126,18 +4114,18 @@ CEvent::ChangeButtons (Sint32 message)
break;
case EV_BUTTON5:
{
- auto scale = m_WindowScale;
- if (m_WindowScale > 1)
- --m_WindowScale;
- SetWindowSize (scale, m_WindowScale);
+ auto scale = g_windowScale;
+ if (g_windowScale > 1)
+ --g_windowScale;
+ SetWindowSize (scale, g_windowScale);
break;
}
case EV_BUTTON6:
{
- auto scale = m_WindowScale;
- if (m_WindowScale < 2)
- ++m_WindowScale;
- SetWindowSize (scale, m_WindowScale);
+ auto scale = g_windowScale;
+ if (g_windowScale < 2)
+ ++g_windowScale;
+ SetWindowSize (scale, g_windowScale);
break;
}
case EV_BUTTON7:
@@ -4720,7 +4708,9 @@ CEvent::WriteInfo ()
info.language = static_cast<Sint16> (
this->GetLanguage () != this->GetStartLanguage () ? this->GetLanguage ()
: Language::undef);
- info.musicMidi = g_restoreMidi;
+ info.musicMidi = g_restoreMidi;
+ info.fullScreen = g_bFullScreen;
+ info.zoom = g_windowScale;
nb = fwrite (&info, sizeof (info), 1, file);
if (nb < 1)
@@ -4779,10 +4769,15 @@ CEvent::ReadInfo ()
this->SetLanguage (static_cast<Language> (info.language));
}
- if (
- ((info.majRev == 1 && info.minRev >= 2) || info.majRev >= 2) &&
- !(g_settingsOverload & SETTING_MIDI))
- g_restoreMidi = !!info.musicMidi;
+ if (((info.majRev == 1 && info.minRev >= 2) || info.majRev >= 2))
+ {
+ if (!(g_settingsOverload & SETTING_MIDI))
+ g_restoreMidi = !!info.musicMidi;
+ if (!(g_settingsOverload & SETTING_FULLSCREEN))
+ g_bFullScreen = !!info.fullScreen;
+ if (!(g_settingsOverload & SETTING_ZOOM))
+ g_windowScale = info.zoom;
+ }
fclose (file);
return true;
@@ -5160,7 +5155,7 @@ CEvent::DemoStep ()
}
SDL_WarpMouseInWindow (
- g_window, pos.x * m_WindowScale, pos.y * m_WindowScale);
+ g_window, pos.x * g_windowScale, pos.y * g_windowScale);
}
if (m_pDemoBuffer)
diff --git a/src/event.h b/src/event.h
index d54c433..9ffad9e 100644
--- a/src/event.h
+++ b/src/event.h
@@ -142,7 +142,6 @@ public:
void IntroStep ();
- Uint8 GetWindowScale ();
void SetWindowSize (Uint8 newScale);
void SetUpdateVersion (const std::string & version);
@@ -199,8 +198,6 @@ protected:
bool m_bSchool;
bool m_bPrivate;
bool m_bAccessBuild;
- bool m_bFullScreen;
- Uint8 m_WindowScale;
CPixmap * m_pPixmap;
CDecor * m_pDecor;
CSound * m_pSound;
diff --git a/src/menu.cxx b/src/menu.cxx
index 7b966c8..c8e492c 100644
--- a/src/menu.cxx
+++ b/src/menu.cxx
@@ -188,8 +188,7 @@ CMenu::Create (
pos.x += DIMBUTTONX / 2;
pos.y += DIMBUTTONY / 2;
SDL_WarpMouseInWindow (
- g_window, pos.x * m_pEvent->GetWindowScale (),
- pos.y * m_pEvent->GetWindowScale ());
+ g_window, pos.x * g_windowScale, pos.y * g_windowScale);
}
m_selRank = Detect (pos);
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/planetblupi.git
More information about the Pkg-games-commits
mailing list