Compare commits

..

No commits in common. "18c8e6b887be0ab037e00cd1f35a17831a045e6c" and "52b3240549fa2a9ae918bcade65553653f71ba6e" have entirely different histories.

23 changed files with 133 additions and 242 deletions

3
.ccls Normal file
View File

@ -0,0 +1,3 @@
gcc
# Macros
-DDEBUG=2

View File

@ -1,33 +0,0 @@
{
"configurations": [
{
"name": "Linux",
"intelliSenseMode": "linux-gcc-arm",
"includePath": [
"${workspaceFolder}/src",
"${workspaceFolder}/src/components",
"${workspaceFolder}/core",
"${workspaceFolder}/core/host/generic",
"/usr/include/lua5.4",
"/usr/include/pipewire-0.3",
"/usr/include/spa-0.2",
"/usr/include/libdrm",
"/usr/include/libdecor-0",
"/usr/include/x86_64-linux-gnu"
],
"compilerPath": "/usr/bin/gcc",
"defines": [
"-D_REENTRANT"
],
"cStandard": "c17",
"browse": {
"path": [
"${workspaceFolder}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
}
],
"version": 4
}

9
.vscode/launch.json vendored
View File

@ -4,5 +4,14 @@
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0", "version": "0.2.0",
"configurations": [ "configurations": [
{
"name": "Debug",
"type": "gdb",
"request": "launch",
"target": "${workspaceFolder}/build/linux/2D_Engine",
"cwd": "${workspaceFolder}/build/linux",
"valuesFormatting": "parseText",
"preLaunchTask": "Build"
}
] ]
} }

View File

@ -1,7 +1,11 @@
{ {
"nixEnvSelector.suggestion": false,
"nixEnvSelector.nixFile": "${workspaceFolder}/shell.nix",
"nixEnvSelector.useFlakes": false,
"files.associations": { "files.associations": {
"*.tsx": "xml", "*.tsx": "xml",
"*.map": "json", "*.map": "json",
"configure": "shellscript", "configure": "shellscript"
} }
} }

57
.vscode/tasks.json vendored
View File

@ -54,25 +54,6 @@
"clear": true "clear": true
} }
}, },
{
"label": "Run",
"detail": "Build project and run",
"type": "shell",
"command": "make",
"args": [
"-j$(nproc)",
"run"
],
"group": "build",
"presentation": {
"echo": true,
"reveal": "always",
"focus": true,
"panel": "shared",
"showReuseMessage": true,
"clear": true
}
},
{ {
"label": "Build Verbose", "label": "Build Verbose",
"detail": "Build project with verbosity on", "detail": "Build project with verbosity on",
@ -91,25 +72,6 @@
"clear": true "clear": true
} }
}, },
{
"label": "Build Debug",
"detail": "Build project in debug mode",
"type": "shell",
"command": "make",
"args": [
"-j$(nproc)",
"DEBUG=2"
],
"group": "build",
"presentation": {
"echo": true,
"reveal": "always",
"focus": true,
"panel": "shared",
"showReuseMessage": true,
"clear": true
}
},
{ {
"label": "Run Debug", "label": "Run Debug",
"detail": "Build project in debug mode and run", "detail": "Build project in debug mode and run",
@ -129,6 +91,25 @@
"showReuseMessage": true, "showReuseMessage": true,
"clear": true "clear": true
} }
},
{
"label": "Build Debug",
"detail": "Build project in debug mode",
"type": "shell",
"command": "make",
"args": [
"-j$(nproc)",
"DEBUG=2"
],
"group": "build",
"presentation": {
"echo": true,
"reveal": "always",
"focus": true,
"panel": "shared",
"showReuseMessage": true,
"clear": true
}
} }
] ]
} }

View File

@ -4,6 +4,14 @@ SHELL = /usr/bin/env bash
ROOT := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) ROOT := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
ifeq ($(filter clean-all,$(MAKECMDGOALS)),)
ifneq ($(realpath $(ROOT)/config.mk), $(ROOT)/config.mk)
$(error ERROR: Please run the configure script before building)
endif
include $(ROOT)/config.mk
endif
# #
# User settings # User settings
# #
@ -26,28 +34,12 @@ TARGET_HOST_CFLAGS += -O1 -g -DDEBUG=$(DEBUG) -Wextra -Wall --pedantic -Wno-miss
-Wstrict-prototypes -Winline -Wundef -Wnested-externs -Wcast-qual \ -Wstrict-prototypes -Winline -Wundef -Wnested-externs -Wcast-qual \
-Wshadow -Wunreachable-code -Wlogical-op -Wfloat-equal -Wstrict-aliasing=2 \ -Wshadow -Wunreachable-code -Wlogical-op -Wfloat-equal -Wstrict-aliasing=2 \
-Wredundant-decls -Wold-style-definition -Wredundant-decls -Wold-style-definition
ASSET_BUILDER_CFLAGS += -O1 -g -DDEBUG=$(DEBUG) -Wextra -Wall --pedantic -Wno-missing-braces \
-Wno-missing-field-initializers -Wformat=2 -Wswitch-default -Wswitch \
-Wcast-align -Wpointer-arith -Wbad-function-cast -Wstrict-overflow=5 \
-Wstrict-prototypes -Winline -Wundef -Wnested-externs -Wcast-qual \
-Wshadow -Wunreachable-code -Wlogical-op -Wfloat-equal -Wstrict-aliasing=2 \
-Wredundant-decls -Wold-style-definition
endif endif
# #
# End # End
# #
# Import config
ifeq ($(filter clean-all,$(MAKECMDGOALS)),)
ifneq ($(realpath $(ROOT)/config.mk), $(ROOT)/config.mk)
$(error ERROR: Please run the configure script before building)
endif
include $(ROOT)/config.mk
endif
# Relocate vars # Relocate vars
BUILD_DIR := $(ROOT)/$(BUILD_DIR)/$(TARGET_HOST) BUILD_DIR := $(ROOT)/$(BUILD_DIR)/$(TARGET_HOST)
@ -93,5 +85,5 @@ clean-all:
run: all run: all
$(Q)cd $(BUILD_DIR) && ./$(notdir $(OUTPUT)) $(Q)cd $(BUILD_DIR) && ./$(notdir $(OUTPUT))
print-var-% : print-var-% :
@echo $($*) @echo $($*)

View File

@ -28,9 +28,9 @@
- [ ] Create lua component - [ ] Create lua component
### Done - [ ] Rethink makefile structure
- [x] Rethink makefile structure ### Done
- [x] Make camera center on map - [x] Make camera center on map

7
asset_builder/.ccls Normal file
View File

@ -0,0 +1,7 @@
gcc
# Headers
-Iassets/asset_builder/src/headers
-Isrc/components
# Macros
-DDEBUG=2

View File

@ -17,14 +17,14 @@ endif
$(ASSET_BUILDER_OUTPUT): $(OBJECTS) $(ASSET_BUILDER_OUTPUT): $(OBJECTS)
$(Q)mkdir -p $(dir $@) $(Q)mkdir -p $(dir $@)
$(Q)$(HOST_CC) $(ASSET_BUILDER_CFLAGS) $(OBJECTS) -o $@ $(ASSET_BUILDER_LDFLAGS) @echo -e "[100%] $(YELLOW)Linking $(notdir $(ASSET_BUILDER_OUTPUT))$(RESET)"
@echo "[100%] $(YELLOW)Linking $(notdir $(ASSET_BUILDER_OUTPUT))$(RESET)" $(Q)$(ASSET_BUILDER_CC) $(ASSET_BUILDER_CFLAGS) $(ASSET_BUILDER_LDFLAGS) $(OBJECTS) -o $@
$(BUILD_DIR)/$(notdir $(ASSET_BUILDER_DIR))/%.o: $(ASSET_BUILDER_DIR)/% $(BUILD_DIR)/$(notdir $(ASSET_BUILDER_DIR))/%.o: $(ASSET_BUILDER_DIR)/%
$(Q)mkdir -p $(dir $@) $(Q)mkdir -p $(dir $@)
$(eval CURRENT_FILE := $(shell echo $$(($(CURRENT_FILE)+1)))) $(eval CURRENT_FILE := $(shell echo $$(($(CURRENT_FILE)+1))))
$(eval PERCENTAGE := $(shell echo $$(($(CURRENT_FILE)*100/$(TOTAL_BUILD_FILES))))) $(eval PERCENTAGE := $(shell echo $$(($(CURRENT_FILE)*100/$(TOTAL_BUILD_FILES)))))
$(Q)$(HOST_CC) $(ASSET_BUILDER_CFLAGS) $(INCLUDES:%=-I%) -MMD -MP -c $< -o $@ @echo -e "[$(PERCENTAGE)%] $(GREEN)Building C object $@$(RESET)"
@echo "[$(PERCENTAGE)%] $(GREEN)Building C object $@$(RESET)" $(Q)$(ASSET_BUILDER_CC) $(ASSET_BUILDER_CFLAGS) $(INCLUDES:%=-I%) -MMD -MP -c $< -o $@
-include $(ASSET_BUILDER_OBJECTS:.o=.d) -include $(ASSET_BUILDER_OBJECTS:.o=.d)

View File

@ -9,9 +9,6 @@ ASSETS := \
maps/dungeon_entry.map \ maps/dungeon_entry.map \
maps/dungeon_room_1.map maps/dungeon_room_1.map
LUA_SOURCES := \
enemy_system.lua
OBJECTS := $(ASSETS:%=$(BUILD_DIR)/$(notdir $(ASSETS_DIR))/%.o) OBJECTS := $(ASSETS:%=$(BUILD_DIR)/$(notdir $(ASSETS_DIR))/%.o)
ifeq ($(TOTAL_BUILD_FILES),) ifeq ($(TOTAL_BUILD_FILES),)
@ -19,14 +16,14 @@ TOTAL_BUILD_FILES := $(shell echo $$(($$($(MAKE) -n $(OBJECTS) TOTAL_BUILD_FILES
endif endif
$(ASSET_OUTPUT): $(OBJECTS) $(ASSET_BUILDER_OUTPUT) $(ASSET_OUTPUT): $(OBJECTS) $(ASSET_BUILDER_OUTPUT)
@echo "[100%] $(YELLOW)Building $(notdir $(ASSET_OUTPUT))$(RESET)" @echo -e "[100%] $(YELLOW)Building $(notdir $(ASSET_OUTPUT))$(RESET)"
$(Q)$(ASSET_BUILDER_OUTPUT) $@ $(OBJECTS) $(Q)$(ASSET_BUILDER_OUTPUT) $@ $(OBJECTS)
$(BUILD_DIR)/$(notdir $(ASSETS_DIR))/%.o: $(ASSETS_DIR)/% $(ASSET_BUILDER_OUTPUT) $(BUILD_DIR)/$(notdir $(ASSETS_DIR))/%.o: $(ASSETS_DIR)/% $(ASSET_BUILDER_OUTPUT)
$(Q)mkdir -p $(dir $@) $(Q)mkdir -p $(dir $@)
$(eval CURRENT_FILE := $(shell echo $$(($(CURRENT_FILE) + 1)))) $(eval CURRENT_FILE := $(shell echo $$(($(CURRENT_FILE) + 1))))
$(eval PERCENTAGE := $(shell echo $$(($(CURRENT_FILE) * 100 / $(TOTAL_BUILD_FILES))))) $(eval PERCENTAGE := $(shell echo $$(($(CURRENT_FILE) * 100 / $(TOTAL_BUILD_FILES)))))
@echo "[$(PERCENTAGE)%] $(GREEN)Building ASSET object $@$(RESET)" @echo -e "[$(PERCENTAGE)%] $(GREEN)Building ASSET object $@$(RESET)"
$(Q)$(ASSET_BUILDER_OUTPUT) $@ -c $< $(Q)$(ASSET_BUILDER_OUTPUT) $@ -c $<
$(ASSET_BUILDER_OUTPUT): FORCE $(ASSET_BUILDER_OUTPUT): FORCE

92
configure vendored
View File

@ -26,27 +26,22 @@ print_error()
} }
## Parse args ## Parse args
CURRENT_HOST="guess"
TARGET_HOST="guess" TARGET_HOST="guess"
for i in "$@"; do for i in "$@"; do
case $i in case $i in
--target-host=*) --target-host=*)
TARGET_HOST="${i#*=}" TARGET_HOST="${i#*=}"
shift shift # past argument=value
;;
--current-host=*)
CURRENT_HOST="${i#*=}"
shift
;; ;;
--clean) --clean)
CLEAN=1 CLEAN=1
EXIT_AFTER_CLEAN=1 EXIT_AFTER_CLEAN=1
shift shift # past argument=value
;; ;;
--reconfigure) --reconfigure)
CLEAN=1 CLEAN=1
shift shift # past argument=value
;; ;;
-h|--help) -h|--help)
echo "Usage : ./configure [OPTION]..." echo "Usage : ./configure [OPTION]..."
@ -56,9 +51,6 @@ for i in "$@"; do
echo -e "\033[1m --target-host=\033[mHOST" echo -e "\033[1m --target-host=\033[mHOST"
echo -e "\tselect target host platform, default is \"guess\" and" echo -e "\tselect target host platform, default is \"guess\" and"
echo -e "\twill try to configure for your current OS" echo -e "\twill try to configure for your current OS"
echo -e "\033[1m --current-host=\033[mHOST"
echo -e "\tselect current host platform, default is \"guess\" and"
echo -e "\twill try to detect your current OS"
echo -e "\033[1m --clean\033[m" echo -e "\033[1m --clean\033[m"
echo -e "\tclean build, config, cache, etc, and exit" echo -e "\tclean build, config, cache, etc, and exit"
echo -e "\033[1m --reconfigure\033[m" echo -e "\033[1m --reconfigure\033[m"
@ -86,22 +78,20 @@ if [ -n "${EXIT_AFTER_CLEAN}" ]; then
fi fi
## Deduce current and target hosts ## Deduce current and target hosts
if [ "${CURRENT_HOST}" = "guess" ]; then case "${OSTYPE}" in
case "${OSTYPE}" in linux*)
linux*) CURRENT_HOST="linux"
CURRENT_HOST="linux" ;;
;; # msys*|cygwin*)
# msys*|cygwin*) # CURRENT_HOST="windows"
# CURRENT_HOST="windows" # ;;
# ;; # darwin*)
# darwin*) # CURRENT_HOST="macos"
# CURRENT_HOST="macos" # ;;
# ;; *)
*) print_error "Current detected os is unsuppoted to build from: ${OSTYPE}\nUse --help for more informations."
print_error "Current detected os is unsuppoted to build from: ${OSTYPE}\nUse --help for more informations." ;;
;; esac
esac
fi
echo "Configuring for current host: ${CURRENT_HOST}" echo "Configuring for current host: ${CURRENT_HOST}"
@ -111,8 +101,8 @@ fi
case "${CURRENT_HOST}" in case "${CURRENT_HOST}" in
linux) linux)
HOST_CC="gcc" ASSET_BUILDER_CC="gcc"
HOST_AR="ar" ASSET_BUILDER_AR="ar"
ASSET_BUILDER_CFLAGS="--std=c17 -O2 \$(shell pkg-config --cflags libpng json-c)" ASSET_BUILDER_CFLAGS="--std=c17 -O2 \$(shell pkg-config --cflags libpng json-c)"
ASSET_BUILDER_LDFLAGS="\$(shell pkg-config --libs libpng json-c)" ASSET_BUILDER_LDFLAGS="\$(shell pkg-config --libs libpng json-c)"
;; ;;
@ -127,16 +117,17 @@ case "${TARGET_HOST}" in
case "${CURRENT_HOST}" in case "${CURRENT_HOST}" in
linux) linux)
TARGET_HOST_CC="gcc"
TARGET_HOST_AR="ar"
TARGET_HOST_CFLAGS="--std=c17 -Os -DASSET_FILE_NAME=\\\"\$(notdir \$(ASSET_OUTPUT))\\\" -D_GNU_SOURCE=1 \$(shell pkg-config --cflags sdl3 lua)"
TARGET_HOST_LDFLAGS="\$(shell pkg-config --libs sdl3 lua) -lm"
TARGET_HOST_LIBCORE="libcore.a"
;; ;;
*) *)
print_error "Cross compiling from ${CURRENT_HOST} for ${TARGET_HOST} is not supported yet." print_error "Cross compiling from ${CURRENT_HOST} to ${TARGET_HOST} is not supported yet."
;; ;;
esac esac
TARGET_CC="gcc"
TARGET_AR="ar"
TARGET_CFLAGS="--std=c17 -Os -DASSET_FILE_NAME=\\\"\$(notdir \$(ASSET_OUTPUT))\\\" -D_GNU_SOURCE=1 \$(shell pkg-config --cflags sdl3)"
TARGET_LDFLAGS="\$(shell pkg-config --libs sdl3) -lm"
TARGET_LIBCORE="libcore.a"
;; ;;
fxcg50) fxcg50)
@ -144,16 +135,17 @@ case "${TARGET_HOST}" in
case "${CURRENT_HOST}" in case "${CURRENT_HOST}" in
linux) linux)
TARGET_HOST_CC="sh-elf-gcc"
TARGET_HOST_AR="sh-elf-ar"
TARGET_HOST_CFLAGS="--std=c17 -Os"
TARGET_HOST_LDFLAGS=""
TARGET_HOST_LIBCORE="libcore.a"
;; ;;
*) *)
print_error "Cross compiling from ${CURRENT_HOST} for ${TARGET_HOST} is not supported yet." print_error "Cross compiling from ${CURRENT_HOST} to ${TARGET_HOST} is not supported yet."
;; ;;
esac esac
TARGET_CC="sh-elf-gcc"
TARGET_AR="sh-elf-ar"
TARGET_CFLAGS="--std=c17 -O3"
TARGET_LDFLAGS=""
TARGET_LIBCORE="libcore.a"
;; ;;
*) *)
print_error "Unsupported target host: ${TARGET_HOST}" print_error "Unsupported target host: ${TARGET_HOST}"
@ -163,24 +155,22 @@ echo "Writing config file."
echo echo
echo "${CONFIG_FILE}:" echo "${CONFIG_FILE}:"
echo "\`\`\`" echo "\`\`\`"
tee ${CONFIG_FILE} <<EOF
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}
LIBCORE = ${TARGET_HOST_LIBCORE} LIBCORE = ${TARGET_LIBCORE}
TARGET_HOST_CC = ${TARGET_HOST_CC} TARGET_HOST_CC = ${TARGET_CC}
TARGET_HOST_AR = ${TARGET_HOST_AR} TARGET_HOST_AR = ${TARGET_AR}
TARGET_HOST_CFLAGS = ${TARGET_HOST_CFLAGS} TARGET_HOST_CFLAGS = ${TARGET_CFLAGS}
TARGET_HOST_LDFLAGS = ${TARGET_HOST_LDFLAGS} TARGET_HOST_LDFLAGS = ${TARGET_LDFLAGS}
HOST_CC = ${HOST_CC}
ASSET_BUILDER_CC = ${ASSET_BUILDER_CC}
ASSET_BUILDER_AR = ${ASSET_BUILDER_AR}
ASSET_BUILDER_CFLAGS = ${ASSET_BUILDER_CFLAGS} ASSET_BUILDER_CFLAGS = ${ASSET_BUILDER_CFLAGS}
ASSET_BUILDER_LDFLAGS = ${ASSET_BUILDER_LDFLAGS} ASSET_BUILDER_LDFLAGS = ${ASSET_BUILDER_LDFLAGS}
EOF EOF
echo "\`\`\`" echo "\`\`\`"
# #

8
core/.ccls Normal file
View File

@ -0,0 +1,8 @@
gcc
# Headers
-Icore
-Icore/host/generic
-Isrc/components
# Macros
-DASSET_FILE_NAME="$(make print-var-ASSET_OUTPUT)"

View File

@ -24,14 +24,14 @@ endif
$(LIBCORE): $(OBJECTS) $(LIBCORE): $(OBJECTS)
$(eval CURRENT_FILE := $(shell echo $$(($(CURRENT_FILE) + 1)))) $(eval CURRENT_FILE := $(shell echo $$(($(CURRENT_FILE) + 1))))
$(eval PERCENTAGE := $(shell echo $$(($(CURRENT_FILE) * 100 / $(TOTAL_BUILD_FILES))))) $(eval PERCENTAGE := $(shell echo $$(($(CURRENT_FILE) * 100 / $(TOTAL_BUILD_FILES)))))
@echo "[$(PERCENTAGE)%] $(YELLOW)Creating Static Lib $@$(RESET)" @echo -e "[$(PERCENTAGE)%] $(YELLOW)Creating Static Lib $@$(RESET)"
$(Q)$(TARGET_HOST_AR) rcs $@ $(OBJECTS) $(Q)$(TARGET_HOST_AR) rcs $@ $(OBJECTS)
$(BUILD_DIR)/$(notdir $(CORE_DIR))/%.o: $(CORE_DIR)/% $(BUILD_DIR)/$(notdir $(CORE_DIR))/%.o: $(CORE_DIR)/%
$(Q)mkdir -p $(dir $@) $(Q)mkdir -p $(dir $@)
$(eval CURRENT_FILE := $(shell echo $$(($(CURRENT_FILE) + 1)))) $(eval CURRENT_FILE := $(shell echo $$(($(CURRENT_FILE) + 1))))
$(eval PERCENTAGE := $(shell echo $$(($(CURRENT_FILE) * 100 / $(TOTAL_BUILD_FILES))))) $(eval PERCENTAGE := $(shell echo $$(($(CURRENT_FILE) * 100 / $(TOTAL_BUILD_FILES)))))
@echo "[$(PERCENTAGE)%] $(GREEN)Building C object $@$(RESET)" @echo -e "[$(PERCENTAGE)%] $(GREEN)Building C object $@$(RESET)"
$(Q)$(TARGET_HOST_CC) $(TARGET_HOST_CFLAGS) $(INCLUDES:%=-I%) -MMD -MP -c $< -o $@ $(Q)$(TARGET_HOST_CC) $(TARGET_HOST_CFLAGS) $(INCLUDES:%=-I%) -MMD -MP -c $< -o $@
-include $(OBJECTS:.o=.d) -include $(OBJECTS:.o=.d)

5
core/host/linux/.ccls Normal file
View File

@ -0,0 +1,5 @@
gcc
# Headers
-Icore
-Icore/host/linux
-Isrc/components

View File

@ -28,19 +28,14 @@ inline int display_init(void)
return EXIT_FAILURE; return EXIT_FAILURE;
} }
#ifdef DRIVERS
debug_printf("Listing available render drivers."); debug_printf("Listing available render drivers.");
const int NB_DRIVERS = SDL_GetNumRenderDrivers(); const int NB_DRIVERS = SDL_GetNumRenderDrivers();
for(int i = 0; i < NB_DRIVERS; i++) for(int i = 0; i < NB_DRIVERS; i++)
debug_printf("%d : %s", i, SDL_GetRenderDriver(i)); debug_printf("%d : %s", i, SDL_GetRenderDriver(i));
warning_printf("This build of 2D_Engine_C only support the following drivers : %s", DRIVERS); if(DRIVERS) warning_printf("This build of 2D_Engine_C only support the following drivers : %s", DRIVERS);
game.display.renderer = SDL_CreateRenderer(game.display.window, DRIVERS); game.display.renderer = SDL_CreateRenderer(game.display.window, DRIVERS);
#else
game.display.renderer = SDL_CreateRenderer(game.display.window, NULL);
#endif // DRIVERS
if(!game.display.renderer) if(!game.display.renderer)
{ {
error_printf("Failed to create renderer : %s", SDL_GetError()); error_printf("Failed to create renderer : %s", SDL_GetError());
@ -58,13 +53,13 @@ inline int display_init(void)
error_printf("Failed to set renderer draw blend mode : %s", SDL_GetError()); error_printf("Failed to set renderer draw blend mode : %s", SDL_GetError());
return EXIT_FAILURE; return EXIT_FAILURE;
} }
/*
if(!SDL_SetDefaultTextureScaleMode(game.display.renderer, SDL_SCALEMODE_NEAREST)) if(!SDL_SetDefaultTextureScaleMode(game.display.renderer, SDL_SCALEMODE_NEAREST))
{ {
error_printf("Failed to set default texture scale mode : %s", SDL_GetError()); error_printf("Failed to set default texture scale mode : %s", SDL_GetError());
return EXIT_FAILURE; return EXIT_FAILURE;
} }
*/
debug_printf("Initialized display."); debug_printf("Initialized display.");
return EXIT_SUCCESS; return EXIT_SUCCESS;

View File

@ -14,6 +14,7 @@
#define DISPLAY_WIDTH 720 #define DISPLAY_WIDTH 720
#define DISPLAY_HEIGHT 480 #define DISPLAY_HEIGHT 480
//#define DRIVERS NULL
#define DRIVERS "vulkan,gpu,software" #define DRIVERS "vulkan,gpu,software"
typedef struct display_t { typedef struct display_t {

5
src/.ccls Normal file
View File

@ -0,0 +1,5 @@
gcc
# Headers
-Isrc/components
-Icore
-Icore/host/generic

View File

@ -23,14 +23,14 @@ TOTAL_BUILD_FILES := $(shell echo $$(($$($(MAKE) -n $(OBJECTS) TOTAL_BUILD_FILES
endif endif
$(OUTPUT): $(OBJECTS) $(LIBCORE) $(OUTPUT): $(OBJECTS) $(LIBCORE)
@echo "[100%] $(YELLOW)Linking $(notdir $(OUTPUT))$(RESET)" @echo -e "[100%] $(YELLOW)Linking $(notdir $(OUTPUT))$(RESET)"
$(Q)$(TARGET_HOST_CC) $(TARGET_HOST_CFLAGS) $(OBJECTS) -o $@ -L$(BUILD_DIR) -lcore $(TARGET_HOST_LDFLAGS) $(Q)$(TARGET_HOST_CC) $(TARGET_HOST_CFLAGS) $(TARGET_HOST_LDFLAGS) $(OBJECTS) -L$(BUILD_DIR) -lcore -o $@
$(BUILD_DIR)/$(notdir $(SOURCE_DIR))/%.o: $(SOURCE_DIR)/% $(BUILD_DIR)/$(notdir $(SOURCE_DIR))/%.o: $(SOURCE_DIR)/%
$(Q)mkdir -p $(dir $@) $(Q)mkdir -p $(dir $@)
$(eval CURRENT_FILE := $(shell echo $$(($(CURRENT_FILE) + 1)))) $(eval CURRENT_FILE := $(shell echo $$(($(CURRENT_FILE) + 1))))
$(eval PERCENTAGE := $(shell echo $$(($(CURRENT_FILE) * 100 / $(TOTAL_BUILD_FILES))))) $(eval PERCENTAGE := $(shell echo $$(($(CURRENT_FILE) * 100 / $(TOTAL_BUILD_FILES)))))
@echo "[$(PERCENTAGE)%] $(GREEN)Building C object $@$(RESET)" @echo -e "[$(PERCENTAGE)%] $(GREEN)Building C object $@$(RESET)"
$(Q)$(TARGET_HOST_CC) $(TARGET_HOST_CFLAGS) $(INCLUDES:%=-I%) -MMD -MP -c $< -o $@ $(Q)$(TARGET_HOST_CC) $(TARGET_HOST_CFLAGS) $(INCLUDES:%=-I%) -MMD -MP -c $< -o $@
$(LIBCORE): FORCE $(LIBCORE): FORCE

View File

@ -6,12 +6,10 @@
COMPONENT(TRANSFORM_COMPONENT, transform_component, DRAW) COMPONENT(TRANSFORM_COMPONENT, transform_component, DRAW)
COMPONENT(HITBOX_COMPONENT, hitbox_component, DRAW) COMPONENT(HITBOX_COMPONENT, hitbox_component, DRAW)
COMPONENT(INTERACT_COMPONENT, interact_component, DRAW) COMPONENT(INTERACT_COMPONENT, interact_component, DRAW)
COMPONENT(LUA_COMPONENT, lua_component, DRAW)
#else #else
COMPONENT(TRANSFORM_COMPONENT, transform_component, NO_DRAW) COMPONENT(TRANSFORM_COMPONENT, transform_component, NO_DRAW)
COMPONENT(HITBOX_COMPONENT, hitbox_component, NO_DRAW) COMPONENT(HITBOX_COMPONENT, hitbox_component, NO_DRAW)
COMPONENT(INTERACT_COMPONENT, interact_component, NO_DRAW) COMPONENT(INTERACT_COMPONENT, interact_component, NO_DRAW)
COMPONENT(LUA_COMPONENT, lua_component, NO_DRAW)
#endif // DEBUG >= 2 #endif // DEBUG >= 2
COMPONENT(PHYSICS_SYSTEM, physics_system, NO_DRAW) COMPONENT(PHYSICS_SYSTEM, physics_system, NO_DRAW)
@ -20,6 +18,7 @@ COMPONENT(ANIMATION_SYSTEM, animation_system, NO_DRAW)
COMPONENT(PLAYER_SYSTEM, player_system, NO_DRAW) COMPONENT(PLAYER_SYSTEM, player_system, NO_DRAW)
COMPONENT(LEVER_COMPONENT, lever_component, NO_DRAW) COMPONENT(LEVER_COMPONENT, lever_component, NO_DRAW)
COMPONENT(DOOR_COMPONENT, door_component, NO_DRAW) COMPONENT(DOOR_COMPONENT, door_component, NO_DRAW)
// COMPONENT(LUA_COMPONENT, lua_component, NO_DRAW)
// Add new components definition here // Add new components definition here
#undef COMPONENT #undef COMPONENT

View File

@ -1,51 +1,6 @@
#include "lua_component.h" #ifndef LUA_COMPONENT_H
#define LUA_COMPONENT_H
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
#include "game.h"
#include "ecs.h"
#include "memory_alloc.h"
#include "errors.h"
inline int lua_component_init(component_t *component)
{
lua_component_data_t *component_data = component->data;
component_data->lua_state = luaL_newstate(); #endif // LUA_COMPONENT_H
luaL_openlibs(component_data->lua_state);
luaL_dostring(component_data->lua_state, "function f (a) print(a) end");
return EXIT_SUCCESS;
}
inline int lua_component_update(component_t *component __attribute__((unused)))
{
lua_component_data_t *component_data = component->data;
luaL_dostring(component_data->lua_state, "f(\"prout\")");
return EXIT_SUCCESS;
}
#if DEBUG >= 2
#include "display.h"
inline int lua_component_draw(const component_t *component)
{
return EXIT_SUCCESS;
}
#endif // DEBUG >= 2
inline int lua_component_destroy(component_t *component)
{
lua_component_data_t *component_data = component->data;
lua_close(component_data->lua_state);
free(component_data);
return EXIT_SUCCESS;
}

View File

@ -1,19 +0,0 @@
#ifndef LUA_COMPONENT_H
#define LUA_COMPONENT_H
#include <lua.h>
#include "ecs.h"
#include "errors.h"
typedef struct lua_component_data_t {
lua_State *lua_state;
} lua_component_data_t;
int lua_component_init(component_t *component);
int lua_component_update(component_t *component);
#if DEBUG >= 2
int lua_component_draw(const component_t *component);
#endif // DEBUG >= 2
int lua_component_destroy(component_t *component);
#endif // LUA_COMPONENT_H

View File

@ -21,7 +21,7 @@ int game_init(void)
entity_manager_init(); entity_manager_init();
if(asset_manager_init()) return_failure_int; if(asset_manager_init()) return_failure_int;
asset_t *map_asset = asset_manager_load_asset("dungeon_entry", ASSET_MAP); asset_t *map_asset = asset_manager_load_asset("dungeon_room_1", ASSET_MAP);
if(!map_asset) return_failure_int; if(!map_asset) return_failure_int;
game.map = map_asset->data; game.map = map_asset->data;
@ -118,15 +118,7 @@ int game_init(void)
if(!entity_new_component(player_entity, PLAYER_SYSTEM)) return_failure_int; if(!entity_new_component(player_entity, PLAYER_SYSTEM)) return_failure_int;
} }
/* ======== Enemy ======== */
/*
{
entity_t *enemy_entity = entity_manager_new_entity(1);
if(!enemy_entity) return_failure_int;
if(!entity_new_component(enemy_entity, LUA_COMPONENT)) return_failure_int;
}
*/
game.is_running = true; game.is_running = true;
return EXIT_SUCCESS; return EXIT_SUCCESS;