Sfoglia il codice sorgente

Started porting SDL code

Thomas Buck 11 anni fa
parent
commit
9a3be10000
8 ha cambiato i file con 92 aggiunte e 8 eliminazioni
  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 Vedi File

30
 #################################################################
30
 #################################################################
31
 
31
 
32
 # Build warnings
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
 set (WARNINGS "${WARNINGS} -Wno-global-constructors -Wno-exit-time-destructors")
34
 set (WARNINGS "${WARNINGS} -Wno-global-constructors -Wno-exit-time-destructors")
35
 set (WARNINGS "${WARNINGS} -Wno-documentation-unknown-command -Wno-c++98-compat-pedantic")
35
 set (WARNINGS "${WARNINGS} -Wno-documentation-unknown-command -Wno-c++98-compat-pedantic")
36
 set (WARNINGS "${WARNINGS} -Wno-missing-prototypes -Wno-missing-variable-declarations")
36
 set (WARNINGS "${WARNINGS} -Wno-missing-prototypes -Wno-missing-variable-declarations")

cmake/Config.h.in → include/Config.h.in Vedi File

1
 #define VERSION "OpenRaider-@OpenRaider_VERSION_MAJOR@.@OpenRaider_VERSION_MINOR@.@OpenRaider_VERSION_MICRO@@OpenRaider_VERSION_RELEASE@ (@CMAKE_BUILD_TYPE@)"
1
 #define VERSION "OpenRaider-@OpenRaider_VERSION_MAJOR@.@OpenRaider_VERSION_MINOR@.@OpenRaider_VERSION_MICRO@@OpenRaider_VERSION_RELEASE@ (@CMAKE_BUILD_TYPE@)"
2
 #define BUILD_HOST "@OpenRaider_BUILD_HOST@"
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 Vedi File

8
 #ifndef _WINDOW_H_
8
 #ifndef _WINDOW_H_
9
 #define _WINDOW_H_
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
  * \brief Windowing interface
18
  * \brief Windowing interface
13
  */
19
  */
26
     virtual void setMousegrab(bool grab) = 0;
32
     virtual void setMousegrab(bool grab) = 0;
27
 
33
 
28
     virtual int initialize() = 0;
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
 #endif
41
 #endif

+ 3
- 0
include/WindowSDL.h Vedi File

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

+ 3
- 2
src/CMakeLists.txt Vedi File

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

+ 14
- 0
src/Window.cpp Vedi File

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 Vedi File

7
 
7
 
8
 #include <assert.h>
8
 #include <assert.h>
9
 
9
 
10
+#include "config.h"
10
 #include "WindowSDL.h"
11
 #include "WindowSDL.h"
11
 
12
 
12
 WindowSDL::WindowSDL() {
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
 WindowSDL::~WindowSDL() {
23
 WindowSDL::~WindowSDL() {
23
 
30
 
24
     mWidth = width;
31
     mWidth = width;
25
     mHeight = height;
32
     mHeight = height;
33
+
34
+    if (mInit == true) {
35
+        SDL_SetWindowSize(mWindow, mWidth, mHeight);
36
+        resizeGL(mWidth, mHeight);
37
+    }
26
 }
38
 }
27
 
39
 
28
 void WindowSDL::setFullscreen(bool fullscreen) {
40
 void WindowSDL::setFullscreen(bool fullscreen) {
29
     mFullscreen = fullscreen;
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
 void WindowSDL::setMousegrab(bool grab) {
51
 void WindowSDL::setMousegrab(bool grab) {
33
     mMousegrab = grab;
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
 int WindowSDL::initialize() {
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 Vedi File

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

Loading…
Annulla
Salva