diff options
author | Emma Miler <27428383+emma-miler@users.noreply.github.com> | 2022-03-04 00:16:01 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-03 23:16:01 +0000 |
commit | 13dcc7d9307b160131ed80832efda99001aa6c6d (patch) | |
tree | ff7e021c2927f7d3e0ee0bb84642c6ee1c9b24ab /NorthstarDedicatedTest/plugin_abi.h | |
parent | 62e137b32ad7c601b2db37e69b9f435a7dbc730d (diff) | |
download | NorthstarLauncher-13dcc7d9307b160131ed80832efda99001aa6c6d.tar.gz NorthstarLauncher-13dcc7d9307b160131ed80832efda99001aa6c6d.zip |
Add launcher code for plugin support (#93)
* rpc
* RPC
* Undoing broken shit
* temp
* Revert "temp"
This reverts commit 4875b5aca2b0d6b03183d220120c03df28759a95.
* Include a whole bunch of new stuff
* fix id
* Added manifest and added some verification
* Fixed my oopsies
* Safety commit
* Moved over to new plugin abi
* Small docs changes and made plugin loading use ABI_VERSION
* Moving discord rpc plugin stuff to a separate repo
* Add some comments to `plugins.cpp`
* Moved internal structs from `plugin_abi.h` to `plugins.cpp`
* Add CLA `-noplugins`
* Code formatting changes so clang-format doesn't scream at me
* i hate clang-format
* why does this fail to build now wtf
* Update plugins.cpp
* Merged and updated to new convar system
* Implemented changes requested in review
* Removed a few more of those nasty comments
* Removed extra build configs
Co-authored-by: BobTheBob <32057864+BobTheBob9@users.noreply.github.com>
Diffstat (limited to 'NorthstarDedicatedTest/plugin_abi.h')
-rw-r--r-- | NorthstarDedicatedTest/plugin_abi.h | 72 |
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 |