Godzil %!s(int64=3) %!d(string=hai) anos
pai
achega
6b6b11589d
Modificáronse 1 ficheiros con 40 adicións e 4 borrados
  1. 40 4
      source/main.c

+ 40 - 4
source/main.c

@@ -25,9 +25,10 @@ int windowHeight = 600;
 
 #define color_buffer frameBuffer;
 
-bool initialiseWindow()
+bool initialiseWindow(bool fullScreen)
 {
     bool ret = false;
+    int windowFlags = 0;
 
     if (SDL_Init(SDL_INIT_EVERYTHING))
     {
@@ -37,10 +38,22 @@ bool initialiseWindow()
 
     log(TLOG_DEBUG, NULL, "SDL properly initialised!");
 
+    if (fullScreen)
+    {
+        log(TLOG_DEBUG, NULL, "Will go fullscreen! Fasten your seatbelts!");
+        SDL_DisplayMode displayMode;
+        SDL_GetCurrentDisplayMode(0, &displayMode);
+
+        windowWidth = displayMode.w;
+        windowHeight = displayMode.h;
+
+        windowFlags = SDL_WINDOW_BORDERLESS;
+    }
+
     window = SDL_CreateWindow(NULL,
                               SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
                               windowWidth, windowHeight,
-                              SDL_WINDOW_BORDERLESS);
+                              windowFlags);
     if (window == NULL)
     {
         log(TLOG_PANIC, NULL, "SDL Window creation error: %s", SDL_GetError());
@@ -48,7 +61,6 @@ bool initialiseWindow()
     }
     log(TLOG_DEBUG, NULL, "SDL Window created!");
 
-
     renderer = SDL_CreateRenderer(window, -1, 0);
     if (renderer == NULL)
     {
@@ -57,6 +69,11 @@ bool initialiseWindow()
     }
     log(TLOG_DEBUG, NULL, "SDL Renderer created!");
 
+    if (fullScreen)
+    {
+        SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN);
+    }
+
     ret = true;
 exit:
     return ret;
@@ -158,10 +175,29 @@ void destroy_window()
 
 int main(int argc, char *argv[])
 {
+    int param_i;
+    bool fullScreen = false;
     MAX_DEBUG_LEVEL = TLOG_DEBUG;
 
     log(TLOG_ALWAYS, NULL, "Booting 3D Engine (version %s)!", VERSION);
-    isRunning = initialiseWindow();
+
+    for (param_i = 1 ; (param_i < argc) && (argv[param_i][0] == '-'); param_i++)
+    {
+        switch (argv[param_i][1])
+        {
+            default: exit(-1); /* Option not recognized */
+            case 'f': fullScreen = true; break;
+            case 'w': windowWidth = atoi(argv[++param_i]); break;
+            case 'h': windowHeight = atoi(argv[++param_i]); break;
+#ifdef DYNA_LOG_LEVEL
+            case 'l': MAX_DEBUG_LEVEL = atoi(argv[++param_i]); break;
+#endif
+            case '-': goto no_more_params;
+        }
+    }
+no_more_params:
+
+    isRunning = initialiseWindow(fullScreen);
 
     setup();