From fe723c6ced041e1d07afec4f5a6649fc9a655893 Mon Sep 17 00:00:00 2001
From: Weicao-CatilGrass <1992414357@qq.com>
Date: Sat, 14 Jun 2025 05:22:25 +0800
Subject: Add CBinding Example
---
.idea/NoGamepads.iml | 7 +
Project_Export.toml | 15 +
.../bindings/lang/clang/binding_example/.gitignore | 5 +
.../lang/clang/binding_example/.idea/.gitignore | 8 +
.../binding_example/.idea/binding_example.iml | 2 +
.../lang/clang/binding_example/.idea/editor.xml | 344 +++++++++++++++++++++
.../lang/clang/binding_example/.idea/misc.xml | 7 +
.../lang/clang/binding_example/.idea/modules.xml | 8 +
.../lang/clang/binding_example/.idea/vcs.xml | 6 +
.../lang/clang/binding_example/CMakeLists.txt | 23 ++
core/bindings/lang/clang/binding_example/main.c | 7 +
.../lang/clang/configures/nogamepads_data.toml | 5 +-
core/bindings/lang/clang/headers/nogamepads_data.h | 90 +++---
core/bindings/lang/clang/src/data/ngpd_message.rs | 160 ++++++----
export/src/bin/export_project.rs | 16 +
15 files changed, 587 insertions(+), 116 deletions(-)
create mode 100644 core/bindings/lang/clang/binding_example/.gitignore
create mode 100644 core/bindings/lang/clang/binding_example/.idea/.gitignore
create mode 100644 core/bindings/lang/clang/binding_example/.idea/binding_example.iml
create mode 100644 core/bindings/lang/clang/binding_example/.idea/editor.xml
create mode 100644 core/bindings/lang/clang/binding_example/.idea/misc.xml
create mode 100644 core/bindings/lang/clang/binding_example/.idea/modules.xml
create mode 100644 core/bindings/lang/clang/binding_example/.idea/vcs.xml
create mode 100644 core/bindings/lang/clang/binding_example/CMakeLists.txt
create mode 100644 core/bindings/lang/clang/binding_example/main.c
diff --git a/.idea/NoGamepads.iml b/.idea/NoGamepads.iml
index ec9cc89..e154ed3 100644
--- a/.idea/NoGamepads.iml
+++ b/.idea/NoGamepads.iml
@@ -20,6 +20,13 @@
+
+
+
+
+
+
+
diff --git a/Project_Export.toml b/Project_Export.toml
index 9b1e7bd..89bc40c 100644
--- a/Project_Export.toml
+++ b/Project_Export.toml
@@ -33,4 +33,19 @@ win_exes = { raw = "./", target = "./bin", files = [
dlls = { raw = "./", target = "./lib", files = [
"nogamepads_c.dll",
"nogamepads_c.dll.lib"
+] }
+
+[release.deploy_root]
+
+# Headers
+headers = { raw = "./core/bindings/lang/clang/headers/", target = "./core/bindings/lang/clang/binding_example/includes/", files = [
+ "nogamepads_data.h"
+] }
+
+[release.deploy_deps]
+
+# Windows dynamic link libraries
+dlls = { raw = "./", target = "./core/bindings/lang/clang/binding_example/libs/", files = [
+ "nogamepads_c.dll",
+ "nogamepads_c.dll.lib"
] }
\ No newline at end of file
diff --git a/core/bindings/lang/clang/binding_example/.gitignore b/core/bindings/lang/clang/binding_example/.gitignore
new file mode 100644
index 0000000..b2e2da6
--- /dev/null
+++ b/core/bindings/lang/clang/binding_example/.gitignore
@@ -0,0 +1,5 @@
+/include/
+/include/**
+/libs/
+/libs/**
+/cmake-build-debug/
diff --git a/core/bindings/lang/clang/binding_example/.idea/.gitignore b/core/bindings/lang/clang/binding_example/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/core/bindings/lang/clang/binding_example/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/core/bindings/lang/clang/binding_example/.idea/binding_example.iml b/core/bindings/lang/clang/binding_example/.idea/binding_example.iml
new file mode 100644
index 0000000..f08604b
--- /dev/null
+++ b/core/bindings/lang/clang/binding_example/.idea/binding_example.iml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/core/bindings/lang/clang/binding_example/.idea/editor.xml b/core/bindings/lang/clang/binding_example/.idea/editor.xml
new file mode 100644
index 0000000..25c6c37
--- /dev/null
+++ b/core/bindings/lang/clang/binding_example/.idea/editor.xml
@@ -0,0 +1,344 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core/bindings/lang/clang/binding_example/.idea/misc.xml b/core/bindings/lang/clang/binding_example/.idea/misc.xml
new file mode 100644
index 0000000..0b76fe5
--- /dev/null
+++ b/core/bindings/lang/clang/binding_example/.idea/misc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core/bindings/lang/clang/binding_example/.idea/modules.xml b/core/bindings/lang/clang/binding_example/.idea/modules.xml
new file mode 100644
index 0000000..38132ea
--- /dev/null
+++ b/core/bindings/lang/clang/binding_example/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core/bindings/lang/clang/binding_example/.idea/vcs.xml b/core/bindings/lang/clang/binding_example/.idea/vcs.xml
new file mode 100644
index 0000000..bc59970
--- /dev/null
+++ b/core/bindings/lang/clang/binding_example/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core/bindings/lang/clang/binding_example/CMakeLists.txt b/core/bindings/lang/clang/binding_example/CMakeLists.txt
new file mode 100644
index 0000000..fde3e60
--- /dev/null
+++ b/core/bindings/lang/clang/binding_example/CMakeLists.txt
@@ -0,0 +1,23 @@
+cmake_minimum_required(VERSION 3.31)
+project(binding_example C)
+
+set(CMAKE_C_STANDARD 99)
+
+add_executable(binding_example main.c)
+
+include_directories(${PROJECT_SOURCE_DIR}/include)
+link_directories(${PROJECT_SOURCE_DIR}/libs)
+
+target_link_libraries(binding_example
+ ${PROJECT_SOURCE_DIR}/libs/nogamepads_c.dll.lib
+)
+
+if(WIN32)
+ set(DLL_FILE "${PROJECT_SOURCE_DIR}/libs/nogamepads_c.dll")
+ add_custom_command(TARGET binding_example POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E copy
+ "${DLL_FILE}"
+ $
+ COMMENT "Copying DLL to output directory"
+ )
+endif()
\ No newline at end of file
diff --git a/core/bindings/lang/clang/binding_example/main.c b/core/bindings/lang/clang/binding_example/main.c
new file mode 100644
index 0000000..d01ee10
--- /dev/null
+++ b/core/bindings/lang/clang/binding_example/main.c
@@ -0,0 +1,7 @@
+#include
+#include "nogamepads_data.h"
+
+int main(void) {
+ const FfiPlayer *player = player_register("MyAccount", "Password123456");
+ printf(player->account.id);
+}
\ No newline at end of file
diff --git a/core/bindings/lang/clang/configures/nogamepads_data.toml b/core/bindings/lang/clang/configures/nogamepads_data.toml
index 56d645d..8078516 100644
--- a/core/bindings/lang/clang/configures/nogamepads_data.toml
+++ b/core/bindings/lang/clang/configures/nogamepads_data.toml
@@ -11,7 +11,4 @@ include = [
"ngpd_game_info",
"ngpd_message",
"ngpd_player"
-]
-
-[fn]
-prefix = "ngpd_data_"
\ No newline at end of file
+]
\ No newline at end of file
diff --git a/core/bindings/lang/clang/headers/nogamepads_data.h b/core/bindings/lang/clang/headers/nogamepads_data.h
index 6d9f1ad..83b8de6 100644
--- a/core/bindings/lang/clang/headers/nogamepads_data.h
+++ b/core/bindings/lang/clang/headers/nogamepads_data.h
@@ -9,49 +9,49 @@
#include
typedef enum FfiConnectionMessageTag {
- Join,
- RequestGameInfos,
- RequestLayoutConfigure,
- RequestSkinPackage,
- Ready,
- Err,
+ ConnectionJoin,
+ ConnectionRequestGameInfos,
+ ConnectionRequestLayoutConfigure,
+ ConnectionRequestSkinPackage,
+ ConnectionReady,
+ ConnectionError,
} FfiConnectionMessageTag;
typedef enum FfiConnectionResponseMessageTag {
- GameInfos,
- Deny,
- Fail,
- Ok,
- Welcome,
- Err,
+ GameInfosResponse,
+ DenyResponse,
+ FailResponse,
+ OkResponse,
+ WelcomeResponse,
+ ErrorResponse,
} FfiConnectionResponseMessageTag;
typedef enum FfiControlMessageTag {
- Msg,
- Pressed,
- Released,
- Axis,
- Dir,
- Exit,
- Err,
- End,
+ CtrlMsg,
+ CtrlPressed,
+ CtrlReleased,
+ CtrlAxis,
+ CtrlDir,
+ CtrlExit,
+ CtrlError,
+ CtrlEnd,
} FfiControlMessageTag;
typedef enum FfiExitReason {
- Exit,
- GameOver,
- ServerClosed,
- YouAreKicked,
- YouAreBanned,
- Err,
+ ExitReason,
+ GameOverReason,
+ ServerClosedReason,
+ YouAreKickedReason,
+ YouAreBannedReason,
+ ErrorReason,
} FfiExitReason;
typedef enum FfiGameMessageTag {
- EventTrigger,
- Msg,
- LetExit,
- Err,
- End,
+ GameEventTrigger,
+ GameMsg,
+ GameLetExit,
+ GameError,
+ GameEnd,
} FfiGameMessageTag;
typedef enum FfiJoinFailedMessage {
@@ -146,33 +146,33 @@ typedef struct FfiConnectionResponseMessage {
extern "C" {
#endif // __cplusplus
-ngpd_data_ void free_c_string(char *ptr);
+void free_c_string(char *ptr);
-ngpd_data_ struct FfiPlayer *player_register(const char *id, const char *password);
+struct FfiPlayer *player_register(const char *id, const char *password);
-ngpd_data_ bool player_check(const struct FfiPlayer *player, const char *password);
+bool player_check(const struct FfiPlayer *player, const char *password);
-ngpd_data_ void player_set_nickname(struct FfiPlayer *player, const char *nickname);
+void player_set_nickname(struct FfiPlayer *player, const char *nickname);
-ngpd_data_ void player_set_hue(struct FfiPlayer *player, int hue);
+void player_set_hue(struct FfiPlayer *player, int hue);
-ngpd_data_ void player_set_hsv(struct FfiPlayer *player, int hue, double saturation, double value);
+void player_set_hsv(struct FfiPlayer *player, int hue, double saturation, double value);
-ngpd_data_ void player_free(struct FfiPlayer *player);
+void player_free(struct FfiPlayer *player);
-ngpd_data_ void free_control_message(struct FfiControlMessage msg);
+void free_control_message(struct FfiControlMessage msg);
-ngpd_data_ void free_game_message(struct FfiGameMessage msg);
+void free_game_message(struct FfiGameMessage msg);
-ngpd_data_ void free_exit_reason(enum FfiExitReason msg);
+void free_exit_reason(enum FfiExitReason msg);
-ngpd_data_ void free_connection_message(struct FfiConnectionMessage msg);
+void free_connection_message(struct FfiConnectionMessage msg);
-ngpd_data_ void free_connection_response_message(struct FfiConnectionResponseMessage msg);
+void free_connection_response_message(struct FfiConnectionResponseMessage msg);
-ngpd_data_ void free_join_failed_message(enum FfiJoinFailedMessage msg);
+void free_join_failed_message(enum FfiJoinFailedMessage msg);
-ngpd_data_ void free_game_info(struct FfiGameInfo map);
+void free_game_info(struct FfiGameInfo map);
#ifdef __cplusplus
} // extern "C"
diff --git a/core/bindings/lang/clang/src/data/ngpd_message.rs b/core/bindings/lang/clang/src/data/ngpd_message.rs
index c669299..c11ac12 100644
--- a/core/bindings/lang/clang/src/data/ngpd_message.rs
+++ b/core/bindings/lang/clang/src/data/ngpd_message.rs
@@ -14,7 +14,14 @@ pub struct FfiControlMessage {
#[repr(C)]
pub enum FfiControlMessageTag {
- Msg, Pressed, Released, Axis, Dir, Exit, Err, End
+ CtrlMsg,
+ CtrlPressed,
+ CtrlReleased,
+ CtrlAxis,
+ CtrlDir,
+ CtrlExit,
+ CtrlError,
+ CtrlEnd
}
#[repr(C)]
@@ -47,7 +54,11 @@ pub struct FfiGameMessage {
#[repr(C)]
pub enum FfiGameMessageTag {
- EventTrigger, Msg, LetExit, Err, End
+ GameEventTrigger,
+ GameMsg,
+ GameLetExit,
+ GameError,
+ GameEnd
}
#[repr(C)]
@@ -60,7 +71,12 @@ pub union FfiGameMessageUnion {
#[repr(C)]
pub enum FfiExitReason {
- Exit, GameOver, ServerClosed, YouAreKicked, YouAreBanned, Err
+ ExitReason,
+ GameOverReason,
+ ServerClosedReason,
+ YouAreKickedReason,
+ YouAreBannedReason,
+ ErrorReason
}
#[repr(C)]
@@ -71,7 +87,12 @@ pub struct FfiConnectionMessage {
#[repr(C)]
pub enum FfiConnectionMessageTag {
- Join, RequestGameInfos, RequestLayoutConfigure, RequestSkinPackage, Ready, Err
+ ConnectionJoin,
+ ConnectionRequestGameInfos,
+ ConnectionRequestLayoutConfigure,
+ ConnectionRequestSkinPackage,
+ ConnectionReady,
+ ConnectionError
}
#[repr(C)]
@@ -88,7 +109,12 @@ pub struct FfiConnectionResponseMessage {
#[repr(C)]
pub enum FfiConnectionResponseMessageTag {
- GameInfos, Deny, Fail, Ok, Welcome, Err
+ GameInfosResponse,
+ DenyResponse,
+ FailResponse,
+ OkResponse,
+ WelcomeResponse,
+ ErrorResponse
}
#[repr(C)]
@@ -108,7 +134,7 @@ impl From for FfiControlMessage {
match value {
ControlMessage::Msg(msg) => unsafe {
FfiControlMessage {
- tag: FfiControlMessageTag::Msg,
+ tag: FfiControlMessageTag::CtrlMsg,
data: FfiControlMessageUnion {
message: str_rs_to_c(msg),
}
@@ -116,7 +142,7 @@ impl From for FfiControlMessage {
}
ControlMessage::Pressed(key) => {
FfiControlMessage {
- tag: FfiControlMessageTag::Pressed,
+ tag: FfiControlMessageTag::CtrlPressed,
data: FfiControlMessageUnion {
key: key.into()
}
@@ -124,7 +150,7 @@ impl From for FfiControlMessage {
}
ControlMessage::Released(key) => {
FfiControlMessage {
- tag: FfiControlMessageTag::Released,
+ tag: FfiControlMessageTag::CtrlReleased,
data: FfiControlMessageUnion {
key: key.into()
}
@@ -132,7 +158,7 @@ impl From for FfiControlMessage {
}
ControlMessage::Axis(key, axis) => {
FfiControlMessage {
- tag: FfiControlMessageTag::Axis,
+ tag: FfiControlMessageTag::CtrlAxis,
data: FfiControlMessageUnion {
key_and_axis: ManuallyDrop::new(FfiKeyAndAxis {
key: key.into(),
@@ -143,7 +169,7 @@ impl From for FfiControlMessage {
}
ControlMessage::Dir(key, (x, y)) => {
FfiControlMessage {
- tag: FfiControlMessageTag::Axis,
+ tag: FfiControlMessageTag::CtrlAxis,
data: FfiControlMessageUnion {
key_and_direction: ManuallyDrop::new(FfiKeyAndDirection {
key: key.into(),
@@ -154,19 +180,19 @@ impl From for FfiControlMessage {
}
ControlMessage::Exit => {
FfiControlMessage {
- tag: FfiControlMessageTag::Axis,
+ tag: FfiControlMessageTag::CtrlAxis,
data: FfiControlMessageUnion { none: () }
}
}
ControlMessage::Err => {
FfiControlMessage {
- tag: FfiControlMessageTag::Axis,
+ tag: FfiControlMessageTag::CtrlAxis,
data: FfiControlMessageUnion { none: () }
}
}
ControlMessage::End => {
FfiControlMessage {
- tag: FfiControlMessageTag::Axis,
+ tag: FfiControlMessageTag::CtrlAxis,
data: FfiControlMessageUnion { none: () }
}
}
@@ -177,30 +203,30 @@ impl From for FfiControlMessage {
impl From for ControlMessage {
fn from(value: FfiControlMessage) -> Self {
match value.tag {
- FfiControlMessageTag::Msg => unsafe {
+ FfiControlMessageTag::CtrlMsg => unsafe {
ControlMessage::Msg(str_c_to_rs(value.data.message))
}
- FfiControlMessageTag::Pressed => unsafe {
+ FfiControlMessageTag::CtrlPressed => unsafe {
ControlMessage::Pressed(value.data.key.into())
}
- FfiControlMessageTag::Released => unsafe {
+ FfiControlMessageTag::CtrlReleased => unsafe {
ControlMessage::Released(value.data.key.into())
}
- FfiControlMessageTag::Axis => {
+ FfiControlMessageTag::CtrlAxis => {
let value = unsafe { value.data.key_and_axis };
ControlMessage::Axis(value.key.into(), value.axis.into())
}
- FfiControlMessageTag::Dir => {
+ FfiControlMessageTag::CtrlDir => {
let value = unsafe { value.data.key_and_direction };
ControlMessage::Dir(value.key.into(), (value.x.into(), value.y.into()))
}
- FfiControlMessageTag::Exit => {
+ FfiControlMessageTag::CtrlExit => {
ControlMessage::Exit
}
- FfiControlMessageTag::Err => {
+ FfiControlMessageTag::CtrlError => {
ControlMessage::Err
}
- FfiControlMessageTag::End => {
+ FfiControlMessageTag::CtrlEnd => {
ControlMessage::End
}
}
@@ -212,7 +238,7 @@ impl From for FfiGameMessage {
match value {
GameMessage::EventTrigger(key) => {
FfiGameMessage {
- tag: FfiGameMessageTag::EventTrigger,
+ tag: FfiGameMessageTag::GameEventTrigger,
data: FfiGameMessageUnion {
key: key.into()
}
@@ -220,7 +246,7 @@ impl From for FfiGameMessage {
}
GameMessage::Msg(msg) => unsafe {
FfiGameMessage {
- tag: FfiGameMessageTag::Msg,
+ tag: FfiGameMessageTag::GameMsg,
data: FfiGameMessageUnion {
message: str_rs_to_c(msg)
}
@@ -228,7 +254,7 @@ impl From for FfiGameMessage {
}
GameMessage::LetExit(reason) => {
FfiGameMessage {
- tag: FfiGameMessageTag::LetExit,
+ tag: FfiGameMessageTag::GameLetExit,
data: FfiGameMessageUnion {
exit_reason: ManuallyDrop::new(FfiExitReason::from(&reason))
}
@@ -236,13 +262,13 @@ impl From for FfiGameMessage {
}
GameMessage::Err => {
FfiGameMessage {
- tag: FfiGameMessageTag::Err,
+ tag: FfiGameMessageTag::GameError,
data: FfiGameMessageUnion { none: () }
}
}
GameMessage::End => {
FfiGameMessage {
- tag: FfiGameMessageTag::End,
+ tag: FfiGameMessageTag::GameEnd,
data: FfiGameMessageUnion { none: () }
}
}
@@ -253,19 +279,19 @@ impl From for FfiGameMessage {
impl From for GameMessage {
fn from(value: FfiGameMessage) -> Self {
match value.tag {
- FfiGameMessageTag::EventTrigger => unsafe {
+ FfiGameMessageTag::GameEventTrigger => unsafe {
GameMessage::EventTrigger(value.data.key.into())
}
- FfiGameMessageTag::Msg => unsafe {
+ FfiGameMessageTag::GameMsg => unsafe {
GameMessage::Msg(str_c_to_rs(value.data.message))
}
- FfiGameMessageTag::LetExit => unsafe {
+ FfiGameMessageTag::GameLetExit => unsafe {
GameMessage::LetExit(value.data.exit_reason.deref().into())
}
- FfiGameMessageTag::Err => {
+ FfiGameMessageTag::GameError => {
GameMessage::Err
}
- FfiGameMessageTag::End => {
+ FfiGameMessageTag::GameEnd => {
GameMessage::End
}
}
@@ -275,12 +301,12 @@ impl From for GameMessage {
impl From<&ExitReason> for FfiExitReason {
fn from(value: &ExitReason) -> Self {
match value {
- ExitReason::Exit => { FfiExitReason::Exit }
- ExitReason::GameOver => { FfiExitReason::GameOver }
- ExitReason::ServerClosed => { FfiExitReason::ServerClosed }
- ExitReason::YouAreKicked => { FfiExitReason::YouAreKicked }
- ExitReason::YouAreBanned => { FfiExitReason::YouAreBanned }
- ExitReason::Err => { FfiExitReason::Err }
+ ExitReason::Exit => { FfiExitReason::ExitReason }
+ ExitReason::GameOver => { FfiExitReason::GameOverReason }
+ ExitReason::ServerClosed => { FfiExitReason::ServerClosedReason }
+ ExitReason::YouAreKicked => { FfiExitReason::YouAreKickedReason }
+ ExitReason::YouAreBanned => { FfiExitReason::YouAreBannedReason }
+ ExitReason::Err => { FfiExitReason::ErrorReason }
}
}
}
@@ -288,12 +314,12 @@ impl From<&ExitReason> for FfiExitReason {
impl From<&FfiExitReason> for ExitReason {
fn from(value: &FfiExitReason) -> Self {
match value {
- FfiExitReason::Exit => { ExitReason::Exit }
- FfiExitReason::GameOver => { ExitReason::GameOver }
- FfiExitReason::ServerClosed => { ExitReason::ServerClosed }
- FfiExitReason::YouAreKicked => { ExitReason::YouAreKicked }
- FfiExitReason::YouAreBanned => { ExitReason::YouAreBanned }
- FfiExitReason::Err => { ExitReason::Err }
+ FfiExitReason::ExitReason => { ExitReason::Exit }
+ FfiExitReason::GameOverReason => { ExitReason::GameOver }
+ FfiExitReason::ServerClosedReason => { ExitReason::ServerClosed }
+ FfiExitReason::YouAreKickedReason => { ExitReason::YouAreKicked }
+ FfiExitReason::YouAreBannedReason => { ExitReason::YouAreBanned }
+ FfiExitReason::ErrorReason => { ExitReason::Err }
}
}
}
@@ -304,7 +330,7 @@ impl From for FfiConnectionMessage {
ConnectionMessage::Join(player) => {
let c_player : FfiPlayer = (&player).into();
FfiConnectionMessage {
- tag: FfiConnectionMessageTag::Join,
+ tag: FfiConnectionMessageTag::ConnectionJoin,
data: FfiConnectionMessageUnion {
player: ManuallyDrop::new(c_player),
}
@@ -312,31 +338,31 @@ impl From for FfiConnectionMessage {
}
ConnectionMessage::RequestGameInfos => {
FfiConnectionMessage {
- tag: FfiConnectionMessageTag::RequestGameInfos,
+ tag: FfiConnectionMessageTag::ConnectionRequestGameInfos,
data: FfiConnectionMessageUnion { none: () }
}
}
ConnectionMessage::RequestLayoutConfigure => {
FfiConnectionMessage {
- tag: FfiConnectionMessageTag::RequestLayoutConfigure,
+ tag: FfiConnectionMessageTag::ConnectionRequestLayoutConfigure,
data: FfiConnectionMessageUnion { none: () }
}
}
ConnectionMessage::RequestSkinPackage => {
FfiConnectionMessage {
- tag: FfiConnectionMessageTag::RequestSkinPackage,
+ tag: FfiConnectionMessageTag::ConnectionRequestSkinPackage,
data: FfiConnectionMessageUnion { none: () }
}
}
ConnectionMessage::Ready => {
FfiConnectionMessage {
- tag: FfiConnectionMessageTag::Ready,
+ tag: FfiConnectionMessageTag::ConnectionReady,
data: FfiConnectionMessageUnion { none: () }
}
}
ConnectionMessage::Err => {
FfiConnectionMessage {
- tag: FfiConnectionMessageTag::Err,
+ tag: FfiConnectionMessageTag::ConnectionError,
data: FfiConnectionMessageUnion { none: () }
}
}
@@ -347,14 +373,14 @@ impl From for FfiConnectionMessage {
impl From for ConnectionMessage {
fn from(value: FfiConnectionMessage) -> Self {
match value.tag {
- FfiConnectionMessageTag::Join => unsafe {
+ FfiConnectionMessageTag::ConnectionJoin => unsafe {
ConnectionMessage::Join(value.data.player.deref().try_into().unwrap_or_default())
}
- FfiConnectionMessageTag::RequestGameInfos => { ConnectionMessage::RequestGameInfos }
- FfiConnectionMessageTag::RequestLayoutConfigure => { ConnectionMessage::RequestLayoutConfigure }
- FfiConnectionMessageTag::RequestSkinPackage => { ConnectionMessage::RequestSkinPackage }
- FfiConnectionMessageTag::Ready => { ConnectionMessage::Ready }
- FfiConnectionMessageTag::Err => { ConnectionMessage::Err }
+ FfiConnectionMessageTag::ConnectionRequestGameInfos => { ConnectionMessage::RequestGameInfos }
+ FfiConnectionMessageTag::ConnectionRequestLayoutConfigure => { ConnectionMessage::RequestLayoutConfigure }
+ FfiConnectionMessageTag::ConnectionRequestSkinPackage => { ConnectionMessage::RequestSkinPackage }
+ FfiConnectionMessageTag::ConnectionReady => { ConnectionMessage::Ready }
+ FfiConnectionMessageTag::ConnectionError => { ConnectionMessage::Err }
}
}
}
@@ -364,7 +390,7 @@ impl From for FfiConnectionResponseMessage {
match value {
ConnectionResponseMessage::GameInfos(info) => {
FfiConnectionResponseMessage {
- tag: FfiConnectionResponseMessageTag::GameInfos,
+ tag: FfiConnectionResponseMessageTag::GameInfosResponse,
data: FfiConnectionResponseMessageUnion {
game_info: ManuallyDrop::new((&info).into())
}
@@ -372,7 +398,7 @@ impl From for FfiConnectionResponseMessage {
}
ConnectionResponseMessage::Deny(fail) => {
FfiConnectionResponseMessage {
- tag: FfiConnectionResponseMessageTag::Deny,
+ tag: FfiConnectionResponseMessageTag::DenyResponse,
data: FfiConnectionResponseMessageUnion {
failed_message: ManuallyDrop::new((&fail).into())
}
@@ -380,7 +406,7 @@ impl From for FfiConnectionResponseMessage {
}
ConnectionResponseMessage::Fail(fail) => {
FfiConnectionResponseMessage {
- tag: FfiConnectionResponseMessageTag::Fail,
+ tag: FfiConnectionResponseMessageTag::FailResponse,
data: FfiConnectionResponseMessageUnion {
failed_message: ManuallyDrop::new((&fail).into())
}
@@ -388,19 +414,19 @@ impl From for FfiConnectionResponseMessage {
}
ConnectionResponseMessage::Ok => {
FfiConnectionResponseMessage {
- tag: FfiConnectionResponseMessageTag::Ok,
+ tag: FfiConnectionResponseMessageTag::OkResponse,
data: FfiConnectionResponseMessageUnion { none: () }
}
}
ConnectionResponseMessage::Welcome => {
FfiConnectionResponseMessage {
- tag: FfiConnectionResponseMessageTag::Welcome,
+ tag: FfiConnectionResponseMessageTag::WelcomeResponse,
data: FfiConnectionResponseMessageUnion { none: () }
}
}
ConnectionResponseMessage::Err => {
FfiConnectionResponseMessage {
- tag: FfiConnectionResponseMessageTag::Err,
+ tag: FfiConnectionResponseMessageTag::ErrorResponse,
data: FfiConnectionResponseMessageUnion { none: () }
}
}
@@ -411,22 +437,22 @@ impl From for FfiConnectionResponseMessage {
impl From for ConnectionResponseMessage {
fn from(value: FfiConnectionResponseMessage) -> Self {
match value.tag {
- FfiConnectionResponseMessageTag::GameInfos => unsafe {
+ FfiConnectionResponseMessageTag::GameInfosResponse => unsafe {
ConnectionResponseMessage::GameInfos(value.data.game_info.deref().try_into().unwrap_or_default())
}
- FfiConnectionResponseMessageTag::Deny => unsafe {
+ FfiConnectionResponseMessageTag::DenyResponse => unsafe {
ConnectionResponseMessage::Deny(value.data.failed_message.deref().try_into().unwrap_or_default())
}
- FfiConnectionResponseMessageTag::Fail => unsafe {
+ FfiConnectionResponseMessageTag::FailResponse => unsafe {
ConnectionResponseMessage::Fail(value.data.failed_message.deref().try_into().unwrap_or_default())
}
- FfiConnectionResponseMessageTag::Ok => {
+ FfiConnectionResponseMessageTag::OkResponse => {
ConnectionResponseMessage::Ok
}
- FfiConnectionResponseMessageTag::Welcome => {
+ FfiConnectionResponseMessageTag::WelcomeResponse => {
ConnectionResponseMessage::Welcome
}
- FfiConnectionResponseMessageTag::Err => {
+ FfiConnectionResponseMessageTag::ErrorResponse => {
ConnectionResponseMessage::Err
}
}
diff --git a/export/src/bin/export_project.rs b/export/src/bin/export_project.rs
index b83e54b..91bfc87 100644
--- a/export/src/bin/export_project.rs
+++ b/export/src/bin/export_project.rs
@@ -15,6 +15,8 @@ pub struct Config {
pub struct Release {
pub root: HashMap,
pub deps: HashMap,
+ pub deploy_root: HashMap,
+ pub deploy_deps: HashMap
}
#[derive(Debug, Deserialize)]
@@ -61,6 +63,20 @@ pub fn main() {
copy_files(&raw_path, &target_path, data.1.files);
}
+ for data in config.release.deploy_root {
+ println!("Deploy \"{}\"", data.0);
+ let raw_path = root.join(data.1.raw);
+ let target_path = root.join(data.1.target);
+ copy_files(&raw_path, &target_path, data.1.files);
+ }
+
+ for data in config.release.deploy_deps {
+ println!("Deploy \"{}\"", data.0);
+ let raw_path = target_dir.join(data.1.raw);
+ let target_path = root.join(data.1.target);
+ copy_files(&raw_path, &target_path, data.1.files);
+ }
+
if let Ok(()) = open_in_explorer(export_version_dir) {
println!("DONE");
}
--
cgit