Polyphase Game Engine
Loading...
Searching...
No Matches
ToolTipManager.h
Go to the documentation of this file.
1#pragma once
2
3#include "EngineTypes.h"
4#include "Maths.h"
5#include "SmartPointer.h"
6
7#include <string>
8#include <unordered_map>
9
10class Widget;
11class ToolTipWidget;
12
14{
15public:
16
17 static void Create();
18 static void Destroy();
19 static ToolTipManager* Get();
20
21 void Initialize();
22 void Shutdown();
23 void Tick(float deltaTime);
24
25 // Configuration
26 void SetShowDelay(float seconds);
27 float GetShowDelay() const;
28 void SetHideDelay(float seconds);
29 float GetHideDelay() const;
30 void SetCursorOffset(glm::vec2 offset);
31 glm::vec2 GetCursorOffset() const;
32 void SetEnabled(bool enabled);
33 bool IsEnabled() const;
34
35 // Tooltip widget access
37
38 // Template registration
39 void RegisterTemplate(const std::string& name, ToolTipWidget* tooltipWidget);
40 void UnregisterTemplate(const std::string& name);
41 void UnregisterTemplate(ToolTipWidget* tooltipWidget);
42 ToolTipWidget* GetTemplate(const std::string& name);
43 bool HasTemplate(const std::string& name) const;
44
45 // Manual control
46 void ShowTooltip(Widget* forWidget);
47 void HideTooltip();
48
49 // Current state
50 Widget* GetHoveredWidget() const;
51 bool IsTooltipVisible() const;
52
53 // Lua callback registration
54 void SetOnShowCallback(const std::string& funcName);
55 void SetOnShowCallbackRef(int luaRef);
57 void SetOnHideCallback(const std::string& funcName);
58 void SetOnHideCallbackRef(int luaRef);
60
61private:
62
63 static ToolTipManager* sInstance;
64
67
68 void UpdateHoverTracking();
69 void PositionTooltip();
70 void FireShowCallback(Widget* widget);
71 void FireHideCallback(Widget* widget);
72 Widget* FindHoveredWidgetWithTooltip();
73 void TraverseWidgetsForHover(Widget* widget, Widget*& outHovered);
74
75 // State
76 SharedPtr<ToolTipWidget> mDefaultToolTipWidget;
77 ToolTipWidget* mActiveTooltipWidget = nullptr; // Currently shown tooltip (default or template)
78 Widget* mHoveredWidget = nullptr;
79 Widget* mActiveWidget = nullptr; // Widget whose tooltip is currently shown
80 float mHoverTime = 0.0f;
81 bool mTooltipVisible = false;
82 bool mEnabled = true;
83
84 // Configuration
85 float mShowDelay = 0.5f;
86 float mHideDelay = 0.0f;
87 glm::vec2 mCursorOffset = glm::vec2(16.0f, 16.0f);
88
89 // Callbacks
90 std::string mOnShowFuncName;
91 int mOnShowLuaRef = -1;
92 std::string mOnHideFuncName;
93 int mOnHideLuaRef = -1;
94
95 // Registered tooltip templates (name -> widget)
96 std::unordered_map<std::string, ToolTipWidget*> mTemplates;
97};
Definition SmartPointer.h:33
Definition ToolTipManager.h:14
static void Create()
Definition ToolTipManager.cpp:77
void SetCursorOffset(glm::vec2 offset)
Definition ToolTipManager.cpp:435
ToolTipWidget * GetTemplate(const std::string &name)
Definition ToolTipManager.cpp:523
void Tick(float deltaTime)
Definition ToolTipManager.cpp:149
bool IsEnabled() const
Definition ToolTipManager.cpp:454
void ClearOnShowCallback()
Definition ToolTipManager.cpp:561
void UnregisterTemplate(const std::string &name)
Definition ToolTipManager.cpp:487
static void Destroy()
Definition ToolTipManager.cpp:83
bool IsTooltipVisible() const
Definition ToolTipManager.cpp:543
void SetShowDelay(float seconds)
Definition ToolTipManager.cpp:415
ToolTipWidget * GetToolTipWidget()
Definition ToolTipManager.cpp:459
void HideTooltip()
Definition ToolTipManager.cpp:360
bool HasTemplate(const std::string &name) const
Definition ToolTipManager.cpp:533
void SetOnShowCallback(const std::string &funcName)
Definition ToolTipManager.cpp:549
static ToolTipManager * Get()
Definition ToolTipManager.cpp:92
Widget * GetHoveredWidget() const
Definition ToolTipManager.cpp:538
void SetHideDelay(float seconds)
Definition ToolTipManager.cpp:425
float GetHideDelay() const
Definition ToolTipManager.cpp:430
void Initialize()
Definition ToolTipManager.cpp:106
void Shutdown()
Definition ToolTipManager.cpp:111
void SetOnShowCallbackRef(int luaRef)
Definition ToolTipManager.cpp:555
void SetOnHideCallbackRef(int luaRef)
Definition ToolTipManager.cpp:583
float GetShowDelay() const
Definition ToolTipManager.cpp:420
void RegisterTemplate(const std::string &name, ToolTipWidget *tooltipWidget)
Definition ToolTipManager.cpp:471
void SetEnabled(bool enabled)
Definition ToolTipManager.cpp:445
void ClearOnHideCallback()
Definition ToolTipManager.cpp:589
void ShowTooltip(Widget *forWidget)
Definition ToolTipManager.cpp:309
glm::vec2 GetCursorOffset() const
Definition ToolTipManager.cpp:440
void SetOnHideCallback(const std::string &funcName)
Definition ToolTipManager.cpp:577
Definition ToolTipWidget.h:11
Definition Widget.h:53