mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-08 15:58:04 +00:00
feat(Core): Add clustering support (#16832)
Co-authored-by: 3kynox <thierry.prost@gmail.com> Co-authored-by: nox <nox@noxen.net> Co-authored-by: Ludwig <sudlud@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
f23ac046ab
commit
6f0ba8e896
2
deps/CMakeLists.txt
vendored
2
deps/CMakeLists.txt
vendored
@@ -47,3 +47,5 @@ if (BUILD_TOOLS_MAPS)
|
||||
add_subdirectory(libmpq)
|
||||
add_subdirectory(fkYAML)
|
||||
endif()
|
||||
|
||||
add_subdirectory(libsidecar)
|
||||
|
||||
4
deps/PackageList.txt
vendored
4
deps/PackageList.txt
vendored
@@ -85,3 +85,7 @@ recastnavigation (Recast is state of the art navigation mesh construction toolse
|
||||
fkYAML (A C++ header-only YAML library)
|
||||
https://github.com/fktn-k/fkYAML
|
||||
Version: 721edb3e1a817e527fd9e1e18a3bea300822522e
|
||||
|
||||
libsidecar (enables interaction with other components when the worldserver is running in cluster mode. It requires building a shared library first and putting it in the corresponding folder.)
|
||||
https://github.com/walkline/ToCloud9/tree/master/game-server/libsidecar
|
||||
Version: master
|
||||
|
||||
66
deps/libsidecar/CMakeLists.txt
vendored
Normal file
66
deps/libsidecar/CMakeLists.txt
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
#
|
||||
# This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
|
||||
#
|
||||
# This file is free software; as a special exception the author gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
#
|
||||
|
||||
# Use stub implementation only when the real libsidecar is disabled.
|
||||
if (NOT USE_REAL_LIBSIDECAR)
|
||||
|
||||
file(GLOB sources stub/*.c stub/*.h)
|
||||
|
||||
add_library(libsidecar STATIC ${sources})
|
||||
|
||||
set_target_properties(libsidecar
|
||||
PROPERTIES
|
||||
LINKER_LANGUAGE
|
||||
CXX
|
||||
INTERFACE_INCLUDE_DIRECTORIES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/stub)
|
||||
|
||||
else()
|
||||
add_library(libsidecar SHARED IMPORTED GLOBAL)
|
||||
|
||||
# Determine the correct library extension based on platform
|
||||
if(WIN32)
|
||||
set(LIBSIDECAR_EXTENSION "dll")
|
||||
set(LIBSIDECAR_IMPORT_LIB "libsidecar.lib")
|
||||
elseif(APPLE)
|
||||
set(LIBSIDECAR_EXTENSION "dylib")
|
||||
else()
|
||||
set(LIBSIDECAR_EXTENSION "so")
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
set_target_properties(libsidecar
|
||||
PROPERTIES
|
||||
IMPORTED_LOCATION
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libsidecar.${LIBSIDECAR_EXTENSION}
|
||||
IMPORTED_IMPLIB
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${LIBSIDECAR_IMPORT_LIB}
|
||||
INTERFACE_INCLUDE_DIRECTORIES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include)
|
||||
else()
|
||||
set_target_properties(libsidecar
|
||||
PROPERTIES
|
||||
IMPORTED_LOCATION
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libsidecar.${LIBSIDECAR_EXTENSION}
|
||||
INTERFACE_INCLUDE_DIRECTORIES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||
IMPORTED_NO_SONAME
|
||||
true)
|
||||
|
||||
set_target_properties(libsidecar PROPERTIES
|
||||
IMPORTED_LOCATION_NOCONFIG
|
||||
"${CMAKE_INSTALL_RPATH}/libsidecar.${LIBSIDECAR_EXTENSION}"
|
||||
IMPORTED_SONAME_NOCONFIG
|
||||
"libsidecar.${LIBSIDECAR_EXTENSION}")
|
||||
endif()
|
||||
|
||||
endif()
|
||||
77
deps/libsidecar/include/battleground-api.h
vendored
Normal file
77
deps/libsidecar/include/battleground-api.h
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
#ifndef __BATTLEGROUND_API__
|
||||
#define __BATTLEGROUND_API__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum BattlegroundErrorCode {
|
||||
BattlegroundErrorCodeNoError = 0,
|
||||
BattlegroundErrorCodeNoHandler = 1,
|
||||
BattlegroundErrorFailedToCreateBG = 2,
|
||||
BattlegroundErrorBattlegroundNotFound = 3,
|
||||
} BattlegroundErrorCode;
|
||||
|
||||
typedef struct {
|
||||
uint8_t battlegroundTypeID;
|
||||
uint32_t arenaType;
|
||||
bool isRated;
|
||||
uint32_t mapID;
|
||||
uint8_t bracketLvl;
|
||||
uint64_t *hordePlayersToAdd;
|
||||
int hordePlayersToAddSize;
|
||||
uint64_t *alliancePlayersToAdd;
|
||||
int alliancePlayersToAddSize;
|
||||
uint64_t *randomBGPlayers;
|
||||
int randomBGPlayersSize;
|
||||
} BattlegroundStartRequest;
|
||||
|
||||
typedef struct {
|
||||
int errorCode;
|
||||
uint64_t instanceID;
|
||||
uint64_t instanceClientID;
|
||||
} BattlegroundStartResponse;
|
||||
|
||||
typedef BattlegroundStartResponse (*BattlegroundStartHandler) (BattlegroundStartRequest* request);
|
||||
void SetBattlegroundStartHandler(BattlegroundStartHandler h);
|
||||
BattlegroundStartResponse CallBattlegroundStartHandler(BattlegroundStartRequest* request);
|
||||
|
||||
typedef struct {
|
||||
uint8_t battlegroundTypeID;
|
||||
uint64_t instanceID;
|
||||
uint64_t *hordePlayersToAdd;
|
||||
int hordePlayersToAddSize;
|
||||
uint64_t *alliancePlayersToAdd;
|
||||
int alliancePlayersToAddSize;
|
||||
uint64_t *randomBGPlayers;
|
||||
int randomBGPlayersSize;
|
||||
} BattlegroundAddPlayersRequest;
|
||||
|
||||
typedef BattlegroundErrorCode (*BattlegroundAddPlayersHandler) (BattlegroundAddPlayersRequest* request);
|
||||
void SetBattlegroundAddPlayersHandler(BattlegroundAddPlayersHandler h);
|
||||
BattlegroundErrorCode CallBattlegroundAddPlayersHandler(BattlegroundAddPlayersRequest* request);
|
||||
|
||||
typedef enum BattlegroundJoinCheckErrorCode {
|
||||
BattlegroundJoinCheckErrorCodeOK = 0,
|
||||
BattlegroundJoinCheckErrorCodeNoHook = 1,
|
||||
BattlegroundJoinCheckErrorCodeResponseIsFalse = 2,
|
||||
BattlegroundJoinCheckErrorCodePlayerNotFound = 3,
|
||||
} BattlegroundJoinCheckErrorCode;
|
||||
|
||||
typedef BattlegroundJoinCheckErrorCode (*CanPlayerJoinBattlegroundQueueHandler)(uint64_t playerGuid);
|
||||
void SetCanPlayerJoinBattlegroundQueueHandler(CanPlayerJoinBattlegroundQueueHandler h);
|
||||
BattlegroundJoinCheckErrorCode CallCanPlayerJoinBattlegroundQueueHandler(uint64_t playerGuid);
|
||||
|
||||
typedef BattlegroundJoinCheckErrorCode (*CanPlayerTeleportToBattlegroundHandler)(uint64_t playerGuid);
|
||||
void SetCanPlayerTeleportToBattlegroundHandler(CanPlayerTeleportToBattlegroundHandler h);
|
||||
BattlegroundJoinCheckErrorCode CallCanPlayerTeleportToBattlegroundHandler(uint64_t playerGuid);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
66
deps/libsidecar/include/events-group.h
vendored
Normal file
66
deps/libsidecar/include/events-group.h
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
#ifndef __EVENT_GROUP__
|
||||
#define __EVENT_GROUP__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
enum GroupStatus {
|
||||
GroupHookStatusOK = 0,
|
||||
GroupHookStatusNoHook = 1
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
uint32_t guid;
|
||||
uint64_t leader;
|
||||
uint8_t lootMethod;
|
||||
uint64_t looterGuid;
|
||||
uint8_t lootThreshold;
|
||||
uint8_t groupType;
|
||||
uint8_t difficulty;
|
||||
uint8_t raidDifficulty;
|
||||
uint64_t masterLooterGuid;
|
||||
uint64_t *members;
|
||||
uint8_t membersSize;
|
||||
} EventObjectGroup;
|
||||
|
||||
typedef void (*OnGroupCreatedHook) (EventObjectGroup *group);
|
||||
void SetOnGroupCreatedHook(OnGroupCreatedHook h);
|
||||
int CallOnGroupCreatedHook(EventObjectGroup *group);
|
||||
|
||||
typedef void (*OnGroupMemberAddedHook) (uint32_t guid, uint64_t newMemberGuid);
|
||||
void SetOnGroupMemberAddedHook(OnGroupMemberAddedHook h);
|
||||
int CallOnGroupMemberAddedHook(uint32_t guid, uint64_t newMemberGuid);
|
||||
|
||||
typedef void (*OnGroupMemberRemovedHook) (uint32_t guid, uint64_t removedMemberGuid, uint64_t newLeaderGuid);
|
||||
void SetOnGroupMemberRemovedHook(OnGroupMemberRemovedHook h);
|
||||
int CallOnGroupMemberRemovedHook(uint32_t guid, uint64_t removedMemberGuid, uint64_t newLeaderGuid);
|
||||
|
||||
typedef void (*OnGroupDisbandedHook) (uint32_t guid);
|
||||
void SetOnGroupDisbandedHook(OnGroupDisbandedHook h);
|
||||
int CallOnGroupDisbandedHook(uint32_t guid);
|
||||
|
||||
typedef void (*OnGroupLootTypeChangedHook) (uint32_t guid, uint8_t lootMethod, uint64_t looter, uint8_t lootThreshold);
|
||||
void SetOnGroupLootTypeChangedHook(OnGroupLootTypeChangedHook h);
|
||||
int CallOnGroupLootTypeChangedHook(uint32_t guid, uint8_t lootMethod, uint64_t looter, uint8_t lootThreshold);
|
||||
|
||||
typedef void (*OnGroupDungeonDifficultyChangedHook) (uint32_t guid, uint8_t difficulty);
|
||||
void SetOnGroupDungeonDifficultyChangedHook(OnGroupDungeonDifficultyChangedHook h);
|
||||
int CallOnGroupDungeonDifficultyChangedHook(uint32_t guid, uint8_t difficulty);
|
||||
|
||||
typedef void (*OnGroupRaidDifficultyChangedHook) (uint32_t guid, uint8_t difficulty);
|
||||
void SetOnGroupRaidDifficultyChangedHook(OnGroupRaidDifficultyChangedHook h);
|
||||
int CallOnGroupRaidDifficultyChangedHook(uint32_t guid, uint8_t difficulty);
|
||||
|
||||
typedef void (*OnGroupConvertedToRaidHook) (uint32_t guid);
|
||||
void SetOnGroupConvertedToRaidHook(OnGroupConvertedToRaidHook h);
|
||||
int CallOnGroupConvertedToRaidHook(uint32_t guid);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
31
deps/libsidecar/include/events-guild.h
vendored
Normal file
31
deps/libsidecar/include/events-guild.h
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
#ifndef __EVENT_GUILD__
|
||||
#define __EVENT_GUILD__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
enum GuildHookStatus {
|
||||
GuildHookStatusOK = 0,
|
||||
GuildHookStatusNoHook = 1
|
||||
};
|
||||
|
||||
typedef void (*OnGuildMemberAddedHook) (uint64_t /*guild_id*/, uint64_t /*player_guid*/);
|
||||
void SetOnGuildMemberAddedHook(OnGuildMemberAddedHook h);
|
||||
int CallOnGuildMemberAddedHook(uint64_t guild_id, uint64_t player_guid);
|
||||
|
||||
typedef void (*OnGuildMemberLeftHook) (uint64_t /*guild_id*/, uint64_t /*player_guid*/);
|
||||
void SetOnGuildMemberLeftHook(OnGuildMemberLeftHook h);
|
||||
int CallOnGuildMemberLeftHook(uint64_t guild_id, uint64_t player_guid);
|
||||
|
||||
typedef void (*OnGuildMemberRemovedHook) (uint64_t /*guild_id*/, uint64_t /*player_guid*/);
|
||||
void SetOnGuildMemberRemovedHook(OnGuildMemberRemovedHook h);
|
||||
int CallOnGuildMemberRemovedHook(uint64_t guild_id, uint64_t player_guid);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
23
deps/libsidecar/include/events-servers-registry.h
vendored
Normal file
23
deps/libsidecar/include/events-servers-registry.h
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
#ifndef __EVENT_SERVERS_REGISTRY__
|
||||
#define __EVENT_SERVERS_REGISTRY__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
enum ServersRegistryStatus {
|
||||
ServersRegistryHookStatusOK = 0,
|
||||
ServersRegistryHookStatusNoHook = 1
|
||||
};
|
||||
|
||||
typedef void (*OnMapsReassignedHook) (uint32_t* /*maps_added*/, int /*maps_added_size*/, uint32_t* /*maps_removed*/, int /*maps_removed_size*/);
|
||||
void SetOnMapsReassignedHook(OnMapsReassignedHook h);
|
||||
int CallOnMapsReassignedHook(uint32_t* maps_added, int maps_added_size, uint32_t* maps_removed, int maps_removed_size);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
116
deps/libsidecar/include/libsidecar.h
vendored
Normal file
116
deps/libsidecar/include/libsidecar.h
vendored
Normal file
@@ -0,0 +1,116 @@
|
||||
#ifndef __LIBSIDECAR_H__
|
||||
#define __LIBSIDECAR_H__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
/* Export/import decoration for Windows DLL */
|
||||
#ifdef _WIN32
|
||||
#ifdef TC9_BUILDING_DLL
|
||||
#define TC9_API __declspec(dllexport)
|
||||
#else
|
||||
#define TC9_API __declspec(dllimport)
|
||||
#endif
|
||||
#else
|
||||
#ifdef TC9_BUILDING_DLL
|
||||
#define TC9_API __attribute__((visibility("default")))
|
||||
#else
|
||||
#define TC9_API
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Include all API headers */
|
||||
#include "battleground-api.h"
|
||||
#include "events-group.h"
|
||||
#include "events-guild.h"
|
||||
#include "events-servers-registry.h"
|
||||
#include "monitoring.h"
|
||||
#include "player-interactions-api.h"
|
||||
#include "player-items-api.h"
|
||||
#include "player-money-api.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Main library functions */
|
||||
TC9_API void TC9InitLib(uint16_t port, uint32_t realmID, uint8_t isCrossRealm, char* availableMaps, uint32_t** assignedMaps, int* assignedMapsSize);
|
||||
TC9_API void TC9GracefulShutdown();
|
||||
TC9_API void TC9ProcessGRPCOrHTTPRequests();
|
||||
TC9_API void TC9ProcessEventsHooks();
|
||||
|
||||
/* GUID generation */
|
||||
TC9_API uint64_t TC9GetNextAvailableCharacterGuid(int realmID);
|
||||
TC9_API uint64_t TC9GetNextAvailableItemGuid(int realmID);
|
||||
TC9_API uint64_t TC9GetNextAvailableInstanceGuid(int realmID);
|
||||
|
||||
/* Map loading notification */
|
||||
TC9_API void TC9ReadyToAcceptPlayersFromMaps(uint32_t* maps, int mapsLen);
|
||||
|
||||
/* Generic NATS pub/sub. Payloads are opaque bytes, subjects are arbitrary.
|
||||
* Subscription callbacks run on the thread draining TC9ProcessEventsHooks
|
||||
* (the world update thread), not on the NATS delivery thread. Both return
|
||||
* 0 on success, -1 on failure.
|
||||
*
|
||||
* Example — a mod broadcasting and consuming its own events:
|
||||
*
|
||||
* // Publish (any thread):
|
||||
* const char msg[] = "{\"zone\":1519,\"boss\":466}";
|
||||
* TC9NatsPublish("mymod.boss.spawned", msg, sizeof(msg) - 1);
|
||||
*
|
||||
* // Subscribe once at startup; the handler runs on the world update
|
||||
* // thread, so it is safe to touch game state from it:
|
||||
* void OnBossSpawned(const char* subject, const char* payload, int payloadLen)
|
||||
* {
|
||||
* std::string data(payload, payloadLen); // payload is not NUL-terminated
|
||||
* // ... react to the event ...
|
||||
* }
|
||||
* TC9NatsSubscribe("mymod.boss.spawned", &OnBossSpawned);
|
||||
*/
|
||||
typedef void (*TC9NatsMessageHandler)(const char* subject, const char* payload, int payloadLen);
|
||||
TC9_API int TC9NatsPublish(const char* subject, const char* payload, int payloadLen);
|
||||
TC9_API int TC9NatsSubscribe(const char* subject, TC9NatsMessageHandler handler);
|
||||
|
||||
/* Matchmaking notifications */
|
||||
TC9_API void TC9PlayerLeftBattleground(uint64_t playerGUID, uint32_t realmID, uint32_t instanceID);
|
||||
TC9_API void TC9BattlegroundStatusChanged(uint32_t instanceID, uint8_t status);
|
||||
|
||||
/* Event hooks registration */
|
||||
TC9_API void TC9SetOnGroupCreatedHook(OnGroupCreatedHook h);
|
||||
TC9_API void TC9SetOnGroupMemberAddedHook(OnGroupMemberAddedHook h);
|
||||
TC9_API void TC9SetOnGroupMemberRemovedHook(OnGroupMemberRemovedHook h);
|
||||
TC9_API void TC9SetOnGroupDisbandedHook(OnGroupDisbandedHook h);
|
||||
TC9_API void TC9SetOnGroupLootTypeChangedHook(OnGroupLootTypeChangedHook h);
|
||||
TC9_API void TC9SetOnGroupDungeonDifficultyChangedHook(OnGroupDungeonDifficultyChangedHook h);
|
||||
TC9_API void TC9SetOnGroupRaidDifficultyChangedHook(OnGroupRaidDifficultyChangedHook h);
|
||||
TC9_API void TC9SetOnGroupConvertedToRaidHook(OnGroupConvertedToRaidHook h);
|
||||
|
||||
TC9_API void TC9SetOnGuildMemberAddedHook(OnGuildMemberAddedHook h);
|
||||
TC9_API void TC9SetOnGuildMemberRemovedHook(OnGuildMemberRemovedHook h);
|
||||
TC9_API void TC9SetOnGuildMemberLeftHook(OnGuildMemberLeftHook h);
|
||||
|
||||
TC9_API void TC9SetOnMapsReassignedHook(OnMapsReassignedHook h);
|
||||
|
||||
/* Handler registration for gRPC requests */
|
||||
TC9_API void TC9SetBattlegroundStartHandler(BattlegroundStartHandler h);
|
||||
TC9_API void TC9SetBattlegroundAddPlayersHandler(BattlegroundAddPlayersHandler h);
|
||||
TC9_API void TC9SetCanPlayerJoinBattlegroundQueueHandler(CanPlayerJoinBattlegroundQueueHandler h);
|
||||
TC9_API void TC9SetCanPlayerTeleportToBattlegroundHandler(CanPlayerTeleportToBattlegroundHandler h);
|
||||
|
||||
TC9_API void TC9SetMonitoringDataCollectorHandler(MonitoringDataCollectorHandler h);
|
||||
|
||||
TC9_API void TC9SetCanPlayerInteractWithNPCAndFlagsHandler(CanPlayerInteractWithNPCAndFlagsHandler h);
|
||||
TC9_API void TC9SetCanPlayerInteractWithGOAndTypeHandler(CanPlayerInteractWithGOAndTypeHandler h);
|
||||
|
||||
TC9_API void TC9SetGetPlayerItemsByGuidsHandler(GetPlayerItemsByGuidsHandler h);
|
||||
TC9_API void TC9SetRemoveItemsWithGuidsFromPlayerHandler(RemoveItemsWithGuidsFromPlayerHandler h);
|
||||
TC9_API void TC9SetAddExistingItemToPlayerHandler(AddExistingItemToPlayerHandler h);
|
||||
|
||||
TC9_API void TC9SetGetMoneyForPlayerHandler(GetMoneyForPlayerHandler h);
|
||||
TC9_API void TC9SetModifyMoneyForPlayerHandler(ModifyMoneyForPlayerHandler h);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __LIBSIDECAR_H__ */
|
||||
36
deps/libsidecar/include/monitoring.h
vendored
Normal file
36
deps/libsidecar/include/monitoring.h
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
#ifndef __MONITORING__
|
||||
#define __MONITORING__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum MonitoringErrorCode {
|
||||
MonitoringErrorCodeNoError = 0,
|
||||
MonitoringErrorCodeNoHandler = 1,
|
||||
} MonitoringErrorCode;
|
||||
|
||||
// MonitoringDataCollectorResponse request.
|
||||
typedef struct {
|
||||
int errorCode;
|
||||
uint32_t connectedPlayers;
|
||||
uint32_t diffMean;
|
||||
uint32_t diffMedian;
|
||||
uint32_t diff95Percentile;
|
||||
uint32_t diff99Percentile;
|
||||
uint32_t diffMaxPercentile;
|
||||
} MonitoringDataCollectorResponse;
|
||||
|
||||
typedef MonitoringDataCollectorResponse (*MonitoringDataCollectorHandler)();
|
||||
void SetMonitoringDataCollectorHandler(MonitoringDataCollectorHandler h);
|
||||
MonitoringDataCollectorResponse CallMonitoringDataCollectorHandler();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
42
deps/libsidecar/include/player-interactions-api.h
vendored
Normal file
42
deps/libsidecar/include/player-interactions-api.h
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
#ifndef __PLAYER_INTERACTIONS_API__
|
||||
#define __PLAYER_INTERACTIONS_API__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum PlayerInteractionErrorCode {
|
||||
PlayerInteractionErrorCodeNoError = 0,
|
||||
PlayerInteractionErrorCodeNoHandler = 1,
|
||||
PlayerInteractionErrorCodeCodePlayerNotFound = 2,
|
||||
} PlayerInteractionErrorCode;
|
||||
|
||||
// CanPlayerInteractWithNPCAndFlags request.
|
||||
typedef struct {
|
||||
int errorCode;
|
||||
bool canInteract;
|
||||
} CanPlayerInteractWithNPCAndFlagsResponse;
|
||||
|
||||
typedef CanPlayerInteractWithNPCAndFlagsResponse (*CanPlayerInteractWithNPCAndFlagsHandler) (uint64_t /*playerGUID*/, uint64_t /*npcGUID*/, uint32_t /*npcFlags*/);
|
||||
void SetCanPlayerInteractWithNPCAndFlagsHandler(CanPlayerInteractWithNPCAndFlagsHandler h);
|
||||
CanPlayerInteractWithNPCAndFlagsResponse CallCanPlayerInteractWithNPCAndFlagsHandler(uint64_t player_guid, uint64_t npc_guid, uint32_t npc_flags);
|
||||
|
||||
// CanPlayerInteractWithGOAndType request.
|
||||
typedef struct {
|
||||
int errorCode;
|
||||
bool canInteract;
|
||||
} CanPlayerInteractWithGOAndTypeResponse;
|
||||
|
||||
typedef CanPlayerInteractWithGOAndTypeResponse (*CanPlayerInteractWithGOAndTypeHandler) (uint64_t /*playerGUID*/, uint64_t /*goGUID*/, uint8_t /*goType*/);
|
||||
void SetCanPlayerInteractWithGOAndTypeHandler(CanPlayerInteractWithGOAndTypeHandler h);
|
||||
CanPlayerInteractWithGOAndTypeResponse CallCanPlayerInteractWithGOAndTypeHandler(uint64_t player_guid, uint64_t go_guid, uint8_t go_type);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
76
deps/libsidecar/include/player-items-api.h
vendored
Normal file
76
deps/libsidecar/include/player-items-api.h
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
#ifndef __PLAYER_ITEMS_API__
|
||||
#define __PLAYER_ITEMS_API__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum PlayerItemErrorCode {
|
||||
PlayerItemErrorCodeNoError = 0,
|
||||
PlayerItemErrorCodeNoHandler = 1,
|
||||
PlayerItemErrorCodePlayerNotFound = 2,
|
||||
PlayerItemErrorNoInventorySpace = 3,
|
||||
PlayerItemErrorUnknownTemplate = 4,
|
||||
PlayerItemErrorFailedToCreateItem = 5
|
||||
} PlayerItemErrorCode;
|
||||
|
||||
// GetPlayerItemsByGuids request.
|
||||
typedef struct {
|
||||
uint64_t guid;
|
||||
uint32_t entry;
|
||||
uint64_t owner;
|
||||
uint8_t bagSlot;
|
||||
uint8_t slot;
|
||||
bool isTradable;
|
||||
uint32_t count;
|
||||
uint16_t flags;
|
||||
uint8_t durability;
|
||||
int8_t randomPropertyID;
|
||||
const char* text;
|
||||
} PlayerItem;
|
||||
|
||||
typedef struct {
|
||||
int errorCode;
|
||||
PlayerItem* items;
|
||||
int itemsSize;
|
||||
} GetPlayerItemsByGuidsResponse;
|
||||
|
||||
typedef GetPlayerItemsByGuidsResponse (*GetPlayerItemsByGuidsHandler) (uint64_t /*player_guid*/, uint64_t* /*items_guids*/, int /*items_guids_size*/);
|
||||
void SetGetPlayerItemsByGuidsHandler(GetPlayerItemsByGuidsHandler h);
|
||||
GetPlayerItemsByGuidsResponse CallGetPlayerItemsByGuidsHandler(uint64_t player_guid, uint64_t* items_guids, int items_guids_size);
|
||||
|
||||
// RemoveItemsWithGuidsFromPlayer request.
|
||||
typedef struct {
|
||||
int errorCode;
|
||||
uint64_t* updatedItems;
|
||||
int updatedItemsSize;
|
||||
} RemoveItemsWithGuidsFromPlayerResponse;
|
||||
|
||||
typedef RemoveItemsWithGuidsFromPlayerResponse (*RemoveItemsWithGuidsFromPlayerHandler) (uint64_t /*player_guid*/, uint64_t* /*items_guids*/, int /*items_guids_size*/, uint64_t /*assign_player_guid*/);
|
||||
void SetRemoveItemsWithGuidsFromPlayerHandler(RemoveItemsWithGuidsFromPlayerHandler h);
|
||||
RemoveItemsWithGuidsFromPlayerResponse CallRemoveItemsWithGuidsFromPlayerHandler(uint64_t player_guid, uint64_t* items_guids, int items_guids_size, uint64_t assign_player_guid);
|
||||
|
||||
// AddExistingItemToPlayer request.
|
||||
typedef struct {
|
||||
uint64_t playerGuid;
|
||||
uint64_t itemGuid;
|
||||
uint32_t itemEntry;
|
||||
uint32_t itemCount;
|
||||
uint16_t itemFlags;
|
||||
uint8_t itemDurability;
|
||||
int8_t itemRandomPropertyID;
|
||||
} AddExistingItemToPlayerRequest;
|
||||
|
||||
typedef PlayerItemErrorCode (*AddExistingItemToPlayerHandler) (AddExistingItemToPlayerRequest*);
|
||||
void SetAddExistingItemToPlayerHandler(AddExistingItemToPlayerHandler h);
|
||||
PlayerItemErrorCode CallAddExistingItemToPlayerHandler(AddExistingItemToPlayerRequest*);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
43
deps/libsidecar/include/player-money-api.h
vendored
Normal file
43
deps/libsidecar/include/player-money-api.h
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
#ifndef __PLAYER_MONEY_API__
|
||||
#define __PLAYER_MONEY_API__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum PlayerMoneyErrorCode {
|
||||
PlayerMoneyErrorCodeNoError = 0,
|
||||
PlayerMoneyErrorCodeNoHandler = 1,
|
||||
PlayerMoneyErrorCodePlayerNotFound = 2,
|
||||
PlayerMoneyErrorCodeTooMuchMoney = 3,
|
||||
} PlayerMoneyErrorCode;
|
||||
|
||||
// GetMoneyForPlayer request.
|
||||
typedef struct {
|
||||
int errorCode;
|
||||
uint32_t money;
|
||||
} GetMoneyForPlayerResponse;
|
||||
|
||||
typedef GetMoneyForPlayerResponse (*GetMoneyForPlayerHandler) (uint64_t /*player_guid*/);
|
||||
void SetGetMoneyForPlayerHandler(GetMoneyForPlayerHandler h);
|
||||
GetMoneyForPlayerResponse CallGetMoneyForPlayerHandler(uint64_t player_guid);
|
||||
|
||||
// ModifyMoneyForPlayer request.
|
||||
typedef struct {
|
||||
int errorCode;
|
||||
uint32_t newMoneyValue;
|
||||
} ModifyMoneyForPlayerResponse;
|
||||
|
||||
typedef ModifyMoneyForPlayerResponse (*ModifyMoneyForPlayerHandler) (uint64_t /*player_guid*/, int32_t /*amount*/);
|
||||
void SetModifyMoneyForPlayerHandler(ModifyMoneyForPlayerHandler h);
|
||||
ModifyMoneyForPlayerResponse CallModifyMoneyForPlayerHandler(uint64_t player_guid, int32_t amount);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
55
deps/libsidecar/stub/battleground-api.c
vendored
Normal file
55
deps/libsidecar/stub/battleground-api.c
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
#include "battleground-api.h"
|
||||
|
||||
static BattlegroundStartHandler battlegroundStartHandler;
|
||||
void SetBattlegroundStartHandler(BattlegroundStartHandler h) {
|
||||
battlegroundStartHandler = h;
|
||||
}
|
||||
|
||||
BattlegroundStartResponse CallBattlegroundStartHandler(BattlegroundStartRequest* request) {
|
||||
if (battlegroundStartHandler == 0) {
|
||||
BattlegroundStartResponse resp;
|
||||
resp.errorCode = BattlegroundErrorCodeNoHandler;
|
||||
return resp;
|
||||
}
|
||||
|
||||
return battlegroundStartHandler(request);
|
||||
}
|
||||
|
||||
static BattlegroundAddPlayersHandler battlegroundAddPlayersHandler;
|
||||
void SetBattlegroundAddPlayersHandler(BattlegroundAddPlayersHandler h) {
|
||||
battlegroundAddPlayersHandler = h;
|
||||
}
|
||||
|
||||
BattlegroundErrorCode CallBattlegroundAddPlayersHandler(BattlegroundAddPlayersRequest* request) {
|
||||
if (battlegroundAddPlayersHandler == 0) {
|
||||
return BattlegroundErrorCodeNoHandler;
|
||||
}
|
||||
|
||||
return battlegroundAddPlayersHandler(request);
|
||||
}
|
||||
|
||||
static CanPlayerJoinBattlegroundQueueHandler canPlayerJoinBattlegroundQueueHandler = 0;
|
||||
|
||||
void SetCanPlayerJoinBattlegroundQueueHandler(CanPlayerJoinBattlegroundQueueHandler h) {
|
||||
canPlayerJoinBattlegroundQueueHandler = h;
|
||||
}
|
||||
|
||||
BattlegroundJoinCheckErrorCode CallCanPlayerJoinBattlegroundQueueHandler(uint64_t playerGuid) {
|
||||
if (canPlayerJoinBattlegroundQueueHandler == 0) {
|
||||
return BattlegroundJoinCheckErrorCodeNoHook;
|
||||
}
|
||||
return canPlayerJoinBattlegroundQueueHandler(playerGuid);
|
||||
}
|
||||
|
||||
static CanPlayerTeleportToBattlegroundHandler canPlayerTeleportToBattlegroundHandler = 0;
|
||||
|
||||
void SetCanPlayerTeleportToBattlegroundHandler(CanPlayerTeleportToBattlegroundHandler h) {
|
||||
canPlayerTeleportToBattlegroundHandler = h;
|
||||
}
|
||||
|
||||
BattlegroundJoinCheckErrorCode CallCanPlayerTeleportToBattlegroundHandler(uint64_t playerGuid) {
|
||||
if (canPlayerTeleportToBattlegroundHandler == 0) {
|
||||
return BattlegroundJoinCheckErrorCodeNoHook;
|
||||
}
|
||||
return canPlayerTeleportToBattlegroundHandler(playerGuid);
|
||||
}
|
||||
69
deps/libsidecar/stub/battleground-api.h
vendored
Normal file
69
deps/libsidecar/stub/battleground-api.h
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
#ifndef __BATTLEGROUND_API__
|
||||
#define __BATTLEGROUND_API__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
typedef enum BattlegroundErrorCode {
|
||||
BattlegroundErrorCodeNoError = 0,
|
||||
BattlegroundErrorCodeNoHandler = 1,
|
||||
BattlegroundErrorFailedToCreateBG = 2,
|
||||
BattlegroundErrorBattlegroundNotFound = 3,
|
||||
} BattlegroundErrorCode;
|
||||
|
||||
typedef struct {
|
||||
uint8_t battlegroundTypeID;
|
||||
uint32_t arenaType;
|
||||
bool isRated;
|
||||
uint32_t mapID;
|
||||
uint8_t bracketLvl;
|
||||
uint64_t *hordePlayersToAdd;
|
||||
int hordePlayersToAddSize;
|
||||
uint64_t *alliancePlayersToAdd;
|
||||
int alliancePlayersToAddSize;
|
||||
uint64_t *randomBGPlayers;
|
||||
int randomBGPlayersSize;
|
||||
} BattlegroundStartRequest;
|
||||
|
||||
typedef struct {
|
||||
int errorCode;
|
||||
uint64_t instanceID;
|
||||
uint64_t instanceClientID;
|
||||
} BattlegroundStartResponse;
|
||||
|
||||
typedef BattlegroundStartResponse (*BattlegroundStartHandler) (BattlegroundStartRequest* request);
|
||||
void SetBattlegroundStartHandler(BattlegroundStartHandler h);
|
||||
BattlegroundStartResponse CallBattlegroundStartHandler(BattlegroundStartRequest* request);
|
||||
|
||||
typedef struct {
|
||||
uint8_t battlegroundTypeID;
|
||||
uint64_t instanceID;
|
||||
uint64_t *hordePlayersToAdd;
|
||||
int hordePlayersToAddSize;
|
||||
uint64_t *alliancePlayersToAdd;
|
||||
int alliancePlayersToAddSize;
|
||||
uint64_t *randomBGPlayers;
|
||||
int randomBGPlayersSize;
|
||||
} BattlegroundAddPlayersRequest;
|
||||
|
||||
typedef BattlegroundErrorCode (*BattlegroundAddPlayersHandler) (BattlegroundAddPlayersRequest* request);
|
||||
void SetBattlegroundAddPlayersHandler(BattlegroundAddPlayersHandler h);
|
||||
BattlegroundErrorCode CallBattlegroundAddPlayersHandler(BattlegroundAddPlayersRequest* request);
|
||||
|
||||
typedef enum BattlegroundJoinCheckErrorCode {
|
||||
BattlegroundJoinCheckErrorCodeOK = 0,
|
||||
BattlegroundJoinCheckErrorCodeNoHook = 1,
|
||||
BattlegroundJoinCheckErrorCodeResponseIsFalse = 2,
|
||||
BattlegroundJoinCheckErrorCodePlayerNotFound = 3,
|
||||
} BattlegroundJoinCheckErrorCode;
|
||||
|
||||
typedef BattlegroundJoinCheckErrorCode (*CanPlayerJoinBattlegroundQueueHandler)(uint64_t playerGuid);
|
||||
void SetCanPlayerJoinBattlegroundQueueHandler(CanPlayerJoinBattlegroundQueueHandler h);
|
||||
BattlegroundJoinCheckErrorCode CallCanPlayerJoinBattlegroundQueueHandler(uint64_t playerGuid);
|
||||
|
||||
typedef BattlegroundJoinCheckErrorCode (*CanPlayerTeleportToBattlegroundHandler)(uint64_t playerGuid);
|
||||
void SetCanPlayerTeleportToBattlegroundHandler(CanPlayerTeleportToBattlegroundHandler h);
|
||||
BattlegroundJoinCheckErrorCode CallCanPlayerTeleportToBattlegroundHandler(uint64_t playerGuid);
|
||||
|
||||
#endif
|
||||
117
deps/libsidecar/stub/events-group.c
vendored
Normal file
117
deps/libsidecar/stub/events-group.c
vendored
Normal file
@@ -0,0 +1,117 @@
|
||||
#include "events-group.h"
|
||||
|
||||
// OnGroupCreatedHook
|
||||
OnGroupCreatedHook groupCreatedHook;
|
||||
void SetOnGroupCreatedHook(OnGroupCreatedHook h) {
|
||||
groupCreatedHook = h;
|
||||
}
|
||||
|
||||
int CallOnGroupCreatedHook(EventObjectGroup *group) {
|
||||
if (groupCreatedHook == 0) {
|
||||
return GroupHookStatusNoHook;
|
||||
}
|
||||
groupCreatedHook(group);
|
||||
return GroupHookStatusOK;
|
||||
}
|
||||
|
||||
// GroupMemberAdded
|
||||
static OnGroupMemberAddedHook groupMemberAddedHook;
|
||||
void SetOnGroupMemberAddedHook(OnGroupMemberAddedHook h) {
|
||||
groupMemberAddedHook = h;
|
||||
}
|
||||
|
||||
int CallOnGroupMemberAddedHook(uint32_t guid, uint64_t newMemberGuid) {
|
||||
if (groupMemberAddedHook == 0) {
|
||||
return GroupHookStatusNoHook;
|
||||
}
|
||||
groupMemberAddedHook(guid, newMemberGuid);
|
||||
return GroupHookStatusOK;
|
||||
}
|
||||
|
||||
// GroupMemberRemoved
|
||||
static OnGroupMemberRemovedHook groupMemberRemovedHook;
|
||||
void SetOnGroupMemberRemovedHook(OnGroupMemberRemovedHook h) {
|
||||
groupMemberRemovedHook = h;
|
||||
}
|
||||
|
||||
int CallOnGroupMemberRemovedHook(uint32_t guid, uint64_t removedMemberGuid, uint64_t newLeaderGuid) {
|
||||
if (groupMemberRemovedHook == 0) {
|
||||
return GroupHookStatusNoHook;
|
||||
}
|
||||
groupMemberRemovedHook(guid, removedMemberGuid, newLeaderGuid);
|
||||
return GroupHookStatusOK;
|
||||
}
|
||||
|
||||
|
||||
typedef void (*OnGroupDisbandedHook) (uint32_t guid);
|
||||
void SetOnGroupDisbandedHook(OnGroupDisbandedHook h);
|
||||
int CallOnGroupDisbandedHook(uint32_t guid);
|
||||
|
||||
static OnGroupDisbandedHook groupDisbandedHook;
|
||||
void SetOnGroupDisbandedHook(OnGroupDisbandedHook h) {
|
||||
groupDisbandedHook = h;
|
||||
}
|
||||
|
||||
int CallOnGroupDisbandedHook(uint32_t guid) {
|
||||
if (groupDisbandedHook == 0) {
|
||||
return GroupHookStatusNoHook;
|
||||
}
|
||||
groupDisbandedHook(guid);
|
||||
return GroupHookStatusOK;
|
||||
}
|
||||
|
||||
static OnGroupLootTypeChangedHook groupLootTypeChanged;
|
||||
void SetOnGroupLootTypeChangedHook(OnGroupLootTypeChangedHook h) {
|
||||
groupLootTypeChanged = h;
|
||||
}
|
||||
|
||||
int CallOnGroupLootTypeChangedHook(uint32_t guid, uint8_t lootMethod, uint64_t looter, uint8_t lootThreshold) {
|
||||
if (groupLootTypeChanged == 0) {
|
||||
return GroupHookStatusNoHook;
|
||||
}
|
||||
groupLootTypeChanged(guid, lootMethod, looter, lootThreshold);
|
||||
return GroupHookStatusOK;
|
||||
}
|
||||
|
||||
static OnGroupDungeonDifficultyChangedHook groupDungeonDifficultyChanged;
|
||||
void SetOnGroupDungeonDifficultyChangedHook(OnGroupDungeonDifficultyChangedHook h) {
|
||||
groupDungeonDifficultyChanged = h;
|
||||
}
|
||||
|
||||
int CallOnGroupDungeonDifficultyChangedHook(uint32_t guid, uint8_t difficulty) {
|
||||
if (groupDungeonDifficultyChanged == 0) {
|
||||
return GroupHookStatusNoHook;
|
||||
}
|
||||
groupDungeonDifficultyChanged(guid, difficulty);
|
||||
return GroupHookStatusOK;
|
||||
}
|
||||
|
||||
static OnGroupRaidDifficultyChangedHook groupRaidDifficultyChanged;
|
||||
void SetOnGroupRaidDifficultyChangedHook(OnGroupRaidDifficultyChangedHook h) {
|
||||
groupRaidDifficultyChanged = h;
|
||||
}
|
||||
|
||||
int CallOnGroupRaidDifficultyChangedHook(uint32_t guid, uint8_t difficulty) {
|
||||
if (groupRaidDifficultyChanged == 0) {
|
||||
return GroupHookStatusNoHook;
|
||||
}
|
||||
groupRaidDifficultyChanged(guid, difficulty);
|
||||
return GroupHookStatusOK;
|
||||
}
|
||||
|
||||
typedef void (*OnGroupConvertedToRaidHook) (uint32_t guid);
|
||||
void SetOnGroupConvertedToRaidHook(OnGroupConvertedToRaidHook h);
|
||||
int CallOnGroupConvertedToRaidHook(uint32_t guid);
|
||||
|
||||
static OnGroupConvertedToRaidHook groupConvertedToRaid;
|
||||
void SetOnGroupConvertedToRaidHook(OnGroupConvertedToRaidHook h) {
|
||||
groupConvertedToRaid = h;
|
||||
}
|
||||
|
||||
int CallOnGroupConvertedToRaidHook(uint32_t guid) {
|
||||
if (groupConvertedToRaid == 0) {
|
||||
return GroupHookStatusNoHook;
|
||||
}
|
||||
groupConvertedToRaid(guid);
|
||||
return GroupHookStatusOK;
|
||||
}
|
||||
58
deps/libsidecar/stub/events-group.h
vendored
Normal file
58
deps/libsidecar/stub/events-group.h
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
#ifndef __EVENT_GROUP__
|
||||
#define __EVENT_GROUP__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
enum GroupStatus {
|
||||
GroupHookStatusOK = 0,
|
||||
GroupHookStatusNoHook = 1
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
uint32_t guid;
|
||||
uint64_t leader;
|
||||
uint8_t lootMethod;
|
||||
uint64_t looterGuid;
|
||||
uint8_t lootThreshold;
|
||||
uint8_t groupType;
|
||||
uint8_t difficulty;
|
||||
uint8_t raidDifficulty;
|
||||
uint64_t masterLooterGuid;
|
||||
uint64_t *members;
|
||||
uint8_t membersSize;
|
||||
} EventObjectGroup;
|
||||
|
||||
typedef void (*OnGroupCreatedHook) (EventObjectGroup *group);
|
||||
void SetOnGroupCreatedHook(OnGroupCreatedHook h);
|
||||
int CallOnGroupCreatedHook(EventObjectGroup *group);
|
||||
|
||||
typedef void (*OnGroupMemberAddedHook) (uint32_t guid, uint64_t newMemberGuid);
|
||||
void SetOnGroupMemberAddedHook(OnGroupMemberAddedHook h);
|
||||
int CallOnGroupMemberAddedHook(uint32_t guid, uint64_t newMemberGuid);
|
||||
|
||||
typedef void (*OnGroupMemberRemovedHook) (uint32_t guid, uint64_t removedMemberGuid, uint64_t newLeaderGuid);
|
||||
void SetOnGroupMemberRemovedHook(OnGroupMemberRemovedHook h);
|
||||
int CallOnGroupMemberRemovedHook(uint32_t guid, uint64_t removedMemberGuid, uint64_t newLeaderGuid);
|
||||
|
||||
typedef void (*OnGroupDisbandedHook) (uint32_t guid);
|
||||
void SetOnGroupDisbandedHook(OnGroupDisbandedHook h);
|
||||
int CallOnGroupDisbandedHook(uint32_t guid);
|
||||
|
||||
typedef void (*OnGroupLootTypeChangedHook) (uint32_t guid, uint8_t lootMethod, uint64_t looter, uint8_t lootThreshold);
|
||||
void SetOnGroupLootTypeChangedHook(OnGroupLootTypeChangedHook h);
|
||||
int CallOnGroupLootTypeChangedHook(uint32_t guid, uint8_t lootMethod, uint64_t looter, uint8_t lootThreshold);
|
||||
|
||||
typedef void (*OnGroupDungeonDifficultyChangedHook) (uint32_t guid, uint8_t difficulty);
|
||||
void SetOnGroupDungeonDifficultyChangedHook(OnGroupDungeonDifficultyChangedHook h);
|
||||
int CallOnGroupDungeonDifficultyChangedHook(uint32_t guid, uint8_t difficulty);
|
||||
|
||||
typedef void (*OnGroupRaidDifficultyChangedHook) (uint32_t guid, uint8_t difficulty);
|
||||
void SetOnGroupRaidDifficultyChangedHook(OnGroupRaidDifficultyChangedHook h);
|
||||
int CallOnGroupRaidDifficultyChangedHook(uint32_t guid, uint8_t difficulty);
|
||||
|
||||
typedef void (*OnGroupConvertedToRaidHook) (uint32_t guid);
|
||||
void SetOnGroupConvertedToRaidHook(OnGroupConvertedToRaidHook h);
|
||||
int CallOnGroupConvertedToRaidHook(uint32_t guid);
|
||||
|
||||
#endif
|
||||
43
deps/libsidecar/stub/events-guild.c
vendored
Normal file
43
deps/libsidecar/stub/events-guild.c
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
#include "events-guild.h"
|
||||
|
||||
// GuildMemberAddedHook
|
||||
OnGuildMemberAddedHook guildMemberAddedHook;
|
||||
void SetOnGuildMemberAddedHook(OnGuildMemberAddedHook h) {
|
||||
guildMemberAddedHook = h;
|
||||
}
|
||||
|
||||
int CallOnGuildMemberAddedHook(uint64_t guild_id, uint64_t player_guid) {
|
||||
if (guildMemberAddedHook == 0) {
|
||||
return GuildHookStatusNoHook;
|
||||
}
|
||||
guildMemberAddedHook(guild_id, player_guid);
|
||||
return GuildHookStatusOK;
|
||||
}
|
||||
|
||||
// GuildMemberLeft
|
||||
static OnGuildMemberLeftHook guildMemberLeftHook;
|
||||
void SetOnGuildMemberLeftHook(OnGuildMemberLeftHook h) {
|
||||
guildMemberLeftHook = h;
|
||||
}
|
||||
|
||||
int CallOnGuildMemberLeftHook(uint64_t guild_id, uint64_t player_guid) {
|
||||
if (guildMemberLeftHook == 0) {
|
||||
return GuildHookStatusNoHook;
|
||||
}
|
||||
guildMemberLeftHook(guild_id, player_guid);
|
||||
return GuildHookStatusOK;
|
||||
}
|
||||
|
||||
// GuildMemberRemoved
|
||||
static OnGuildMemberRemovedHook guildMemberRemovedHook;
|
||||
void SetOnGuildMemberRemovedHook(OnGuildMemberRemovedHook h) {
|
||||
guildMemberRemovedHook = h;
|
||||
}
|
||||
|
||||
int CallOnGuildMemberRemovedHook(uint64_t guild_id, uint64_t player_guid) {
|
||||
if (guildMemberRemovedHook == 0) {
|
||||
return GuildHookStatusNoHook;
|
||||
}
|
||||
guildMemberRemovedHook(guild_id, player_guid);
|
||||
return GuildHookStatusOK;
|
||||
}
|
||||
23
deps/libsidecar/stub/events-guild.h
vendored
Normal file
23
deps/libsidecar/stub/events-guild.h
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
#ifndef __EVENT_GUILD__
|
||||
#define __EVENT_GUILD__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
enum GuildHookStatus {
|
||||
GuildHookStatusOK = 0,
|
||||
GuildHookStatusNoHook = 1
|
||||
};
|
||||
|
||||
typedef void (*OnGuildMemberAddedHook) (uint64_t /*guild_id*/, uint64_t /*player_guid*/);
|
||||
void SetOnGuildMemberAddedHook(OnGuildMemberAddedHook h);
|
||||
int CallOnGuildMemberAddedHook(uint64_t guild_id, uint64_t player_guid);
|
||||
|
||||
typedef void (*OnGuildMemberLeftHook) (uint64_t /*guild_id*/, uint64_t /*player_guid*/);
|
||||
void SetOnGuildMemberLeftHook(OnGuildMemberLeftHook h);
|
||||
int CallOnGuildMemberLeftHook(uint64_t guild_id, uint64_t player_guid);
|
||||
|
||||
typedef void (*OnGuildMemberRemovedHook) (uint64_t /*guild_id*/, uint64_t /*player_guid*/);
|
||||
void SetOnGuildMemberRemovedHook(OnGuildMemberRemovedHook h);
|
||||
int CallOnGuildMemberRemovedHook(uint64_t guild_id, uint64_t player_guid);
|
||||
|
||||
#endif
|
||||
15
deps/libsidecar/stub/events-servers-registry.c
vendored
Normal file
15
deps/libsidecar/stub/events-servers-registry.c
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
#include "events-servers-registry.h"
|
||||
|
||||
// MapsReassignedHook
|
||||
OnMapsReassignedHook mapsReassignedHook;
|
||||
void SetOnMapsReassignedHook(OnMapsReassignedHook h) {
|
||||
mapsReassignedHook = h;
|
||||
}
|
||||
|
||||
int CallOnMapsReassignedHook(uint32_t* maps_added, int maps_added_size, uint32_t* maps_removed, int maps_removed_size) {
|
||||
if (mapsReassignedHook == 0) {
|
||||
return ServersRegistryHookStatusNoHook;
|
||||
}
|
||||
mapsReassignedHook(maps_added, maps_added_size, maps_removed, maps_removed_size);
|
||||
return ServersRegistryHookStatusOK;
|
||||
}
|
||||
15
deps/libsidecar/stub/events-servers-registry.h
vendored
Normal file
15
deps/libsidecar/stub/events-servers-registry.h
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
#ifndef __EVENT_SERVERS_REGISTRY__
|
||||
#define __EVENT_SERVERS_REGISTRY__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
enum ServersRegistryStatus {
|
||||
ServersRegistryHookStatusOK = 0,
|
||||
ServersRegistryHookStatusNoHook = 1
|
||||
};
|
||||
|
||||
typedef void (*OnMapsReassignedHook) (uint32_t* /*maps_added*/, int /*maps_added_size*/, uint32_t* /*maps_removed*/, int /*maps_removed_size*/);
|
||||
void SetOnMapsReassignedHook(OnMapsReassignedHook h);
|
||||
int CallOnMapsReassignedHook(uint32_t* maps_added, int maps_added_size, uint32_t* maps_removed, int maps_removed_size);
|
||||
|
||||
#endif
|
||||
138
deps/libsidecar/stub/libsidecar.c
vendored
Normal file
138
deps/libsidecar/stub/libsidecar.c
vendored
Normal file
@@ -0,0 +1,138 @@
|
||||
#include "libsidecar.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
void panicWithTC9Unavailable(const char* message) {
|
||||
fprintf(stderr, "Tried to call '%s', but using stub for libsidecar. Use -DUSE_REAL_LIBSIDECAR=ON in cmake to use the real one.\n", message);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
// TC9SetBattlegroundStartHandler sets handler for starting battleground.
|
||||
//
|
||||
extern void TC9SetBattlegroundStartHandler(BattlegroundStartHandler h) { panicWithTC9Unavailable("TC9SetBattlegroundStartHandler"); }
|
||||
|
||||
// TC9SetBattlegroundAddPlayersHandler sets handler for adding players to battleground.
|
||||
//
|
||||
extern void TC9SetBattlegroundAddPlayersHandler(BattlegroundAddPlayersHandler h) { panicWithTC9Unavailable("TC9SetBattlegroundAddPlayersHandler"); }
|
||||
|
||||
void TC9SetOnGroupCreatedHook(OnGroupCreatedHook h) { panicWithTC9Unavailable("TC9SetOnGroupCreatedHook"); }
|
||||
|
||||
// TC9SetOnGroupMemberAddedHook sets hook for member added event.
|
||||
//
|
||||
void TC9SetOnGroupMemberAddedHook(OnGroupMemberAddedHook h) { panicWithTC9Unavailable("TC9SetOnGroupMemberAddedHook"); }
|
||||
|
||||
// TC9SetOnGroupMemberRemovedHook sets hook for member left/kicked event.
|
||||
//
|
||||
void TC9SetOnGroupMemberRemovedHook(OnGroupMemberRemovedHook h) { panicWithTC9Unavailable("TC9SetOnGroupMemberRemovedHook"); }
|
||||
|
||||
// TC9SetOnGroupDisbandedHook sets hook for group disbanded event.
|
||||
//
|
||||
void TC9SetOnGroupDisbandedHook(OnGroupDisbandedHook h) { panicWithTC9Unavailable("TC9SetOnGroupDisbandedHook"); }
|
||||
|
||||
// TC9SetOnGroupLootTypeChangedHook sets hook for group loot type changed event.
|
||||
//
|
||||
void TC9SetOnGroupLootTypeChangedHook(OnGroupLootTypeChangedHook h) { panicWithTC9Unavailable("TC9SetOnGroupLootTypeChangedHook"); }
|
||||
|
||||
// TC9SetOnGroupDungeonDifficultyChangedHook sets hook for group dungeon difficulty changed event.
|
||||
//
|
||||
void TC9SetOnGroupDungeonDifficultyChangedHook(OnGroupDungeonDifficultyChangedHook h) { panicWithTC9Unavailable("TC9SetOnGroupDungeonDifficultyChangedHook"); }
|
||||
|
||||
// TC9SetOnGroupRaidDifficultyChangedHook sets hook for group raid difficulty changed event.
|
||||
//
|
||||
void TC9SetOnGroupRaidDifficultyChangedHook(OnGroupRaidDifficultyChangedHook h) { panicWithTC9Unavailable("TC9SetOnGroupRaidDifficultyChangedHook"); }
|
||||
|
||||
// TC9SetOnGroupConvertedToRaidHook sets hook for group converted to raid event.
|
||||
//
|
||||
void TC9SetOnGroupConvertedToRaidHook(OnGroupConvertedToRaidHook h) { panicWithTC9Unavailable("TC9SetOnGroupConvertedToRaidHook"); }
|
||||
|
||||
void TC9SetOnGuildMemberAddedHook(OnGuildMemberAddedHook h) { panicWithTC9Unavailable("TC9SetOnGuildMemberAddedHook"); }
|
||||
|
||||
// TC9SetOnGuildMemberRemovedHook sets hook for guild member removed (kicked) event.
|
||||
void TC9SetOnGuildMemberRemovedHook(OnGuildMemberRemovedHook h) { panicWithTC9Unavailable("TC9SetOnGuildMemberRemovedHook"); }
|
||||
|
||||
// TC9SetOnGuildMemberLeftHook sets hook for guild member left event.
|
||||
void TC9SetOnGuildMemberLeftHook(OnGuildMemberLeftHook h) { panicWithTC9Unavailable("TC9SetOnGuildMemberLeftHook"); }
|
||||
|
||||
// TC9ProcessEventsHooks calls all events hooks.
|
||||
void TC9ProcessEventsHooks() { panicWithTC9Unavailable("TC9ProcessEventsHooks"); }
|
||||
|
||||
// TC9ProcessGRPCOrHTTPRequests calls all grpc or http handlers in queue.
|
||||
//
|
||||
void TC9ProcessGRPCOrHTTPRequests() { panicWithTC9Unavailable("TC9ProcessGRPCOrHTTPRequests"); }
|
||||
|
||||
// TC9GetNextAvailableCharacterGuid returns next available characters GUID. Thread unsafe.
|
||||
uint64_t TC9GetNextAvailableCharacterGuid(int realmID) { panicWithTC9Unavailable("TC9GetNextAvailableCharacterGuid"); return 0; }
|
||||
|
||||
// TC9GetNextAvailableItemGuid returns next available item GUID. Thread unsafe.
|
||||
uint64_t TC9GetNextAvailableItemGuid(int realmID) { panicWithTC9Unavailable("TC9GetNextAvailableItemGuid"); return 0; }
|
||||
|
||||
// TC9GetNextAvailableInstanceGuid returns next available dungeon/raid instance GUID. Thread unsafe.
|
||||
uint64_t TC9GetNextAvailableInstanceGuid(int realmID) { panicWithTC9Unavailable("TC9GetNextAvailableInstanceGuid"); return 0; }
|
||||
|
||||
// TC9InitLib inits lib by starting services like grpc and healthcheck.
|
||||
// Adds game server to the servers registry that will make this server visible for game load balancer.
|
||||
//
|
||||
void TC9InitLib(uint16_t port, uint32_t realmID, uint8_t isCrossRealm, char* availableMaps, uint32_t** assignedMaps, int* assignedMapsSize) { panicWithTC9Unavailable("TC9InitLib"); }
|
||||
|
||||
// TC9GracefulShutdown gracefully stops all running services.
|
||||
//
|
||||
void TC9GracefulShutdown() { panicWithTC9Unavailable("TC9GracefulShutdown"); }
|
||||
|
||||
// TC9ReadyToAcceptPlayersFromMaps notifies servers registry that this server
|
||||
// loaded maps related data and ready to accept players from those maps.
|
||||
//
|
||||
void TC9ReadyToAcceptPlayersFromMaps(uint32_t* maps, int mapsLen) { panicWithTC9Unavailable("TC9ReadyToAcceptPlayersFromMaps"); }
|
||||
|
||||
// TC9SetCanPlayerInteractWithNPCAndFlagsHandler sets handler for can player interact with NPC and with given NPC flags request.
|
||||
//
|
||||
void TC9SetCanPlayerInteractWithNPCAndFlagsHandler(CanPlayerInteractWithNPCAndFlagsHandler h) { panicWithTC9Unavailable("TC9SetCanPlayerInteractWithNPCAndFlagsHandler"); }
|
||||
|
||||
// TC9SetCanPlayerInteractWithGOAndTypeHandler sets handler for can player interact with GameObject and with given object type request.
|
||||
//
|
||||
void TC9SetCanPlayerInteractWithGOAndTypeHandler(CanPlayerInteractWithGOAndTypeHandler h) { panicWithTC9Unavailable("TC9SetCanPlayerInteractWithGOAndTypeHandler"); }
|
||||
|
||||
// TC9SetGetPlayerItemsByGuidsHandler sets handler for getting players item by guids request.
|
||||
void TC9SetGetPlayerItemsByGuidsHandler(GetPlayerItemsByGuidsHandler h) { panicWithTC9Unavailable("TC9SetGetPlayerItemsByGuidsHandler"); }
|
||||
|
||||
// TC9SetRemoveItemsWithGuidsFromPlayerHandler sets handler for removing items by guids from player request.
|
||||
void TC9SetRemoveItemsWithGuidsFromPlayerHandler(RemoveItemsWithGuidsFromPlayerHandler h) { panicWithTC9Unavailable("TC9SetRemoveItemsWithGuidsFromPlayerHandler"); }
|
||||
|
||||
// TC9SetAddExistingItemToPlayerHandler sets handler for adding item to player request.
|
||||
void TC9SetAddExistingItemToPlayerHandler(AddExistingItemToPlayerHandler h) { panicWithTC9Unavailable("TC9SetAddExistingItemToPlayerHandler"); }
|
||||
|
||||
// TC9SetGetMoneyForPlayerHandler sets handler for getting money for player request.
|
||||
//
|
||||
void TC9SetGetMoneyForPlayerHandler(GetMoneyForPlayerHandler h) { panicWithTC9Unavailable("TC9SetGetMoneyForPlayerHandler"); }
|
||||
|
||||
// TC9SetModifyMoneyForPlayerHandler sets handler for modify money for given player request.
|
||||
//
|
||||
void TC9SetModifyMoneyForPlayerHandler(ModifyMoneyForPlayerHandler h) { panicWithTC9Unavailable("TC9SetModifyMoneyForPlayerHandler"); }
|
||||
|
||||
|
||||
// TC9SetOnMapsReassignedHook sets hook for maps reassigning by servers registry event.
|
||||
//
|
||||
void TC9SetOnMapsReassignedHook(OnMapsReassignedHook h) { panicWithTC9Unavailable("TC9SetOnMapsReassignedHook"); }
|
||||
|
||||
// TC9SetMonitoringDataCollectorHandler sets handler for getting data to handle monitoring request.
|
||||
//
|
||||
void TC9SetMonitoringDataCollectorHandler(MonitoringDataCollectorHandler h) { panicWithTC9Unavailable("TC9SetMonitoringDataCollectorHandler"); }
|
||||
|
||||
// TC9NatsPublish/Subscribe generic NATS pub/sub for in-process extensions
|
||||
int TC9NatsPublish(const char* subject, const char* payload, int payloadLen) { panicWithTC9Unavailable("TC9NatsPublish"); return -1; }
|
||||
int TC9NatsSubscribe(const char* subject, TC9NatsMessageHandler handler) { panicWithTC9Unavailable("TC9NatsSubscribe"); return -1; }
|
||||
|
||||
// TC9PlayerLeftBattleground notifies matchmaking server that player left battleground
|
||||
//
|
||||
void TC9PlayerLeftBattleground(uint64_t playerGUID, uint32_t realmID, uint32_t instanceID) { panicWithTC9Unavailable("TC9PlayerLeftBattleground"); }
|
||||
|
||||
// TC9BattlegroundStatusChanged notifies matchmaking server that battleground status changed
|
||||
//
|
||||
void TC9BattlegroundStatusChanged(uint32_t instanceID, uint8_t status) { panicWithTC9Unavailable("TC9BattlegroundStatusChanged"); }
|
||||
|
||||
// TC9SetCanPlayerJoinBattlegroundQueueHandler sets handler for checking if player can join to battleground queue.
|
||||
//
|
||||
void TC9SetCanPlayerJoinBattlegroundQueueHandler(CanPlayerJoinBattlegroundQueueHandler h) { panicWithTC9Unavailable("TC9SetCanPlayerJoinBattlegroundQueueHandler"); }
|
||||
|
||||
// TC9SetCanPlayerTeleportToBattlegroundHandler sets handler for checking if player can teleport to battleground.
|
||||
//
|
||||
void TC9SetCanPlayerTeleportToBattlegroundHandler(CanPlayerTeleportToBattlegroundHandler h) { panicWithTC9Unavailable("TC9SetCanPlayerTeleportToBattlegroundHandler"); }
|
||||
84
deps/libsidecar/stub/libsidecar.h
vendored
Normal file
84
deps/libsidecar/stub/libsidecar.h
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
#ifndef __LIBSIDECAR_H__
|
||||
#define __LIBSIDECAR_H__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
/* Include all API headers */
|
||||
#include "battleground-api.h"
|
||||
#include "events-group.h"
|
||||
#include "events-guild.h"
|
||||
#include "events-servers-registry.h"
|
||||
#include "monitoring.h"
|
||||
#include "player-interactions-api.h"
|
||||
#include "player-items-api.h"
|
||||
#include "player-money-api.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Main library functions */
|
||||
void TC9InitLib(uint16_t port, uint32_t realmID, uint8_t isCrossRealm, char* availableMaps, uint32_t** assignedMaps, int* assignedMapsSize);
|
||||
void TC9GracefulShutdown();
|
||||
void TC9ProcessGRPCOrHTTPRequests();
|
||||
void TC9ProcessEventsHooks();
|
||||
|
||||
/* GUID generation */
|
||||
uint64_t TC9GetNextAvailableCharacterGuid(int realmID);
|
||||
uint64_t TC9GetNextAvailableItemGuid(int realmID);
|
||||
uint64_t TC9GetNextAvailableInstanceGuid(int realmID);
|
||||
|
||||
/* Map loading notification */
|
||||
void TC9ReadyToAcceptPlayersFromMaps(uint32_t* maps, int mapsLen);
|
||||
|
||||
/* Generic NATS pub/sub for in-process extensions. Subscribe callbacks run
|
||||
* on the thread that calls TC9ProcessEventsHooks. Call after TC9InitLib.
|
||||
* Both return 0 on success, -1 on error. */
|
||||
typedef void (*TC9NatsMessageHandler)(const char* subject, const char* payload, int payloadLen);
|
||||
int TC9NatsPublish(const char* subject, const char* payload, int payloadLen);
|
||||
int TC9NatsSubscribe(const char* subject, TC9NatsMessageHandler handler);
|
||||
|
||||
/* Matchmaking notifications */
|
||||
void TC9PlayerLeftBattleground(uint64_t playerGUID, uint32_t realmID, uint32_t instanceID);
|
||||
void TC9BattlegroundStatusChanged(uint32_t instanceID, uint8_t status);
|
||||
|
||||
/* Event hooks registration */
|
||||
void TC9SetOnGroupCreatedHook(OnGroupCreatedHook h);
|
||||
void TC9SetOnGroupMemberAddedHook(OnGroupMemberAddedHook h);
|
||||
void TC9SetOnGroupMemberRemovedHook(OnGroupMemberRemovedHook h);
|
||||
void TC9SetOnGroupDisbandedHook(OnGroupDisbandedHook h);
|
||||
void TC9SetOnGroupLootTypeChangedHook(OnGroupLootTypeChangedHook h);
|
||||
void TC9SetOnGroupDungeonDifficultyChangedHook(OnGroupDungeonDifficultyChangedHook h);
|
||||
void TC9SetOnGroupRaidDifficultyChangedHook(OnGroupRaidDifficultyChangedHook h);
|
||||
void TC9SetOnGroupConvertedToRaidHook(OnGroupConvertedToRaidHook h);
|
||||
|
||||
void TC9SetOnGuildMemberAddedHook(OnGuildMemberAddedHook h);
|
||||
void TC9SetOnGuildMemberRemovedHook(OnGuildMemberRemovedHook h);
|
||||
void TC9SetOnGuildMemberLeftHook(OnGuildMemberLeftHook h);
|
||||
|
||||
void TC9SetOnMapsReassignedHook(OnMapsReassignedHook h);
|
||||
|
||||
/* Handler registration for gRPC requests */
|
||||
void TC9SetBattlegroundStartHandler(BattlegroundStartHandler h);
|
||||
void TC9SetBattlegroundAddPlayersHandler(BattlegroundAddPlayersHandler h);
|
||||
void TC9SetCanPlayerJoinBattlegroundQueueHandler(CanPlayerJoinBattlegroundQueueHandler h);
|
||||
void TC9SetCanPlayerTeleportToBattlegroundHandler(CanPlayerTeleportToBattlegroundHandler h);
|
||||
|
||||
void TC9SetMonitoringDataCollectorHandler(MonitoringDataCollectorHandler h);
|
||||
|
||||
void TC9SetCanPlayerInteractWithNPCAndFlagsHandler(CanPlayerInteractWithNPCAndFlagsHandler h);
|
||||
void TC9SetCanPlayerInteractWithGOAndTypeHandler(CanPlayerInteractWithGOAndTypeHandler h);
|
||||
|
||||
void TC9SetGetPlayerItemsByGuidsHandler(GetPlayerItemsByGuidsHandler h);
|
||||
void TC9SetRemoveItemsWithGuidsFromPlayerHandler(RemoveItemsWithGuidsFromPlayerHandler h);
|
||||
void TC9SetAddExistingItemToPlayerHandler(AddExistingItemToPlayerHandler h);
|
||||
|
||||
void TC9SetGetMoneyForPlayerHandler(GetMoneyForPlayerHandler h);
|
||||
void TC9SetModifyMoneyForPlayerHandler(ModifyMoneyForPlayerHandler h);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __LIBSIDECAR_H__ */
|
||||
16
deps/libsidecar/stub/monitoring.c
vendored
Normal file
16
deps/libsidecar/stub/monitoring.c
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
#include "monitoring.h"
|
||||
|
||||
static MonitoringDataCollectorHandler monitoringDataCollectorHandler;
|
||||
void SetMonitoringDataCollectorHandler(MonitoringDataCollectorHandler h) {
|
||||
monitoringDataCollectorHandler = h;
|
||||
}
|
||||
|
||||
MonitoringDataCollectorResponse CallMonitoringDataCollectorHandler() {
|
||||
if (monitoringDataCollectorHandler == 0) {
|
||||
MonitoringDataCollectorResponse resp;
|
||||
resp.errorCode = MonitoringErrorCodeNoHandler;
|
||||
return resp;
|
||||
}
|
||||
|
||||
return monitoringDataCollectorHandler();
|
||||
}
|
||||
28
deps/libsidecar/stub/monitoring.h
vendored
Normal file
28
deps/libsidecar/stub/monitoring.h
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
#ifndef __MONITORING__
|
||||
#define __MONITORING__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
typedef enum MonitoringErrorCode {
|
||||
MonitoringErrorCodeNoError = 0,
|
||||
MonitoringErrorCodeNoHandler = 1,
|
||||
} MonitoringErrorCode;
|
||||
|
||||
// MonitoringDataCollectorResponse request.
|
||||
typedef struct {
|
||||
int errorCode;
|
||||
uint32_t connectedPlayers;
|
||||
uint32_t diffMean;
|
||||
uint32_t diffMedian;
|
||||
uint32_t diff95Percentile;
|
||||
uint32_t diff99Percentile;
|
||||
uint32_t diffMaxPercentile;
|
||||
} MonitoringDataCollectorResponse;
|
||||
|
||||
typedef MonitoringDataCollectorResponse (*MonitoringDataCollectorHandler)();
|
||||
void SetMonitoringDataCollectorHandler(MonitoringDataCollectorHandler h);
|
||||
MonitoringDataCollectorResponse CallMonitoringDataCollectorHandler();
|
||||
|
||||
#endif
|
||||
31
deps/libsidecar/stub/player-interactions-api.c
vendored
Normal file
31
deps/libsidecar/stub/player-interactions-api.c
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
#include "player-interactions-api.h"
|
||||
|
||||
static CanPlayerInteractWithNPCAndFlagsHandler canPlayerInteractWithNPCAndFlagsHandler;
|
||||
void SetCanPlayerInteractWithNPCAndFlagsHandler(CanPlayerInteractWithNPCAndFlagsHandler h) {
|
||||
canPlayerInteractWithNPCAndFlagsHandler = h;
|
||||
}
|
||||
|
||||
CanPlayerInteractWithNPCAndFlagsResponse CallCanPlayerInteractWithNPCAndFlagsHandler(uint64_t player_guid, uint64_t npc_guid, uint32_t npc_flags) {
|
||||
if (canPlayerInteractWithNPCAndFlagsHandler == 0) {
|
||||
CanPlayerInteractWithNPCAndFlagsResponse resp;
|
||||
resp.errorCode = PlayerInteractionErrorCodeNoHandler;
|
||||
return resp;
|
||||
}
|
||||
|
||||
return canPlayerInteractWithNPCAndFlagsHandler(player_guid, npc_guid, npc_flags);
|
||||
}
|
||||
|
||||
static CanPlayerInteractWithGOAndTypeHandler canPlayerInteractWithGOAndTypeHandler;
|
||||
void SetCanPlayerInteractWithGOAndTypeHandler(CanPlayerInteractWithGOAndTypeHandler h) {
|
||||
canPlayerInteractWithGOAndTypeHandler = h;
|
||||
}
|
||||
|
||||
CanPlayerInteractWithGOAndTypeResponse CallCanPlayerInteractWithGOAndTypeHandler(uint64_t player_guid, uint64_t go_guid, uint8_t go_type) {
|
||||
if (canPlayerInteractWithGOAndTypeHandler == 0) {
|
||||
CanPlayerInteractWithGOAndTypeResponse resp;
|
||||
resp.errorCode = PlayerInteractionErrorCodeNoHandler;
|
||||
return resp;
|
||||
}
|
||||
|
||||
return canPlayerInteractWithGOAndTypeHandler(player_guid, go_guid, go_type);
|
||||
}
|
||||
34
deps/libsidecar/stub/player-interactions-api.h
vendored
Normal file
34
deps/libsidecar/stub/player-interactions-api.h
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
#ifndef __PLAYER_INTERACTIONS_API__
|
||||
#define __PLAYER_INTERACTIONS_API__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
typedef enum PlayerInteractionErrorCode {
|
||||
PlayerInteractionErrorCodeNoError = 0,
|
||||
PlayerInteractionErrorCodeNoHandler = 1,
|
||||
PlayerInteractionErrorCodeCodePlayerNotFound = 2,
|
||||
} PlayerInteractionErrorCode;
|
||||
|
||||
// CanPlayerInteractWithNPCAndFlags request.
|
||||
typedef struct {
|
||||
int errorCode;
|
||||
bool canInteract;
|
||||
} CanPlayerInteractWithNPCAndFlagsResponse;
|
||||
|
||||
typedef CanPlayerInteractWithNPCAndFlagsResponse (*CanPlayerInteractWithNPCAndFlagsHandler) (uint64_t /*playerGUID*/, uint64_t /*npcGUID*/, uint32_t /*npcFlags*/);
|
||||
void SetCanPlayerInteractWithNPCAndFlagsHandler(CanPlayerInteractWithNPCAndFlagsHandler h);
|
||||
CanPlayerInteractWithNPCAndFlagsResponse CallCanPlayerInteractWithNPCAndFlagsHandler(uint64_t player_guid, uint64_t npc_guid, uint32_t npc_flags);
|
||||
|
||||
// CanPlayerInteractWithGOAndType request.
|
||||
typedef struct {
|
||||
int errorCode;
|
||||
bool canInteract;
|
||||
} CanPlayerInteractWithGOAndTypeResponse;
|
||||
|
||||
typedef CanPlayerInteractWithGOAndTypeResponse (*CanPlayerInteractWithGOAndTypeHandler) (uint64_t /*playerGUID*/, uint64_t /*goGUID*/, uint8_t /*goType*/);
|
||||
void SetCanPlayerInteractWithGOAndTypeHandler(CanPlayerInteractWithGOAndTypeHandler h);
|
||||
CanPlayerInteractWithGOAndTypeResponse CallCanPlayerInteractWithGOAndTypeHandler(uint64_t player_guid, uint64_t go_guid, uint8_t go_type);
|
||||
|
||||
#endif
|
||||
44
deps/libsidecar/stub/player-items-api.c
vendored
Normal file
44
deps/libsidecar/stub/player-items-api.c
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
#include "player-items-api.h"
|
||||
|
||||
static GetPlayerItemsByGuidsHandler getPlayerItemsByGuidsHandler;
|
||||
void SetGetPlayerItemsByGuidsHandler(GetPlayerItemsByGuidsHandler h) {
|
||||
getPlayerItemsByGuidsHandler = h;
|
||||
}
|
||||
|
||||
GetPlayerItemsByGuidsResponse CallGetPlayerItemsByGuidsHandler(uint64_t player_guid, uint64_t* items_guids, int items_guids_size) {
|
||||
if (getPlayerItemsByGuidsHandler == 0) {
|
||||
GetPlayerItemsByGuidsResponse resp;
|
||||
resp.errorCode = PlayerItemErrorCodeNoHandler;
|
||||
return resp;
|
||||
}
|
||||
|
||||
return getPlayerItemsByGuidsHandler(player_guid, items_guids, items_guids_size);
|
||||
}
|
||||
|
||||
static RemoveItemsWithGuidsFromPlayerHandler removeItemsWithGuidsFromPlayerHandler;
|
||||
void SetRemoveItemsWithGuidsFromPlayerHandler(RemoveItemsWithGuidsFromPlayerHandler h) {
|
||||
removeItemsWithGuidsFromPlayerHandler = h;
|
||||
}
|
||||
|
||||
RemoveItemsWithGuidsFromPlayerResponse CallRemoveItemsWithGuidsFromPlayerHandler(uint64_t player_guid, uint64_t* items_guids, int items_guids_size, uint64_t assign_player_guid) {
|
||||
if (removeItemsWithGuidsFromPlayerHandler == 0) {
|
||||
RemoveItemsWithGuidsFromPlayerResponse resp;
|
||||
resp.errorCode = PlayerItemErrorCodeNoHandler;
|
||||
return resp;
|
||||
}
|
||||
|
||||
return removeItemsWithGuidsFromPlayerHandler(player_guid, items_guids, items_guids_size, assign_player_guid);
|
||||
}
|
||||
|
||||
static AddExistingItemToPlayerHandler addExistingItemToPlayerHandler;
|
||||
void SetAddExistingItemToPlayerHandler(AddExistingItemToPlayerHandler h) {
|
||||
addExistingItemToPlayerHandler = h;
|
||||
}
|
||||
|
||||
PlayerItemErrorCode CallAddExistingItemToPlayerHandler(AddExistingItemToPlayerRequest *r) {
|
||||
if (addExistingItemToPlayerHandler == 0) {
|
||||
return PlayerItemErrorCodeNoHandler;
|
||||
}
|
||||
|
||||
return addExistingItemToPlayerHandler(r);
|
||||
}
|
||||
68
deps/libsidecar/stub/player-items-api.h
vendored
Normal file
68
deps/libsidecar/stub/player-items-api.h
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
#ifndef __PLAYER_ITEMS_API__
|
||||
#define __PLAYER_ITEMS_API__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
typedef enum PlayerItemErrorCode {
|
||||
PlayerItemErrorCodeNoError = 0,
|
||||
PlayerItemErrorCodeNoHandler = 1,
|
||||
PlayerItemErrorCodePlayerNotFound = 2,
|
||||
PlayerItemErrorNoInventorySpace = 3,
|
||||
PlayerItemErrorUnknownTemplate = 4,
|
||||
PlayerItemErrorFailedToCreateItem = 5
|
||||
} PlayerItemErrorCode;
|
||||
|
||||
// GetPlayerItemsByGuids request.
|
||||
typedef struct {
|
||||
uint64_t guid;
|
||||
uint32_t entry;
|
||||
uint64_t owner;
|
||||
uint8_t bagSlot;
|
||||
uint8_t slot;
|
||||
bool isTradable;
|
||||
uint32_t count;
|
||||
uint16_t flags;
|
||||
uint8_t durability;
|
||||
int8_t randomPropertyID;
|
||||
const char* text;
|
||||
} PlayerItem;
|
||||
|
||||
typedef struct {
|
||||
int errorCode;
|
||||
PlayerItem* items;
|
||||
int itemsSize;
|
||||
} GetPlayerItemsByGuidsResponse;
|
||||
|
||||
typedef GetPlayerItemsByGuidsResponse (*GetPlayerItemsByGuidsHandler) (uint64_t /*player_guid*/, uint64_t* /*items_guids*/, int /*items_guids_size*/);
|
||||
void SetGetPlayerItemsByGuidsHandler(GetPlayerItemsByGuidsHandler h);
|
||||
GetPlayerItemsByGuidsResponse CallGetPlayerItemsByGuidsHandler(uint64_t player_guid, uint64_t* items_guids, int items_guids_size);
|
||||
|
||||
// RemoveItemsWithGuidsFromPlayer request.
|
||||
typedef struct {
|
||||
int errorCode;
|
||||
uint64_t* updatedItems;
|
||||
int updatedItemsSize;
|
||||
} RemoveItemsWithGuidsFromPlayerResponse;
|
||||
|
||||
typedef RemoveItemsWithGuidsFromPlayerResponse (*RemoveItemsWithGuidsFromPlayerHandler) (uint64_t /*player_guid*/, uint64_t* /*items_guids*/, int /*items_guids_size*/, uint64_t /*assign_player_guid*/);
|
||||
void SetRemoveItemsWithGuidsFromPlayerHandler(RemoveItemsWithGuidsFromPlayerHandler h);
|
||||
RemoveItemsWithGuidsFromPlayerResponse CallRemoveItemsWithGuidsFromPlayerHandler(uint64_t player_guid, uint64_t* items_guids, int items_guids_size, uint64_t assign_player_guid);
|
||||
|
||||
// AddExistingItemToPlayer request.
|
||||
typedef struct {
|
||||
uint64_t playerGuid;
|
||||
uint64_t itemGuid;
|
||||
uint32_t itemEntry;
|
||||
uint32_t itemCount;
|
||||
uint16_t itemFlags;
|
||||
uint8_t itemDurability;
|
||||
int8_t itemRandomPropertyID;
|
||||
} AddExistingItemToPlayerRequest;
|
||||
|
||||
typedef PlayerItemErrorCode (*AddExistingItemToPlayerHandler) (AddExistingItemToPlayerRequest*);
|
||||
void SetAddExistingItemToPlayerHandler(AddExistingItemToPlayerHandler h);
|
||||
PlayerItemErrorCode CallAddExistingItemToPlayerHandler(AddExistingItemToPlayerRequest*);
|
||||
|
||||
#endif
|
||||
31
deps/libsidecar/stub/player-money-api.c
vendored
Normal file
31
deps/libsidecar/stub/player-money-api.c
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
#include "player-money-api.h"
|
||||
|
||||
static GetMoneyForPlayerHandler getMoneyForPlayerHandler;
|
||||
void SetGetMoneyForPlayerHandler(GetMoneyForPlayerHandler h) {
|
||||
getMoneyForPlayerHandler = h;
|
||||
}
|
||||
|
||||
GetMoneyForPlayerResponse CallGetMoneyForPlayerHandler(uint64_t player_guid) {
|
||||
if (getMoneyForPlayerHandler == 0) {
|
||||
GetMoneyForPlayerResponse resp;
|
||||
resp.errorCode = PlayerMoneyErrorCodeNoHandler;
|
||||
return resp;
|
||||
}
|
||||
|
||||
return getMoneyForPlayerHandler(player_guid);
|
||||
}
|
||||
|
||||
static ModifyMoneyForPlayerHandler modifyMoneyForPlayerHandler;
|
||||
void SetModifyMoneyForPlayerHandler(ModifyMoneyForPlayerHandler h) {
|
||||
modifyMoneyForPlayerHandler = h;
|
||||
}
|
||||
|
||||
ModifyMoneyForPlayerResponse CallModifyMoneyForPlayerHandler(uint64_t player_guid, int32_t amount) {
|
||||
if (modifyMoneyForPlayerHandler == 0) {
|
||||
ModifyMoneyForPlayerResponse resp;
|
||||
resp.errorCode = PlayerMoneyErrorCodeNoHandler;
|
||||
return resp;
|
||||
}
|
||||
|
||||
return modifyMoneyForPlayerHandler(player_guid, amount);
|
||||
}
|
||||
35
deps/libsidecar/stub/player-money-api.h
vendored
Normal file
35
deps/libsidecar/stub/player-money-api.h
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
#ifndef __PLAYER_MONEY_API__
|
||||
#define __PLAYER_MONEY_API__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
typedef enum PlayerMoneyErrorCode {
|
||||
PlayerMoneyErrorCodeNoError = 0,
|
||||
PlayerMoneyErrorCodeNoHandler = 1,
|
||||
PlayerMoneyErrorCodePlayerNotFound = 2,
|
||||
PlayerMoneyErrorCodeTooMuchMoney = 3,
|
||||
} PlayerMoneyErrorCode;
|
||||
|
||||
// GetMoneyForPlayer request.
|
||||
typedef struct {
|
||||
int errorCode;
|
||||
uint32_t money;
|
||||
} GetMoneyForPlayerResponse;
|
||||
|
||||
typedef GetMoneyForPlayerResponse (*GetMoneyForPlayerHandler) (uint64_t /*player_guid*/);
|
||||
void SetGetMoneyForPlayerHandler(GetMoneyForPlayerHandler h);
|
||||
GetMoneyForPlayerResponse CallGetMoneyForPlayerHandler(uint64_t player_guid);
|
||||
|
||||
// ModifyMoneyForPlayer request.
|
||||
typedef struct {
|
||||
int errorCode;
|
||||
uint32_t newMoneyValue;
|
||||
} ModifyMoneyForPlayerResponse;
|
||||
|
||||
typedef ModifyMoneyForPlayerResponse (*ModifyMoneyForPlayerHandler) (uint64_t /*player_guid*/, int32_t /*amount*/);
|
||||
void SetModifyMoneyForPlayerHandler(ModifyMoneyForPlayerHandler h);
|
||||
ModifyMoneyForPlayerResponse CallModifyMoneyForPlayerHandler(uint64_t player_guid, int32_t amount);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user