]> git.jsancho.org Git - lugaru.git/commitdiff
Merge branch 'opt-fullscreen' into 'master'
authorNeal Gompa (ニール・ゴンパ) <ngompa13@gmail.com>
Sun, 20 Nov 2016 11:23:01 +0000 (11:23 +0000)
committerNeal Gompa (ニール・ゴンパ) <ngompa13@gmail.com>
Sun, 20 Nov 2016 11:23:01 +0000 (11:23 +0000)
Option to toggle fullscreen

Adds a command line switch, saved config option and option menu entry to toggle fullscreen. It also defaults to windowed mode.

Also toggling fullscreen on does not play well with the mouse pointer (it disappears), but the same happens with Alt+Return, so it's not a regression.

Part of #15.

See merge request !4

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();