[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