]> git.jsancho.org Git - lugaru.git/commitdiff
Add an option to toggle fullscreen
authorRémi Verschelde <rverschelde@gmail.com>
Sat, 19 Nov 2016 22:41:28 +0000 (23:41 +0100)
committerRémi Verschelde <rverschelde@gmail.com>
Sun, 20 Nov 2016 10:35:07 +0000 (11:35 +0100)
Adds a command line switch, saved config option and option menu entry to
toggle fullscreen.
Also defaults to windowed mode.

Source/GameTick.cpp
Source/Globals.cpp
Source/OpenGL_Windows.cpp
Source/Settings.cpp
Source/Settings.h

index bcbce6e9bc9ce576118f70ddb4586c185fa1659c..1a743f3979536ff84e0a6d6ca002d6932cf472e9 100644 (file)
@@ -148,12 +148,13 @@ extern bool winfreeze;
 extern bool campaign;
 
 
+extern void toggleFullscreen();
+
 
 void Loadlevel(int which);
 void Loadlevel(const char *name);
 
 
-
 class CampaignLevel
 {
 private:
@@ -5795,6 +5796,7 @@ void updateSettingsMenu()
     else
         sprintf (sbuf, "Resolution: %d*%d (widescreen)", (int)newscreenwidth, (int)newscreenheight);
     Menu::setText(0, sbuf);
+    Menu::setText(14, fullscreen ? "Fullscreen: On" : "Fullscreen: Off");
     if (newdetail == 0) Menu::setText(1, "Detail: Low");
     if (newdetail == 1) Menu::setText(1, "Detail: Medium");
     if (newdetail == 2) Menu::setText(1, "Detail: High");
@@ -5875,6 +5877,7 @@ void Game::LoadMenu()
         break;
     case 3:
         Menu::addButton( 0, "", 10 + 20, 440);
+        Menu::addButton(14, "", 10 + 400, 440);
         Menu::addButton( 1, "", 10 + 60, 405);
         Menu::addButton( 2, "", 10 + 70, 370);
         Menu::addButton( 3, "", 10 + 20 - 1000, 335 - 1000);
@@ -6165,6 +6168,9 @@ void MenuTick()
             case 13:
                 showdamagebar = !showdamagebar;
                 break;
+            case 14:
+                toggleFullscreen();
+                break;
             }
             updateSettingsMenu();
             break;
index 1cb6dbf7b8ce3e84e23b81516e2b75e0217750c5..524f1fa0444e18ba075372ef284be6e5754a96d5 100644 (file)
@@ -59,6 +59,7 @@ int difficulty = 0;
 float multiplier = 0;
 float realmultiplier = 0;
 float screenwidth = 0, screenheight = 0;
+bool fullscreen = 0;
 float viewdistance = 0;
 XYZ viewer;
 XYZ viewerfacing;
index dc30a03c41b04e4fd23c0fad8318f3ef40ca8e3b..2c7272d5ec377337a3e27ac6e4eacc929afdad7c 100644 (file)
@@ -217,8 +217,9 @@ void initGL()
     }
 }
 
-static void toggleFullscreen()
+void toggleFullscreen()
 {
+    fullscreen = !fullscreen;
     Uint32 flags = SDL_GetWindowFlags(sdlwindow);
     if (flags & SDL_WINDOW_FULLSCREEN) {
         flags &= ~SDL_WINDOW_FULLSCREEN;
@@ -331,8 +332,10 @@ Boolean SetUp ()
     SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 1);
 
     Uint32 sdlflags = SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN;
-    if (!cmdline("windowed"))
+    if ((fullscreen || cmdline("fullscreen")) && !cmdline("windowed")) {
+        fullscreen = 1;
         sdlflags |= SDL_WINDOW_FULLSCREEN;
+    }
     if (!cmdline("nomousegrab"))
         sdlflags |= SDL_WINDOW_INPUT_GRABBED;
 
index 2a1ad12528edcb6cfdd608f90af90dd61dabc62b..e0b4db1a0d9c39e7d7c66b4bf1475d6fc21ca8e5 100644 (file)
@@ -32,6 +32,7 @@ void DefaultSettings()
     usermousesensitivity = 1;
     newscreenwidth = kContextWidth = 640;
     newscreenheight = kContextHeight = 480;
+    fullscreen = 0;
     kBitsPerPixel = 32;
     floatjump = 0;
     autoslomo = 1;
@@ -86,6 +87,8 @@ void SaveSettings()
     opstream << newscreenwidth;
     opstream << "\nScreenheight:\n";
     opstream << newscreenheight;
+    opstream << "\nFullscreen:\n";
+    opstream << fullscreen;
     opstream << "\nMouse sensitivity:\n";
     opstream << usermousesensitivity;
     opstream << "\nBlur(0,1):\n";
@@ -198,6 +201,8 @@ bool LoadSettings()
             ipstream >> kContextWidth;
         } else if ( !strncmp(setting, "Screenheight", 12) ) {
             ipstream >> kContextHeight;
+        } else if ( !strncmp(setting, "Fullscreen", 10) ) {
+            ipstream >> fullscreen;
         } else if ( !strncmp(setting, "Mouse sensitivity", 17) ) {
             ipstream >> usermousesensitivity;
         } else if ( !strncmp(setting, "Blur", 4) ) {
index 0cd26780871393d86267c141152c58a64754e770..e28e3467f72926f2397e73b4d82c88839499ab16 100644 (file)
@@ -54,6 +54,7 @@ extern int kBitsPerPixel;
 extern int kContextWidth;
 extern int kContextHeight;
 extern float screenwidth, screenheight;
+extern bool fullscreen;
 
 void DefaultSettings();
 void SaveSettings();