This commit is contained in:
Nishi 2026-01-09 00:40:51 +09:00
commit 247661fc13
Signed by: nishi
GPG key ID: 27EF69B208EB9343
22 changed files with 325 additions and 8 deletions

View file

@ -5,13 +5,15 @@ include(GNUInstallDirs)
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
include_directories(external/stb)
add_subdirectory(external/milsko)
add_subdirectory(engine)
include_directories(external/stb)
add_subdirectory(client)
install(
FILES resource/logo.png resource/font.png
FILES resource/logo.png
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/assaultfish
)

8
client/CMakeLists.txt Normal file
View file

@ -0,0 +1,8 @@
project(af_client)
file(GLOB af_client_SRC *.c)
add_executable(af_client ${af_client_SRC})
target_link_libraries(af_client PRIVATE GearBox)
install_target(af_client)

14
client/main.c Normal file
View file

@ -0,0 +1,14 @@
#include <GearBox/Foundation.h>
int main(int argc, char** argv){
GBEngineParam param;
GBEngine engine;
param.server = 0;
param.client = 1;
GBInit();
engine = GBEngineCreate(&param);
GBEngineLoop(engine);
}

View file

@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.11)
project(assaultfish)
project(gearbox)
include(GNUInstallDirs)
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}")
@ -17,11 +17,18 @@ endmacro()
add_subdirectory(external/glad)
add_subdirectory(net)
add_subdirectory(common)
file(GLOB GearBox_SRC src/*.c)
add_library(GearBox SHARED ${GearBox_SRC})
target_include_directories(GearBox PUBLIC include)
target_compile_definitions(GearBox PRIVATE _GEARBOX)
install_target(GearBox)
add_subdirectory(tools)
install(
FILES resource/shadow.vs resource/shadow.fs
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/gearbox
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/GearBox
)

View file

@ -1 +0,0 @@
#include <gearbox.h>

View file

@ -0,0 +1,18 @@
#ifndef __GEARBOX_CLIENT_H__
#define __GEARBOX_CLIENT_H__
#include <GearBox/MachDep.h>
#include <GearBox/TypeDefs.h>
#ifdef __cplusplus
extern "C" {
#endif
GBDECL GBClient GBClientCreate(GBEngine engine);
GBDECL void GBClientDestroy(GBClient client);
#ifdef __cplusplus
}
#endif
#endif

View file

@ -0,0 +1,21 @@
#ifndef __GEARBOX_CORE_H__
#define __GEARBOX_CORE_H__
#include <GearBox/MachDep.h>
#include <GearBox/TypeDefs.h>
#ifdef __cplusplus
extern "C" {
#endif
GBDECL void GBInit(void);
GBDECL GBEngine GBEngineCreate(GBEngineParam* param);
GBDECL void GBEngineDestroy(GBEngine engine);
GBDECL void GBEngineStart(GBEngine engine);
GBDECL void GBEngineLoop(GBEngine engine);
#ifdef __cplusplus
}
#endif
#endif

View file

@ -0,0 +1,13 @@
#ifndef __GEARBOX_FOUNDATION_H__
#define __GEARBOX_FOUNDATION_H__
#include <GearBox/MachDep.h>
#include <GearBox/TypeDefs.h>
#include <GearBox/Core.h>
#include <GearBox/Version.h>
#include <GearBox/Log.h>
#include <GearBox/Client.h>
#include <GearBox/Server.h>
#endif

View file

@ -0,0 +1,23 @@
#ifndef __GEARBOX_LOG_H__
#define __GEARBOX_LOG_H__
#include <GearBox/MachDep.h>
#include <GearBox/TypeDefs.h>
#ifdef __cplusplus
extern "C" {
#endif
enum GBLogLevel {
GBLogInfo = 0,
GBLogWarn,
GBLogError
};
GBDECL void GBLog(int level, const char* fmt, ...);
#ifdef __cplusplus
}
#endif
#endif

View file

@ -0,0 +1,17 @@
#ifndef __GEARBOX_MACHDEP_H__
#define __GEARBOX_MACHDEP_H__
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#if defined(_MILSKO) && defined(_WIN32)
#define GBDECL extern __declspec(dllexport)
#elif defined(_WIN32)
#define GBDECL extern __declspec(dllimport)
#else
#define GBDECL extern
#endif
#endif

View file

@ -0,0 +1,18 @@
#ifndef __GEARBOX_SERVER_H__
#define __GEARBOX_SERVER_H__
#include <GearBox/MachDep.h>
#include <GearBox/TypeDefs.h>
#ifdef __cplusplus
extern "C" {
#endif
GBDECL GBServer GBServerCreate(GBEngine engine);
GBDECL void GBServerDestroy(GBServer server);
#ifdef __cplusplus
}
#endif
#endif

View file

@ -0,0 +1,41 @@
#ifndef __GEARBOX_TYPEDEFS_H__
#define __GEARBOX_TYPEDEFS_H__
typedef struct _GBVersion GBVersion;
typedef struct _GBEngineParam GBEngineParam;
#ifdef _GEARBOX
typedef struct _GBClient* GBClient;
typedef struct _GBServer* GBServer;
typedef struct _GBEngine* GBEngine;
#else
typedef void* GBClient;
typedef void* GBServer;
typedef void* GBEngine;
#endif
#ifdef _GEARBOX
struct _GBClient {
};
struct _GBServer {
};
struct _GBEngine {
GBClient client;
GBServer server;
};
#endif
struct _GBVersion {
char string[64];
int majorlevel;
int minorlevel;
int patchlevel;
};
struct _GBEngineParam {
int client;
int server;
};
#endif

View file

@ -0,0 +1,17 @@
#ifndef __GEARBOX_VERSION_H__
#define __GEARBOX_VERSION_H__
#include <GearBox/MachDep.h>
#include <GearBox/TypeDefs.h>
#ifdef __cplusplus
extern "C" {
#endif
GBDECL void GBVersionGet(GBVersion* version);
#ifdef __cplusplus
}
#endif
#endif

View file

@ -2,7 +2,6 @@ cmake_minimum_required(VERSION 3.11)
project(gbnet)
add_library(gbnet SHARED src/client.c src/server.c src/socket.c src/stb_ds.c)
target_include_directories(gbnet PUBLIC include)
find_package(PkgConfig)

13
engine/src/client.c Normal file
View file

@ -0,0 +1,13 @@
#include <GearBox/Client.h>
#include <GearBox/Log.h>
GBClient GBClientCreate(GBEngine engine) {
GBLog(GBLogInfo, "Creating client");
return NULL;
}
void GBClientDestroy(GBClient client) {
free(client);
}

55
engine/src/core.c Normal file
View file

@ -0,0 +1,55 @@
#include <GearBox/Core.h>
#include <GearBox/Version.h>
#include <GearBox/Log.h>
#include <GearBox/Client.h>
#include <GearBox/Server.h>
void GBInit(void) {
GBVersion version;
GBVersionGet(&version);
GBLog(GBLogInfo, "GearBox Engine %s", version.string);
}
GBEngine GBEngineCreate(GBEngineParam* param) {
GBEngine engine = malloc(sizeof(*engine));
memset(engine, 0, sizeof(*engine));
if(engine != NULL && param->client && (engine->client = GBClientCreate(engine)) == NULL) {
GBLog(GBLogError, "Failed to create client");
GBEngineDestroy(engine);
engine = NULL;
}
if(engine != NULL && param->server && (engine->server = GBServerCreate(engine)) == NULL) {
GBLog(GBLogError, "Failed to create server");
GBEngineDestroy(engine);
engine = NULL;
}
if(engine == NULL) {
GBLog(GBLogError, "Failed to create engine");
}
return engine;
}
void GBEngineDestroy(GBEngine engine) {
if(engine->server != NULL) GBServerDestroy(engine->server);
if(engine->client != NULL) GBClientDestroy(engine->client);
free(engine);
}
void GBEngineStart(GBEngine engine) {
}
void GBEngineLoop(GBEngine engine) {
}

27
engine/src/log.c Normal file
View file

@ -0,0 +1,27 @@
#include <GearBox/Log.h>
void GBLog(int level, const char* fmt, ...) {
va_list va;
FILE* out = stdout;
#ifdef _WIN32
#else
fprintf(out, "[\x1b[mGearBox\x1b[m|");
if(level == GBLogInfo) {
fprintf(out, "\x1b[1mINFO\x1b[m ");
} else if(level == GBLogWarn) {
fprintf(out, "\x1b[1m\x1b[33mWARN\x1b[m ");
} else if(level == GBLogError) {
fprintf(out, "\x1b[1m\x1b[31mERROR\x1b[m");
}
#endif
fprintf(out, "] ");
va_start(va, fmt);
vfprintf(out, fmt, va);
va_end(va);
fprintf(out, "\n");
}

14
engine/src/server.c Normal file
View file

@ -0,0 +1,14 @@
#include <GearBox/Server.h>
#include <GearBox/Log.h>
GBServer GBServerCreate(GBEngine engine) {
GBLog(GBLogInfo, "Creating server");
return NULL;
}
void GBServerDestroy(GBServer server) {
free(server);
}

9
engine/src/version.c Normal file
View file

@ -0,0 +1,9 @@
#include <GearBox/Version.h>
void GBVersionGet(GBVersion* version) {
version->majorlevel = 0;
version->minorlevel = 0;
version->patchlevel = 0;
sprintf(version->string, "%d.%d.%d", version->majorlevel, version->minorlevel, version->patchlevel);
}

View file

@ -1,3 +1,5 @@
project(gbtools)
include(GNUInstallDirs)
macro(compile_tool name)

View file

@ -1,2 +1,2 @@
#!/bin/sh
clang-format --verbose -i `find engine/common engine/net engine/tools -name "*.c" -or -name "*.h"`
clang-format --verbose -i `find engine/src engine/include engine/net engine/tools -name "*.c" -or -name "*.h"`