Thomas Buck 11 лет назад
Родитель
Сommit
9a3be10000
8 измененных файлов: 92 добавлений и 8 удалений
  1. 1
    1
      CMakeLists.txt
  2. 4
    0
      include/Config.h.in
  3. 10
    0
      include/Window.h
  4. 3
    0
      include/WindowSDL.h
  5. 3
    2
      src/CMakeLists.txt
  6. 14
    0
      src/Window.cpp
  7. 57
    2
      src/WindowSDL.cpp
  8. 0
    3
      src/main.cpp

+ 1
- 1
CMakeLists.txt Просмотреть файл

@@ -30,7 +30,7 @@ set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
30 30
 #################################################################
31 31
 
32 32
 # Build warnings
33
-set (WARNINGS "${WARNINGS} -Weverything -Wno-padded -Wno-packed -Wno-weak-vtables")
33
+set (WARNINGS "${WARNINGS} -Weverything -Wno-padded -Wno-packed")
34 34
 set (WARNINGS "${WARNINGS} -Wno-global-constructors -Wno-exit-time-destructors")
35 35
 set (WARNINGS "${WARNINGS} -Wno-documentation-unknown-command -Wno-c++98-compat-pedantic")
36 36
 set (WARNINGS "${WARNINGS} -Wno-missing-prototypes -Wno-missing-variable-declarations")

cmake/Config.h.in → include/Config.h.in Просмотреть файл

@@ -1,3 +1,7 @@
1 1
 #define VERSION "OpenRaider-@OpenRaider_VERSION_MAJOR@.@OpenRaider_VERSION_MINOR@.@OpenRaider_VERSION_MICRO@@OpenRaider_VERSION_RELEASE@ (@CMAKE_BUILD_TYPE@)"
2 2
 #define BUILD_HOST "@OpenRaider_BUILD_HOST@"
3 3
 
4
+#define DEFAULT_CONFIG_PATH "~/.OpenRaider/"
5
+#define DEFAULT_CONFIG_FILE "OpenRaider.init"
6
+#define DEFAULT_WIDTH 640
7
+#define DEFAULT_HEIGHT 480

+ 10
- 0
include/Window.h Просмотреть файл

@@ -8,6 +8,12 @@
8 8
 #ifndef _WINDOW_H_
9 9
 #define _WINDOW_H_
10 10
 
11
+typedef struct {
12
+    char *text;
13
+    unsigned int x;
14
+    unsigned int y;
15
+} WindowString;
16
+
11 17
 /*!
12 18
  * \brief Windowing interface
13 19
  */
@@ -26,6 +32,10 @@ public:
26 32
     virtual void setMousegrab(bool grab) = 0;
27 33
 
28 34
     virtual int initialize() = 0;
35
+
36
+    virtual void writeString(WindowString *s) = 0;
37
+
38
+    virtual void resizeGL(unsigned int width, unsigned int height);
29 39
 };
30 40
 
31 41
 #endif

+ 3
- 0
include/WindowSDL.h Просмотреть файл

@@ -36,7 +36,10 @@ public:
36 36
 
37 37
     virtual int initialize();
38 38
 
39
+    virtual void writeString(WindowString *s);
40
+
39 41
 private:
42
+    bool mInit;
40 43
     unsigned int mWidth;
41 44
     unsigned int mHeight;
42 45
     bool mFullscreen;

+ 3
- 2
src/CMakeLists.txt Просмотреть файл

@@ -34,6 +34,7 @@ set (LIBS ${LIBS} ${ZLIB_LIBRARIES})
34 34
 set (SRCS ${SRCS} "main.cpp")
35 35
 set (SRCS ${SRCS} "OpenRaider.cpp")
36 36
 set (SRCS ${SRCS} "Sound.cpp")
37
+set (SRCS ${SRCS} "Window.cpp")
37 38
 
38 39
 # Select available Windowing library
39 40
 if (SDL2_FOUND AND SDL2TTF_FOUND)
@@ -47,7 +48,7 @@ endif (SDL2_FOUND AND SDL2TTF_FOUND)
47 48
 
48 49
 # Configuration Header file
49 50
 configure_file (
50
-    "${PROJECT_SOURCE_DIR}/cmake/Config.h.in"
51
+    "${PROJECT_SOURCE_DIR}/include/Config.h.in"
51 52
     "${PROJECT_BINARY_DIR}/Config.h"
52 53
 )
53 54
 
@@ -105,7 +106,7 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
105 106
 
106 107
     # Display message if something is enabled
107 108
     if (NOT "${SSE_FOUND_MSG}" STREQUAL "")
108
-        message ("Enabled${SSE_FOUND_MSG}...")
109
+        message (STATUS "Enabled${SSE_FOUND_MSG}...")
109 110
     endif (NOT "${SSE_FOUND_MSG}" STREQUAL "")
110 111
 endif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
111 112
 

+ 14
- 0
src/Window.cpp Просмотреть файл

@@ -0,0 +1,14 @@
1
+/*!
2
+ * \file src/Window.cpp
3
+ * \brief windowing implementation
4
+ *
5
+ * \author xythobuz
6
+ */
7
+
8
+
9
+#include "Window.h"
10
+
11
+void Window::resizeGL(unsigned int width, unsigned int height) {
12
+
13
+}
14
+

+ 57
- 2
src/WindowSDL.cpp Просмотреть файл

@@ -7,10 +7,17 @@
7 7
 
8 8
 #include <assert.h>
9 9
 
10
+#include "config.h"
10 11
 #include "WindowSDL.h"
11 12
 
12 13
 WindowSDL::WindowSDL() {
13
-
14
+    mInit = false;
15
+    mWidth = DEFAULT_WIDTH;
16
+    mHeight = DEFAULT_HEIGHT;
17
+    mFullscreen = false;
18
+    mMousegrab = false;
19
+    mWindow = NULL;
20
+    mGLContext = NULL;
14 21
 }
15 22
 
16 23
 WindowSDL::~WindowSDL() {
@@ -23,17 +30,65 @@ void WindowSDL::setSize(unsigned int width, unsigned int height) {
23 30
 
24 31
     mWidth = width;
25 32
     mHeight = height;
33
+
34
+    if (mInit == true) {
35
+        SDL_SetWindowSize(mWindow, mWidth, mHeight);
36
+        resizeGL(mWidth, mHeight);
37
+    }
26 38
 }
27 39
 
28 40
 void WindowSDL::setFullscreen(bool fullscreen) {
29 41
     mFullscreen = fullscreen;
42
+
43
+    if (mInit == true) {
44
+        if (mFullscreen)
45
+            SDL_SetWindowFullscreen(mWindow, SDL_WINDOW_FULLSCREEN_DESKTOP);
46
+        else
47
+            SDL_SetWindowFullscreen(mWindow, 0);
48
+    }
30 49
 }
31 50
 
32 51
 void WindowSDL::setMousegrab(bool grab) {
33 52
     mMousegrab = grab;
53
+
54
+    if (mInit == true) {
55
+        if (mMousegrab) {
56
+            SDL_SetRelativeMouseMode(SDL_TRUE);
57
+        } else {
58
+            SDL_SetRelativeMouseMode(SDL_FALSE);
59
+            SDL_ShowCursor(1);
60
+        }
61
+    }
34 62
 }
35 63
 
36 64
 int WindowSDL::initialize() {
37
-    return -1;
65
+    SDL_Init(SDL_INIT_VIDEO);
66
+
67
+    mInit = true;
68
+
69
+    int flags = SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE;
70
+    if (mFullscreen)
71
+        flags |= SDL_WINDOW_FULLSCREEN;
72
+
73
+    setMousegrab(mMousegrab);
74
+
75
+    SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5);
76
+    SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 5);
77
+    SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5);
78
+    SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);
79
+    SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
80
+
81
+    mWindow = SDL_CreateWindow(VERSION, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
82
+                mWidth, mHeight, flags);
83
+    mGLContext = SDL_GL_CreateContext(mWindow);
84
+    setSize(mWidth, mHeight);
85
+
86
+    return 0;
87
+}
88
+
89
+void WindowSDL::writeString(WindowString *s) {
90
+    assert(s != NULL);
91
+    assert(s->text != NULL);
92
+    assert(mInit == true);
38 93
 }
39 94
 

+ 0
- 3
src/main.cpp Просмотреть файл

@@ -13,9 +13,6 @@
13 13
 #include "OpenRaider.h"
14 14
 #include "main.h"
15 15
 
16
-#define DEFAULT_CONFIG_PATH "~/.OpenRaider/"
17
-#define DEFAULT_CONFIG_FILE "OpenRaider.init"
18
-
19 16
 OpenRaider *gOpenRaider = NULL;
20 17
 
21 18
 void cleanupHandler() {

Загрузка…
Отмена
Сохранить