mirror of
https://github.com/Jous99/F4MP.git
synced 2026-01-13 00:20:54 +01:00
115 lines
3.9 KiB
C++
115 lines
3.9 KiB
C++
#pragma once
|
|
|
|
#include <include/internal/cef_ptr.h>
|
|
|
|
namespace TiltedPhoques
|
|
{
|
|
struct OverlayApp;
|
|
}
|
|
|
|
struct RenderSystemD3D11;
|
|
struct D3D11RenderProvider;
|
|
struct FormIdComponent;
|
|
struct World;
|
|
struct Actor;
|
|
struct UpdateEvent;
|
|
struct ConnectedEvent;
|
|
struct DisconnectedEvent;
|
|
struct TransportService;
|
|
struct NotifyChatMessageBroadcast;
|
|
struct NotifyPlayerList;
|
|
struct NotifyPlayerJoined;
|
|
struct NotifyPlayerLeft;
|
|
struct NotifyPlayerDialogue;
|
|
struct ConnectionErrorEvent;
|
|
struct NotifyPlayerLevel;
|
|
struct NotifyPlayerCellChanged;
|
|
struct NotifyTeleport;
|
|
struct NotifyPlayerHealthUpdate;
|
|
enum ChatMessageTypes;
|
|
struct PartyJoinedEvent;
|
|
struct PartyLeftEvent;
|
|
|
|
using TiltedPhoques::OverlayApp;
|
|
|
|
/**
|
|
* @brief Controls the UI from the client.
|
|
*/
|
|
struct OverlayService
|
|
{
|
|
OverlayService(World& aWorld, TransportService& transport, entt::dispatcher& aDispatcher);
|
|
~OverlayService() noexcept;
|
|
|
|
TP_NOCOPYMOVE(OverlayService);
|
|
|
|
void Create(RenderSystemD3D11* apRenderSystem) noexcept;
|
|
|
|
void Render() noexcept;
|
|
void Reset() const noexcept;
|
|
void Reload() noexcept;
|
|
|
|
void Initialize() noexcept;
|
|
|
|
void SetActive(bool aActive) noexcept;
|
|
[[nodiscard]] bool GetActive() const noexcept;
|
|
|
|
void SetInGame(bool aInGame) noexcept;
|
|
[[nodiscard]] bool GetInGame() const noexcept;
|
|
|
|
void SetVersion(const std::string& acVersion);
|
|
|
|
OverlayApp* GetOverlayApp() const noexcept { return m_pOverlay.get(); }
|
|
|
|
void SendSystemMessage(const std::string& acMessage);
|
|
|
|
void SetPlayerHealthPercentage(uint32_t aFormId) const noexcept;
|
|
|
|
protected:
|
|
void OnUpdate(const UpdateEvent&) noexcept;
|
|
void OnConnectedEvent(const ConnectedEvent&) noexcept;
|
|
void OnDisconnectedEvent(const DisconnectedEvent&) noexcept;
|
|
void OnWaitingFor3DRemoved(entt::registry& aRegistry, entt::entity aEntity) const noexcept;
|
|
void OnPlayerComponentRemoved(entt::registry& aRegistry, entt::entity aEntity) const noexcept;
|
|
void OnConnectionError(const ConnectionErrorEvent& acConnectedEvent) const noexcept;
|
|
void OnChatMessageReceived(const NotifyChatMessageBroadcast&) noexcept;
|
|
void OnPlayerDialogue(const NotifyPlayerDialogue&) noexcept;
|
|
void OnPlayerJoined(const NotifyPlayerJoined&) noexcept;
|
|
void OnPlayerLeft(const NotifyPlayerLeft&) noexcept;
|
|
void OnPlayerLevel(const NotifyPlayerLevel&) noexcept;
|
|
void OnPlayerCellChanged(const NotifyPlayerCellChanged& acMessage) const noexcept;
|
|
void OnNotifyTeleport(const NotifyTeleport& acMessage) noexcept;
|
|
void OnNotifyPlayerHealthUpdate(const NotifyPlayerHealthUpdate& acMessage) noexcept;
|
|
void OnPartyJoinedEvent(const PartyJoinedEvent& acEvent) noexcept;
|
|
void OnPartyLeftEvent(const PartyLeftEvent& acEvent) noexcept;
|
|
|
|
private:
|
|
void RunDebugDataUpdates() noexcept;
|
|
void RunPlayerHealthUpdates() noexcept;
|
|
|
|
CefRefPtr<OverlayApp> m_pOverlay{nullptr};
|
|
TiltedPhoques::UniquePtr<D3D11RenderProvider> m_pProvider;
|
|
|
|
World& m_world;
|
|
TransportService& m_transport;
|
|
|
|
bool m_active = false;
|
|
bool m_inGame = false;
|
|
|
|
entt::scoped_connection m_updateConnection;
|
|
entt::scoped_connection m_connectedConnection;
|
|
entt::scoped_connection m_disconnectedConnection;
|
|
entt::scoped_connection m_connectionErrorConnection;
|
|
entt::scoped_connection m_cellChangeEventConnection;
|
|
entt::scoped_connection m_chatMessageConnection;
|
|
entt::scoped_connection m_playerDialogueConnection;
|
|
entt::scoped_connection m_playerJoinedConnection;
|
|
entt::scoped_connection m_playerLeftConnection;
|
|
entt::scoped_connection m_playerAddedConnection;
|
|
entt::scoped_connection m_playerRemovedConnection;
|
|
entt::scoped_connection m_playerLevelConnection;
|
|
entt::scoped_connection m_cellChangedConnection;
|
|
entt::scoped_connection m_teleportConnection;
|
|
entt::scoped_connection m_playerHealthConnection;
|
|
entt::scoped_connection m_partyJoinedConnection;
|
|
entt::scoped_connection m_partyLeftConnection;
|
|
};
|