Skip to content

Commit debef0e

Browse files
committed
Ports from SDL2 to SDL3
Sets the default C version to C99 Re-worked controller handling The controller handling has been improved to allow for a more seamless connect/disconnect experience. Controllers are now loaded (if rezognized) when they are connected rather then at game boot. The tooltip system has been re-written to allow for loading 3 types of tooltips in one sitting. One for each controller type. The cost is some extra sprite memory. But in all fairness this is not a massiv impact on the game. This change introduced the `typedef struct tooltip Tooltip` as well as `enum GamepadType`.
1 parent 33817c5 commit debef0e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+888
-730
lines changed

CMakeLists.txt

Lines changed: 77 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
5656
set(OSX 1)
5757
endif()
5858

59+
if (APPLE)
60+
enable_language(OBJC)
61+
endif()
62+
5963
set (default_build_type "Release")
6064
if (NOT CMAKE_BUILD_TYPE AND default_build_type)
6165
message( STATUS "Setting default buildtype to '${default_build_type}' as none was specified")
@@ -95,61 +99,61 @@ ELSEIF ( WIN32 )
9599
"${CMAKE_C_FLAGS_RELEASE} -mwindows"
96100
)
97101
ENDIF ()
98-
#IF ( GCC )
99-
#SET (
100-
#CMAKE_C_FLAGS_DEBUG
101-
#"${CMAKE_C_FLAGS_DEBUG} -fsanitize=address -fno-omit-frame-pointer"
102-
#)
103-
#ENDIF ( GCC )
102+
IF ( GCC AND NOT MINGW )
103+
SET (
104+
CMAKE_C_FLAGS_DEBUG
105+
"${CMAKE_C_FLAGS_DEBUG} -fsanitize=address -fno-omit-frame-pointer"
106+
)
107+
ENDIF ()
104108

105109
if (STEAM)
106110
include_directories(
107111
lib/steamworks_c_wrapper/src
108112
)
109113
endif ()
110114

111-
# Include SDL2
115+
# Include SDL
112116
set(SDL_STATIC ON)
113117
set(SDL_SHARED OFF)
114118
set(SDL_TEST OFF)
115119
add_subdirectory(lib/SDL)
116-
set(SDL2_INCLUDE_DIR lib/SDL/include)
117-
set(SDL2_LIBRARY SDL2-static)
118-
set(SDL2_MAIN_LIBRARY SDL2main)
120+
set(SDL_INCLUDE_DIR lib/SDL/include)
121+
set(SDL_LIBRARY SDL3-static)
119122

120-
# Include SDL2_image/mixer/ttf
123+
# Include SDL_image/mixer/ttf
121124
set(BUILD_SHARED_LIBS OFF)
122125

123-
set(SDL2IMAGE_PNG ON)
124-
set(SDL2IMAGE_JPG ON)
125-
set(SDL2IMAGE_AVIF OFF)
126-
set(SDL2IMAGE_BMP OFF)
127-
set(SDL2IMAGE_GIF OFF)
128-
set(SDL2IMAGE_JXL OFF)
129-
set(SDL2IMAGE_LBM OFF)
130-
set(SDL2IMAGE_PCX OFF)
131-
set(SDL2IMAGE_PNM OFF)
132-
set(SDL2IMAGE_QOI OFF)
133-
set(SDL2IMAGE_SVG OFF)
134-
set(SDL2IMAGE_TGA OFF)
135-
set(SDL2IMAGE_TIF OFF)
136-
set(SDL2IMAGE_WEBP OFF)
137-
set(SDL2IMAGE_XCF OFF)
138-
set(SDL2IMAGE_XPM OFF)
139-
set(SDL2IMAGE_XV OFF)
126+
set(SDLIMAGE_PNG ON)
127+
set(SDLIMAGE_JPG ON)
128+
set(SDLIMAGE_AVIF OFF)
129+
set(SDLIMAGE_BMP OFF)
130+
set(SDLIMAGE_GIF OFF)
131+
set(SDLIMAGE_JXL OFF)
132+
set(SDLIMAGE_LBM OFF)
133+
set(SDLIMAGE_PCX OFF)
134+
set(SDLIMAGE_PNM OFF)
135+
set(SDLIMAGE_QOI OFF)
136+
set(SDLIMAGE_SVG OFF)
137+
set(SDLIMAGE_TGA OFF)
138+
set(SDLIMAGE_TIF OFF)
139+
set(SDLIMAGE_WEBP OFF)
140+
set(SDLIMAGE_XCF OFF)
141+
set(SDLIMAGE_XPM OFF)
142+
set(SDLIMAGE_XV OFF)
140143
add_subdirectory(lib/SDL_image)
141-
set(SDL2_IMAGE_INCLUDE_DIR lib/SDL_image/include)
142-
set(SDL2_IMAGE_LIBRARY SDL2_image)
144+
set(SDL_IMAGE_INCLUDE_DIR lib/SDL_image/include)
145+
set(SDL_IMAGE_LIBRARY SDL3_image-static)
143146

144147
# opusfile caused issues in macos build and we don't need it anyways
145-
set(SDL2MIXER_OPUS OFF)
148+
set(SDLMIXER_OPUS OFF)
146149
add_subdirectory(lib/SDL_mixer)
147-
set(SDL2_MIXER_INCLUDE_DIR lib/SDL_mixer/include)
148-
set(SDL2_MIXER_LIBRARY SDL2_mixer)
150+
set(SDL_MIXER_INCLUDE_DIR lib/SDL_mixer/include)
151+
set(SDL_MIXER_LIBRARY SDL3_mixer-static)
149152

153+
set(SDLTTF_VENDORED ON)
150154
add_subdirectory(lib/SDL_ttf)
151-
set(SDL2_TTF_INCLUDE_DIR lib/SDL_ttf/include)
152-
set(SDL2_TTF_LIBRARY SDL2_ttf)
155+
set(SDL_TTF_INCLUDE_DIR lib/SDL_ttf/include)
156+
set(SDL_TTF_LIBRARY SDL3_ttf-static)
153157

154158
# Include lua lib
155159
add_subdirectory(lib/lua-5.3.5)
@@ -164,38 +168,12 @@ include_directories(lib/physfs-3.0/src)
164168
set(PHYSFS_LIBRARY physfs-static)
165169
set(PHYSFS_INCLUDE_DIR physfs-3.0/src)
166170

167-
include_directories(
168-
${PROJECT_BINARY_DIR}
169-
${SDL2_INCLUDE_DIR}
170-
${SDL2_IMAGE_INCLUDE_DIR}
171-
${SDL2_TTF_INCLUDE_DIR}
172-
${SDL2_MIXER_INCLUDE_DIR}
173-
${PHYSFS_INCLUDE_DIR}
174-
${LUA_INCLUDE_DIR}
175-
lib/sqlite3
176-
lib/bh_random/src
177-
lib/checksum/src
178-
)
179-
180171
if (CMOCKA_FOUND)
181172
include_directories(
182173
${CMOCKA_INCLUDE_DIR}
183174
)
184175
endif(CMOCKA_FOUND)
185176

186-
if (NOT MSVC)
187-
add_definitions(-std=gnu11
188-
-pedantic -Wall -Wextra -Wshadow
189-
-Wpointer-arith -Wcast-qual
190-
-Wstrict-prototypes
191-
-Wmissing-prototypes
192-
-Wconversion -Wno-sign-conversion
193-
)
194-
if (NOT APPLE)
195-
add_definitions(-static -static-libgcc -static-libstdc++)
196-
endif ()
197-
endif (NOT MSVC)
198-
199177
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG")
200178
if (STEAM)
201179
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSTEAM_BUILD")
@@ -273,10 +251,39 @@ add_executable(breakhack
273251
src/object.c
274252
src/gui_util.c
275253
src/tooltip.c
254+
src/tooltip_manager.c
276255
src/gamecontroller.c
277256
src/effect_util.c
278257
${STEAM_SOURCES}
279258
)
259+
set_property(TARGET breakhack PROPERTY C_STANDARD 99)
260+
261+
set(INCLUDE_DIRS
262+
${PROJECT_BINARY_DIR}
263+
${SDL_INCLUDE_DIR}
264+
${SDL_IMAGE_INCLUDE_DIR}
265+
${SDL_TTF_INCLUDE_DIR}
266+
${SDL_MIXER_INCLUDE_DIR}
267+
${PHYSFS_INCLUDE_DIR}
268+
${LUA_INCLUDE_DIR}
269+
lib/sqlite3
270+
lib/bh_random/src
271+
lib/checksum/src
272+
)
273+
274+
target_include_directories(breakhack PRIVATE ${INCLUDE_DIRS})
275+
276+
if (NOT MSVC)
277+
set_target_properties(breakhack PROPERTIES COMPILE_FLAGS
278+
-std=gnu11 -pedantic -Wall -Wextra -Wshadow
279+
-Wpointer-arith -Wcast-qual -Wstrict-prototypes
280+
-Wmissing-prototypes -Wconversion -Wno-sign-conversion
281+
)
282+
if (NOT APPLE)
283+
add_definitions(-static -static-libgcc -static-libstdc++)
284+
endif ()
285+
endif (NOT MSVC)
286+
280287
281288
if (MSVC)
282289
source_group("Header files" REGULAR_EXPRESSION ".*\\.h")
@@ -288,22 +295,16 @@ set_source_files_properties(lib/sqlite3/sqlite3.c COMPILE_FLAGS -w)
288295
289296
target_link_libraries(breakhack
290297
${CMAKE_DL_LIBS} # Sqlite needs DL libs
291-
${SDL2_LIBRARY}
292-
${SDL2_IMAGE_LIBRARY}
293-
${SDL2_TTF_LIBRARY}
294-
${SDL2_MIXER_LIBRARY}
298+
${SDL_LIBRARY}
299+
${SDL_IMAGE_LIBRARY}
300+
${SDL_TTF_LIBRARY}
301+
${SDL_MIXER_LIBRARY}
295302
${LUA_LIBRARIES}
296303
${PHYSFS_LIBRARY}
297304
bh_random
298305
checksum
299306
)
300307
301-
if (MSVC OR MINGW)
302-
target_link_libraries(breakhack
303-
${SDL2_MAIN_LIBRARY}
304-
)
305-
endif ()
306-
307308
if (STEAM)
308309
target_link_libraries(breakhack
309310
${STEAMWORKS_LIBRARY}
@@ -325,24 +326,26 @@ IF (CMOCKA_FOUND AND NOT OSX AND NOT CLANG)
325326
find_package(Threads REQUIRED)
326327
enable_testing()
327328
add_executable(test_util test/test_util.c src/util.c)
329+
target_include_directories(test_util PRIVATE ${INCLUDE_DIRS})
328330
target_link_libraries(test_util ${CMOCKA_LIBRARY})
329331
add_test(test_util test_util)
330332
331333
add_executable(test_linkedlist test/test_linkedlist.c src/linkedlist.c src/util.c)
334+
target_include_directories(test_linkedlist PRIVATE ${INCLUDE_DIRS})
332335
target_link_libraries(test_linkedlist ${CMOCKA_LIBRARY})
333336
add_test(test_linkedlist test_linkedlist)
334337
335338
add_executable(test_hashtable test/test_hashtable.c src/hashtable.c src/util.c)
339+
target_include_directories(test_hashtable PRIVATE ${INCLUDE_DIRS})
336340
target_link_libraries(test_hashtable ${CMOCKA_LIBRARY})
337341
add_test(test_hashtable test_hashtable)
338342
339343
add_executable(test_input test/test_input.c src/input.c src/keyboard.c)
344+
target_include_directories(test_input PRIVATE ${INCLUDE_DIRS})
340345
target_link_libraries(test_input
341346
${CMOCKA_LIBRARY}
342-
${SDL2_LIBRARY}
347+
${SDL_LIBRARY}
343348
)
344-
#set_target_properties(test_input PROPERTIES
345-
#LINK_FLAGS "-Wl,--wrap,keyboard_direction_press -Wl,--wrap,keyboard_press")
346349
add_test(test_input test_input)
347350
ENDIF ()
348351

Makefile

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ windows:
1313
clean:
1414
@cmake --build build/debug --target clean
1515
@cmake --build build/release --target clean
16-
@cmake --build build/win-release --target clean
16+
@if [ -d build/win-release ]; then cmake --build build/win-release --target clean; fi
1717
.PHONY: clean
1818

1919
test:
@@ -43,19 +43,22 @@ install:
4343

4444
setup:
4545
@mkdir -p build/debug
46-
@mkdir -p build/release
47-
@mkdir -p build/win-release
4846
@cmake -B build/debug -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=YES -GNinja
47+
@mkdir -p build/release
4948
@cmake -B build/release -DCMAKE_BUILD_TYPE=Release -GNinja
49+
@ln -fs build/debug/compile_commands.json
50+
@echo "Setup complete"
51+
.PHONY: setup
52+
53+
setup-win:
54+
@mkdir -p build/win-release
5055
@cmake -B build/win-release \
5156
-DCMAKE_BUILD_TYPE=Release \
5257
-DCMAKE_TOOLCHAIN_FILE=build_deps/toolchains/mingw-w64-i686.cmake \
53-
-DSDL2MIXER_VENDORED=ON \
54-
-DSDL2TTF_VENDORED=ON \
58+
-DSDLMIXER_VENDORED=ON \
59+
-DSDLTTF_VENDORED=ON \
5560
-GNinja
56-
@ln -fs build/debug/compile_commands.json
57-
@echo "Setup complete"
58-
.PHONY: setup
61+
.PHONY: setup-win
5962

6063
teardown:
6164
@rm -rf build

lib/SDL

Submodule SDL updated 2543 files

lib/SDL_image

Submodule SDL_image updated 493 files

lib/SDL_mixer

Submodule SDL_mixer updated 489 files

lib/SDL_ttf

Submodule SDL_ttf updated 456 files

src/actiontext.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
#ifndef ACTIONTEXT_H_
2020
#define ACTIONTEXT_H_
2121

22-
#include <SDL.h>
22+
#include <SDL3/SDL.h>
2323
#include <stdbool.h>
2424

2525
#include "position.h"

src/actiontextbuilder.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
#ifndef ACTIONTEXTBUILDER_H_
2020
#define ACTIONTEXTBUILDER_H_
2121

22-
#include <SDL.h>
22+
#include <SDL3/SDL.h>
2323
#include "actiontext.h"
2424
#include "camera.h"
2525
#include "update_data.h"

src/animation.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
#ifndef _ANIMATION_H
2020
#define _ANIMATION_H
2121

22-
#include <SDL.h>
22+
#include <SDL3/SDL.h>
2323
#include <stdbool.h>
2424

2525
typedef struct Timer Timer;

src/camera.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
#ifndef CAMERA_H_
2020
#define CAMERA_H_
2121

22-
#include <SDL.h>
22+
#include <SDL3/SDL.h>
2323

2424
#include "position.h"
2525
#include "timer.h"

0 commit comments

Comments
 (0)