Windows almost supported, still needed to replace getdelim func.
This commit is contained in:
parent
7cf84ecd7a
commit
0b5d3892dd
2
Makefile
2
Makefile
|
|
@ -56,7 +56,7 @@ ASSETS_DIR := $(ROOT)/$(ASSETS_DIR)
|
||||||
ASSET_BUILDER_DIR := $(ROOT)/$(ASSET_BUILDER_DIR)
|
ASSET_BUILDER_DIR := $(ROOT)/$(ASSET_BUILDER_DIR)
|
||||||
|
|
||||||
OUTPUT := $(BUILD_DIR)/$(OUTPUT)$(OUTPUT_EXT)
|
OUTPUT := $(BUILD_DIR)/$(OUTPUT)$(OUTPUT_EXT)
|
||||||
LIBCORE := $(BUILD_DIR)/libcore$(LIB_OUTPUT_EXT)
|
LIBCORE := $(BUILD_DIR)/libcore$(STATIC_LIB_OUTPUT_EXT)
|
||||||
ASSET_OUTPUT := $(BUILD_DIR)/$(ASSET_OUTPUT)
|
ASSET_OUTPUT := $(BUILD_DIR)/$(ASSET_OUTPUT)
|
||||||
ASSET_BUILDER_OUTPUT := $(BUILD_DIR)/asset_builder/asset_builder$(OUTPUT_EXT)
|
ASSET_BUILDER_OUTPUT := $(BUILD_DIR)/asset_builder/asset_builder$(OUTPUT_EXT)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,6 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
CONFIG_FILE="config.mk"
|
CONFIG_FILE="config.mk"
|
||||||
CACHE_DIR="cache"
|
|
||||||
LIB_DIR="lib"
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Main
|
# Main
|
||||||
|
|
@ -79,7 +77,7 @@ done
|
||||||
## Clean
|
## Clean
|
||||||
if [ -n "${CLEAN}" ]; then
|
if [ -n "${CLEAN}" ]; then
|
||||||
make clean-all
|
make clean-all
|
||||||
rm -rf ${CONFIG_FILE} ${CACHE_DIR} ${LIB_DIR}
|
rm -rf ${CONFIG_FILE}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "${EXIT_AFTER_CLEAN}" ]; then
|
if [ -n "${EXIT_AFTER_CLEAN}" ]; then
|
||||||
|
|
@ -93,10 +91,10 @@ if [ "${HOST}" = "guess" ]; then
|
||||||
HOST="linux"
|
HOST="linux"
|
||||||
;;
|
;;
|
||||||
msys*|cygwin*)
|
msys*|cygwin*)
|
||||||
CURRENT_HOST="windows"
|
HOST="windows"
|
||||||
;;
|
;;
|
||||||
# darwin*)
|
# darwin*)
|
||||||
# CURRENT_HOST="macos"
|
# HOST="macos"
|
||||||
# ;;
|
# ;;
|
||||||
*)
|
*)
|
||||||
exit_error_message "Current detected os is unsuppoted to build from: ${OSTYPE}\nUse --help for more informations."
|
exit_error_message "Current detected os is unsuppoted to build from: ${OSTYPE}\nUse --help for more informations."
|
||||||
|
|
@ -115,21 +113,29 @@ fi
|
||||||
case "${HOST}" in
|
case "${HOST}" in
|
||||||
linux)
|
linux)
|
||||||
HOST_CC=gcc
|
HOST_CC=gcc
|
||||||
|
HOST_PKG_CONFIG=pkg-config
|
||||||
ASSET_BUILDER_CFLAGS=(
|
ASSET_BUILDER_CFLAGS=(
|
||||||
"--std=c17"
|
"--std=c17"
|
||||||
"-O2"
|
"-O2"
|
||||||
)
|
)
|
||||||
ASSET_BUILDER_LDFLAGS=()
|
ASSET_BUILDER_LDFLAGS=()
|
||||||
ASSET_BUILDER_LIBS=(
|
ASSET_BUILDER_LIBS=(
|
||||||
"libpng|1.6.48"
|
"libpng|1.6.34"
|
||||||
"json-c|0.18"
|
"json-c|0.11"
|
||||||
)
|
)
|
||||||
;;
|
;;
|
||||||
|
|
||||||
windows)
|
windows)
|
||||||
HOST_CC="x86_64-w64-mingw32-gcc"
|
HOST_CC=x86_64-w64-mingw32-gcc
|
||||||
HOST_AR="x86_64-w64-mingw32-ar"
|
HOST_PKG_CONFIG=x86_64-w64-mingw32-pkg-config
|
||||||
ASSET_BUILDER_CFLAGS="--std=c17 -O2 \$(shell x86_64-w64-mingw32-pkg-config --cflags libpng json-c)"
|
ASSET_BUILDER_CFLAGS=(
|
||||||
ASSET_BUILDER_LDFLAGS="\$(shell x86_64-w64-mingw32-pkg-config --libs libpng json-c)"
|
"--std=c17" "-O2"
|
||||||
|
)
|
||||||
|
ASSET_BUILDER_LDFLAGS=()
|
||||||
|
ASSET_BUILDER_LIBS=(
|
||||||
|
"libpng|1.6.34"
|
||||||
|
"json-c|0.11"
|
||||||
|
)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
exit_error_message "Compiling from ${HOST} is not supported yet."
|
exit_error_message "Compiling from ${HOST} is not supported yet."
|
||||||
|
|
@ -145,13 +151,15 @@ case "${TARGET_HOST}" in
|
||||||
linux)
|
linux)
|
||||||
TARGET_HOST_CC=gcc
|
TARGET_HOST_CC=gcc
|
||||||
TARGET_HOST_AR=ar
|
TARGET_HOST_AR=ar
|
||||||
|
TARGET_HOST_PKG_CONFIG=pkg-config
|
||||||
TARGET_HOST_CFLAGS=(
|
TARGET_HOST_CFLAGS=(
|
||||||
"--std=c17" "-Os"
|
"--std=c17" "-Os"
|
||||||
"-DASSET_FILE_NAME=\\\"\$(notdir \$(ASSET_OUTPUT))\\\"" "-D_GNU_SOURCE=1"
|
"-DASSET_FILE_NAME=\\\"\$(notdir \$(ASSET_OUTPUT))\\\"" "-D_GNU_SOURCE=1"
|
||||||
)
|
)
|
||||||
TARGET_HOST_LDFLAGS=()
|
TARGET_HOST_LDFLAGS=()
|
||||||
OUTPUT_EXT=""
|
OUTPUT_EXT=""
|
||||||
LIB_OUTPUT_EXT=".a"
|
DYNAMIC_LIB_OUTPUT_EXT=".so"
|
||||||
|
STATIC_LIB_OUTPUT_EXT=".a"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
exit_error_message "Cross compiling from ${HOST} for ${TARGET_HOST} is not supported yet."
|
exit_error_message "Cross compiling from ${HOST} for ${TARGET_HOST} is not supported yet."
|
||||||
|
|
@ -167,19 +175,30 @@ case "${TARGET_HOST}" in
|
||||||
windows)
|
windows)
|
||||||
echo "Configuring for target: ${TARGET_HOST}"
|
echo "Configuring for target: ${TARGET_HOST}"
|
||||||
|
|
||||||
case "${CURRENT_HOST}" in
|
case "${HOST}" in
|
||||||
windows)
|
windows)
|
||||||
TARGET_HOST_CC="x86_64-w64-mingw32-gcc"
|
TARGET_HOST_CC=x86_64-w64-mingw32-gcc
|
||||||
TARGET_HOST_AR="x86_64-w64-mingw32-ar"
|
TARGET_HOST_AR=x86_64-w64-mingw32-gcc-ar
|
||||||
TARGET_HOST_CFLAGS="--std=c17 -Os -DASSET_FILE_NAME=\\\"\$(notdir \$(ASSET_OUTPUT))\\\" -D_GNU_SOURCE=1 \$(shell x86_64-w64-mingw32-pkg-config --cflags sdl3 lua)"
|
TARGET_HOST_PKG_CONFIG=x86_64-w64-mingw32-pkg-config
|
||||||
TARGET_HOST_LDFLAGS="\$(shell x86_64-w64-mingw32-pkg-config --libs sdl3 lua) -lm"
|
TARGET_HOST_CFLAGS=(
|
||||||
TARGET_HOST_LIBCORE="libcore.dll"
|
"--std=c17" "-Os"
|
||||||
|
"-DASSET_FILE_NAME=\\\"\$(notdir \$(ASSET_OUTPUT))\\\"" "-D_GNU_SOURCE=1"
|
||||||
|
)
|
||||||
|
TARGET_HOST_LDFLAGS=()
|
||||||
|
OUTPUT_EXT=".exe"
|
||||||
|
DYNAMIC_LIB_OUTPUT_EXT=".dll"
|
||||||
|
STATIC_LIB_OUTPUT_EXT=".dll.a"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
print_error "Cross compiling from ${CURRENT_HOST} for ${TARGET_HOST} is not supported yet."
|
exit_error_message "Cross compiling from ${HOST} for ${TARGET_HOST} is not supported yet."
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
TARGET_HOST_LIBS=(
|
||||||
|
"sdl3|3.3.4"
|
||||||
|
"lua|5.4.7"
|
||||||
|
)
|
||||||
;;
|
;;
|
||||||
|
|
||||||
fxcg50)
|
fxcg50)
|
||||||
|
|
@ -197,13 +216,15 @@ case "${TARGET_HOST}" in
|
||||||
)
|
)
|
||||||
TARGET_HOST_LDFLAGS="-T fxcg50.ld"
|
TARGET_HOST_LDFLAGS="-T fxcg50.ld"
|
||||||
OUTPUT_EXT=""
|
OUTPUT_EXT=""
|
||||||
LIB_OUTPUT_EXT=".a"
|
DYNAMIC_LIB_OUTPUT_EXT=".so"
|
||||||
|
STATIC_LIB_OUTPUT_EXT=".a"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
exit_error_message "Cross compiling from ${HOST} for ${TARGET_HOST} is not supported yet."
|
exit_error_message "Cross compiling from ${HOST} for ${TARGET_HOST} is not supported yet."
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
exit_error_message "Unsupported target host: ${TARGET_HOST}"
|
exit_error_message "Unsupported target host: ${TARGET_HOST}"
|
||||||
esac
|
esac
|
||||||
|
|
@ -226,45 +247,10 @@ for LIB in ${ASSET_BUILDER_LIBS[@]}; do
|
||||||
LIB_NAME="$(echo ${LIB} | cut -d "|" -f 1)"
|
LIB_NAME="$(echo ${LIB} | cut -d "|" -f 1)"
|
||||||
LIB_MIN_VERSION="$(echo ${LIB} | cut -d "|" -f 2)"
|
LIB_MIN_VERSION="$(echo ${LIB} | cut -d "|" -f 2)"
|
||||||
|
|
||||||
if pkg-config --atleast-version "${LIB_MIN_VERSION}" "${LIB_NAME}"; then
|
if ${HOST_PKG_CONFIG} --atleast-version "${LIB_MIN_VERSION}" "${LIB_NAME}"; then
|
||||||
echo " ${LIB_NAME} OK."
|
echo " ${LIB_NAME} OK."
|
||||||
else
|
else
|
||||||
LIB_URL=$(echo $LIB | cut -d "|" -f 3)
|
exit_error_message "Library ${LIB_NAME} version >= ${LIB_MIN_VERSION} not found."
|
||||||
|
|
||||||
if [ "${LIB_URL}" = "" ]; then
|
|
||||||
exit_error_message "Library ${LIB_NAME} version >= ${LIB_MIN_VERSION} was not found and no precompiled binaries are available."
|
|
||||||
else
|
|
||||||
LIB_DOWNLOAD_CHECKSUM=$(echo $LIB | cut -d "|" -f 4)
|
|
||||||
LIB_DOWNLOAD_FILENAME="$(echo ${LIB_URL} | rev | cut -d "/" -f 1 | rev)"
|
|
||||||
LIB_DOWNLOAD_PATH="${CACHE_DIR}/${TARGET_HOST}/${LIB_DOWNLOAD_FILENAME}"
|
|
||||||
|
|
||||||
case "${LIB_DOWNLOAD_FILENAME}" in
|
|
||||||
*.txz)
|
|
||||||
LIB_FOLDER_NAME="${LIB_DOWNLOAD_FILENAME%.txz}"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
exit_error_message "File ${LIB_DOWNLOAD_FILENAME} extension substitution is not supported."
|
|
||||||
esac
|
|
||||||
LIB_PATH="${LIB_DIR}/${TARGET_HOST}/${LIB_FOLDER_NAME}"
|
|
||||||
|
|
||||||
echo " ${LIB_NAME} version >= ${LIB_MIN_VERSION} was not found but precompiled binaries are available."
|
|
||||||
|
|
||||||
if [ ! -f "${LIB_DOWNLOAD_PATH}" ]; then
|
|
||||||
echo " downloading from ${LIB_URL}."
|
|
||||||
mkdir -p "$(dirname "${LIB_DOWNLOAD_PATH}")"
|
|
||||||
wget -q -O"${LIB_DOWNLOAD_PATH}" "${LIB_URL}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if echo "${LIB_DOWNLOAD_CHECKSUM} ${LIB_DOWNLOAD_PATH}" | md5sum --check &> /dev/null; then
|
|
||||||
echo " ${LIB_DOWNLOAD_PATH} OK."
|
|
||||||
else
|
|
||||||
rm -rf "${LIB_DOWNLOAD_PATH}"
|
|
||||||
exit_error_message "Failed to verify checksum of ${LIB_DOWNLOAD_PATH}."
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -p "${LIB_PATH}"
|
|
||||||
tar -xf "${LIB_DOWNLOAD_PATH}" -C "${LIB_PATH}"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
@ -287,50 +273,20 @@ for LIB in ${TARGET_HOST_LIBS[@]}; do
|
||||||
LIB_NAME="$(echo ${LIB} | cut -d "|" -f 1)"
|
LIB_NAME="$(echo ${LIB} | cut -d "|" -f 1)"
|
||||||
LIB_MIN_VERSION="$(echo ${LIB} | cut -d "|" -f 2)"
|
LIB_MIN_VERSION="$(echo ${LIB} | cut -d "|" -f 2)"
|
||||||
|
|
||||||
if pkg-config --atleast-version "${LIB_MIN_VERSION}" "${LIB_NAME}"; then
|
if ${TARGET_HOST_PKG_CONFIG} --atleast-version "${LIB_MIN_VERSION}" "${LIB_NAME}"; then
|
||||||
echo " ${LIB_NAME} OK."
|
echo " ${LIB_NAME} OK."
|
||||||
else
|
else
|
||||||
LIB_URL=$(echo $LIB | cut -d "|" -f 3)
|
exit_error_message "Library ${LIB_NAME} version >= ${LIB_MIN_VERSION} not found."
|
||||||
|
|
||||||
if [ "${LIB_URL}" = "" ]; then
|
|
||||||
exit_error_message "Library ${LIB_NAME} version >= ${LIB_MIN_VERSION} was not found and no precompiled binaries are available."
|
|
||||||
else
|
|
||||||
LIB_DOWNLOAD_CHECKSUM=$(echo $LIB | cut -d "|" -f 4)
|
|
||||||
LIB_DOWNLOAD_FILENAME="$(echo ${LIB_URL} | rev | cut -d "/" -f 1 | rev)"
|
|
||||||
LIB_DOWNLOAD_PATH="${CACHE_DIR}/${TARGET_HOST}/${LIB_DOWNLOAD_FILENAME}"
|
|
||||||
|
|
||||||
case "${LIB_DOWNLOAD_FILENAME}" in
|
|
||||||
*.txz)
|
|
||||||
LIB_FOLDER_NAME="${LIB_DOWNLOAD_FILENAME%.txz}"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
exit_error_message "File ${LIB_DOWNLOAD_FILENAME} extension substitution is not supported."
|
|
||||||
esac
|
|
||||||
LIB_PATH="${LIB_DIR}/${TARGET_HOST}/${LIB_FOLDER_NAME}"
|
|
||||||
|
|
||||||
echo " ${LIB_NAME} version >= ${LIB_MIN_VERSION} was not found but precompiled binaries are available."
|
|
||||||
|
|
||||||
if [ ! -f "${LIB_DOWNLOAD_PATH}" ]; then
|
|
||||||
echo " downloading from ${LIB_URL}."
|
|
||||||
mkdir -p "$(dirname "${LIB_DOWNLOAD_PATH}")"
|
|
||||||
wget -q -O"${LIB_DOWNLOAD_PATH}" "${LIB_URL}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if echo "${LIB_DOWNLOAD_CHECKSUM} ${LIB_DOWNLOAD_PATH}" | md5sum --check &> /dev/null; then
|
|
||||||
echo " ${LIB_DOWNLOAD_PATH} OK."
|
|
||||||
else
|
|
||||||
rm -rf "${LIB_DOWNLOAD_PATH}"
|
|
||||||
exit_error_message "Failed to verify checksum of ${LIB_DOWNLOAD_PATH}."
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -p "${LIB_PATH}"
|
|
||||||
tar -xf "${LIB_DOWNLOAD_PATH}" -C "${LIB_PATH}"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "Writing config file."
|
#
|
||||||
|
# Config file
|
||||||
|
#
|
||||||
|
|
||||||
echo
|
echo
|
||||||
|
|
||||||
|
echo "Writing config file."
|
||||||
echo "${CONFIG_FILE}:"
|
echo "${CONFIG_FILE}:"
|
||||||
echo "\`\`\`"
|
echo "\`\`\`"
|
||||||
|
|
||||||
|
|
@ -338,20 +294,24 @@ tee "${CONFIG_FILE}" <<EOF
|
||||||
# This file was generated by the configure script.
|
# This file was generated by the configure script.
|
||||||
|
|
||||||
TARGET_HOST = ${TARGET_HOST}
|
TARGET_HOST = ${TARGET_HOST}
|
||||||
LIB_OUTPUT_EXT = ${LIB_OUTPUT_EXT}
|
|
||||||
|
OUTPUT_EXT = ${OUTPUT_EXT}
|
||||||
|
DYNAMIC_LIB_OUTPUT_EXT = ${DYNAMIC_LIB_OUTPUT_EXT}
|
||||||
|
STATIC_LIB_OUTPUT_EXT = ${STATIC_LIB_OUTPUT_EXT}
|
||||||
|
|
||||||
TARGET_HOST_CC = ${TARGET_HOST_CC}
|
TARGET_HOST_CC = ${TARGET_HOST_CC}
|
||||||
TARGET_HOST_AR = ${TARGET_HOST_AR}
|
TARGET_HOST_AR = ${TARGET_HOST_AR}
|
||||||
TARGET_HOST_CFLAGS = ${TARGET_HOST_CFLAGS[@]}
|
|
||||||
TARGET_HOST_LDFLAGS = ${TARGET_HOST_LDFLAGS[@]}
|
TARGET_HOST_CFLAGS = ${TARGET_HOST_CFLAGS[@]} $(${TARGET_HOST_PKG_CONFIG} --cflags $(echo ${TARGET_HOST_LIBS[@]} | tr " " "\n" | cut -d "|" -f 1))
|
||||||
|
TARGET_HOST_LDFLAGS = ${TARGET_HOST_LDFLAGS[@]} $(${TARGET_HOST_PKG_CONFIG} --libs $(echo ${TARGET_HOST_LIBS[@]} | tr " " "\n" | cut -d "|" -f 1))
|
||||||
|
|
||||||
HOST_CC = ${HOST_CC}
|
HOST_CC = ${HOST_CC}
|
||||||
|
|
||||||
ASSET_BUILDER_CFLAGS = ${ASSET_BUILDER_CFLAGS[@]}
|
ASSET_BUILDER_CFLAGS = ${ASSET_BUILDER_CFLAGS[@]} $(${HOST_PKG_CONFIG} --cflags $(echo ${ASSET_BUILDER_LIBS[@]} | tr " " "\n" | cut -d "|" -f 1))
|
||||||
ASSET_BUILDER_LDFLAGS = ${ASSET_BUILDER_LDFLAGS[@]}
|
ASSET_BUILDER_LDFLAGS = ${ASSET_BUILDER_LDFLAGS[@]} $(${HOST_PKG_CONFIG} --libs $(echo ${ASSET_BUILDER_LIBS[@]} | tr " " "\n" | cut -d "|" -f 1))
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if [ "${CURRENT_HOST}" = "windows" ]; then
|
if [ "${HOST}" = "windows" ]; then
|
||||||
tee -a "${CONFIG_FILE}" <<EOF
|
tee -a "${CONFIG_FILE}" <<EOF
|
||||||
|
|
||||||
# OS specific options
|
# OS specific options
|
||||||
|
|
|
||||||
|
|
@ -2,4 +2,6 @@ SOURCES += $(addprefix host/$(TARGET_HOST)/, \
|
||||||
display.c \
|
display.c \
|
||||||
vector2d.c \
|
vector2d.c \
|
||||||
texture.c \
|
texture.c \
|
||||||
|
inputs.c \
|
||||||
|
update_time.c \
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,6 @@
|
||||||
#define DISPLAY_WIDTH 720
|
#define DISPLAY_WIDTH 720
|
||||||
#define DISPLAY_HEIGHT 480
|
#define DISPLAY_HEIGHT 480
|
||||||
|
|
||||||
#define DRIVERS "vulkan,gpu,software"
|
|
||||||
|
|
||||||
typedef struct display_t {
|
typedef struct display_t {
|
||||||
SDL_Window *window;
|
SDL_Window *window;
|
||||||
SDL_Renderer *renderer;
|
SDL_Renderer *renderer;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
#include "inputs.h"
|
||||||
|
|
||||||
|
#include <SDL3/SDL_events.h>
|
||||||
|
|
||||||
|
inline int poll_event(input_event_t *event)
|
||||||
|
{
|
||||||
|
SDL_Event sdl_event;
|
||||||
|
int ret = SDL_PollEvent(&sdl_event);
|
||||||
|
|
||||||
|
event->type = sdl_event.type;
|
||||||
|
event->key = sdl_event.key.scancode;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
#ifndef KEYBOARD_H
|
||||||
|
#define KEYBOARD_H
|
||||||
|
|
||||||
|
#include "keycodes.h"
|
||||||
|
|
||||||
|
typedef struct input_event_t {
|
||||||
|
uint32_t type;
|
||||||
|
int key;
|
||||||
|
} input_event_t;
|
||||||
|
|
||||||
|
int poll_event(input_event_t *event);
|
||||||
|
|
||||||
|
typedef struct inputs_t {
|
||||||
|
bool keys[MAX_KEYCODES];
|
||||||
|
} inputs_t;
|
||||||
|
|
||||||
|
#endif // KEYBOARD_H
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
#ifndef KEYCODES_H
|
||||||
|
#define KEYCODES_H
|
||||||
|
|
||||||
|
#include <SDL3/SDL_events.h>
|
||||||
|
|
||||||
|
#define MAX_KEYCODES SDL_SCANCODE_COUNT
|
||||||
|
|
||||||
|
#define KEY_UP SDL_SCANCODE_W
|
||||||
|
#define KEY_DOWN SDL_SCANCODE_S
|
||||||
|
#define KEY_LEFT SDL_SCANCODE_A
|
||||||
|
#define KEY_RIGHT SDL_SCANCODE_D
|
||||||
|
#define KEY_MOD SDL_SCANCODE_LCTRL
|
||||||
|
#define KEY_INTERACT SDL_SCANCODE_E
|
||||||
|
|
||||||
|
#define INPUT_EVENT_KEY_UP SDL_EVENT_KEY_UP
|
||||||
|
#define INPUT_EVENT_KEY_DOWN SDL_EVENT_KEY_DOWN
|
||||||
|
#define INPUT_EVENT_QUIT SDL_EVENT_QUIT
|
||||||
|
|
||||||
|
#endif // KEYCODES_H
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
#include "update_time.h"
|
||||||
|
|
||||||
|
#include <SDL3/SDL.h>
|
||||||
|
#include "game.h"
|
||||||
|
|
||||||
|
inline void update_time(void)
|
||||||
|
{
|
||||||
|
static uint64_t last_clock_state = 0;
|
||||||
|
uint64_t start_clock = SDL_GetTicksNS();
|
||||||
|
game.delta_time_ms = SDL_NS_TO_MS((float)(start_clock - last_clock_state));
|
||||||
|
if(game.delta_time_ms > 100.0f) game.delta_time_ms = 100.0f;
|
||||||
|
last_clock_state = start_clock;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
#ifndef TIME_H
|
||||||
|
#define TIME_H
|
||||||
|
|
||||||
|
void update_time(void);
|
||||||
|
|
||||||
|
#endif // TIME_H
|
||||||
Loading…
Reference in New Issue