1
0
mirror of https://github.com/ncblakely/GiantsTools synced 2024-11-05 14:55:38 +01:00
GiantsTools/Sdk/Include/Network/Public/GameServerEvents.h

56 lines
1.1 KiB
C
Raw Normal View History

2020-08-27 08:10:21 +02:00
#pragma once
2021-01-24 00:40:09 +01:00
#include "Core/Public/DataTypes.h"
2020-08-27 08:10:21 +02:00
#include "NetCommon.h"
/// <summary>
/// Event types for <see cref="IGameServer">.
/// </summary>
enum class GameServerEventType
{
None = 0,
PlayerConnected = 1,
PlayerDisconnected = 2,
ChatMessage = 3,
WorldLoaded = 4,
};
struct GameServerEvent
{
public:
virtual ~GameServerEvent() = default;
GameServerEvent(GameServerEventType type) noexcept { this->type = type; }
private:
GameServerEventType type;
};
struct PlayerConnectedEvent : GameServerEvent
{
PlayerConnectedEvent() noexcept : GameServerEvent(GameServerEventType::PlayerConnected) { }
std::shared_ptr<PlayerInfo> info;
2020-08-27 08:10:21 +02:00
};
struct PlayerDisconnectedEvent : GameServerEvent
{
PlayerDisconnectedEvent() noexcept : GameServerEvent(GameServerEventType::PlayerDisconnected) { }
std::shared_ptr<PlayerInfo> info;
2020-08-27 08:10:21 +02:00
};
struct ChatMessageEvent : GameServerEvent
{
ChatMessageEvent() noexcept : GameServerEvent(GameServerEventType::ChatMessage) { }
tstring_view message{};
PlayerIndex senderIndex{};
2021-02-28 09:46:21 +01:00
ChatFlag flags{};
2020-08-27 08:10:21 +02:00
};
struct WorldLoadedEvent : GameServerEvent
{
WorldLoadedEvent() noexcept : GameServerEvent(GameServerEventType::WorldLoaded) { }
};