yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
feature_hint_manager.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_SHELL_FEEDBACK_FEATURE_HINT_MANAGER_H_
2#define YAZE_APP_EDITOR_SHELL_FEEDBACK_FEATURE_HINT_MANAGER_H_
3
4#include <functional>
5#include <string>
6#include <string_view>
7#include <unordered_map>
8#include <utility>
9
11
12namespace yaze {
13namespace editor {
14
15class UserSettings;
16
24namespace FeatureHintId {
25constexpr const char* kZScreamWelcome = "zscream.welcome";
26constexpr const char* kZScreamOverworld = "zscream.overworld";
27constexpr const char* kZScreamDungeon = "zscream.dungeon";
28constexpr const char* kZScreamProjects = "zscream.projects";
29constexpr const char* kZScreamSave = "zscream.save";
30constexpr const char* kZScreamTile16 = "zscream.tile16";
31constexpr const char* kZScreamZso = "zscream.zso";
32constexpr const char* kZScreamScreenMap = "zscream.screen_map";
33} // namespace FeatureHintId
34
36 const char* id = nullptr;
37 const char* message = nullptr;
39 float ttl_seconds = 8.0f;
41 bool offer_guide = false;
42};
43
52 public:
53 void SetUserSettings(UserSettings* settings) { user_settings_ = settings; }
54 void SetToastManager(ToastManager* toast_manager) {
55 toast_manager_ = toast_manager;
56 }
58 void SetGuideCallback(std::function<void()> callback) {
59 guide_callback_ = std::move(callback);
60 }
61
64
66 void RegisterHint(FeatureHintDefinition definition);
67
70 bool MaybeShow(std::string_view id);
71
73 void Dismiss(std::string_view id);
74
75 bool IsDismissed(std::string_view id) const;
76 bool IsEnabled() const;
77 void SetEnabled(bool enabled);
78
80 void ResetDismissed();
81
82 size_t registered_count() const { return catalog_.size(); }
83 size_t dismissed_count() const;
84
85 private:
86 void Persist();
87
90 std::function<void()> guide_callback_;
91 std::unordered_map<std::string, FeatureHintDefinition> catalog_;
92};
93
94} // namespace editor
95} // namespace yaze
96
97#endif // YAZE_APP_EDITOR_SHELL_FEEDBACK_FEATURE_HINT_MANAGER_H_
Show-once feature tips backed by ToastManager + UserSettings.
void Dismiss(std::string_view id)
Mark dismissed without showing (e.g. user opened the guide manually).
void SetGuideCallback(std::function< void()> callback)
Opens Help → Coming from ZScream (or equivalent) from actionable tips.
void SetUserSettings(UserSettings *settings)
bool IsDismissed(std::string_view id) const
void RegisterHint(FeatureHintDefinition definition)
Register or replace a hint definition (tests / future packs).
bool MaybeShow(std::string_view id)
void ResetDismissed()
Clear all dismissed ids and persist. Tips can fire again.
std::unordered_map< std::string, FeatureHintDefinition > catalog_
void RegisterBuiltinHints()
Register built-in ZScream migrant tips. Safe to call more than once.
void SetToastManager(ToastManager *toast_manager)
Manages user preferences and settings persistence.
constexpr const char * kZScreamDungeon
constexpr const char * kZScreamZso
constexpr const char * kZScreamOverworld
constexpr const char * kZScreamWelcome
constexpr const char * kZScreamSave
constexpr const char * kZScreamTile16
constexpr const char * kZScreamScreenMap
constexpr const char * kZScreamProjects
bool offer_guide
When true and a guide callback is set, toast shows an "Open guide" button.