aboutsummaryrefslogtreecommitdiff
path: root/NorthstarDedicatedTest/plugin_abi.h
diff options
context:
space:
mode:
Diffstat (limited to 'NorthstarDedicatedTest/plugin_abi.h')
-rw-r--r--NorthstarDedicatedTest/plugin_abi.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/NorthstarDedicatedTest/plugin_abi.h b/NorthstarDedicatedTest/plugin_abi.h
new file mode 100644
index 00000000..edd44ea1
--- /dev/null
+++ b/NorthstarDedicatedTest/plugin_abi.h
@@ -0,0 +1,72 @@
+#pragma once
+#include <string>
+
+#define ABI_VERSION 1
+//clang-format off
+// I hate clang-format
+/// <summary>
+/// This enum is used for referencing the different types of objects we can pass to a plugin
+/// Anything exposed to a plugin must not a be C++ type, as they could break when compiling with a different compiler.
+/// Any ABI incompatible change must increment the version number.
+/// Nothing must be removed from this enum, only appended. When it absolutely necessary to deprecate an object, it should return UNSUPPORTED
+/// when retrieved
+/// </summary>
+enum PluginObject
+{
+ UNSUPPORTED = 0,
+ GAMESTATE = 1,
+ SERVERINFO = 2,
+ PLAYERINFO = 3,
+ DUMMY = 0xFFFF
+};
+
+enum GameStateInfoType
+{
+ ourScore = 0,
+ secondHighestScore = 1,
+ highestScore = 2,
+ connected = 3,
+ loading = 4,
+ map = 5,
+ mapDisplayName = 6,
+ playlist = 7,
+ playlistDisplayName = 8,
+ players = 9
+};
+struct GameState
+{
+ int (*getGameStateChar)(char* out_buf, size_t out_buf_len, GameStateInfoType var);
+ int (*getGameStateInt)(int* out_ptr, GameStateInfoType var);
+ int (*getGameStateBool)(bool* out_ptr, GameStateInfoType var);
+};
+
+enum ServerInfoType
+{
+ id = 0,
+ name = 1,
+ description = 2,
+ password = 3,
+ maxPlayers = 4,
+ roundBased = 5,
+ scoreLimit = 6,
+ endTime = 7
+};
+struct ServerInfo
+{
+ int (*getServerInfoChar)(char* out_buf, size_t out_buf_len, ServerInfoType var);
+ int (*getServerInfoInt)(int* out_ptr, ServerInfoType var);
+ int (*getServerInfoBool)(bool* out_ptr, ServerInfoType var);
+};
+
+enum PlayerInfoType
+{
+ uid = 0
+};
+struct PlayerInfo
+{
+ int (*getPlayerInfoChar)(char* out_buf, size_t out_buf_len, PlayerInfoType var);
+ int (*getPlayerInfoInt)(int* out_ptr, PlayerInfoType var);
+ int (*getPlayerInfoBool)(bool* out_ptr, PlayerInfoType var);
+};
+
+//clang-format on \ No newline at end of file