From f8f55976533ac3b77bb8d31697ba2f1e54a994c1 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sat, 8 Mar 2025 10:52:51 -0500 Subject: Made indicator updates more fine-grained --- src/tracker_frame.h | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) (limited to 'src/tracker_frame.h') diff --git a/src/tracker_frame.h b/src/tracker_frame.h index 4f1f464..ff18e49 100644 --- a/src/tracker_frame.h +++ b/src/tracker_frame.h @@ -9,6 +9,7 @@ #include +#include "ap_state.h" #include "icons.h" #include "updater.h" @@ -44,17 +45,33 @@ class ApConnectEvent : public wxEvent { std::string ap_pass_; }; +struct StateUpdate { + std::vector items; + std::vector paintings; + bool achievements = false; + bool open_panels_tab = false; + bool cleared_locations = false; + bool player_position = false; +}; + +class StateChangedEvent : public wxEvent { + public: + StateChangedEvent(wxEventType eventType, int winid, StateUpdate state) + : wxEvent(winid, eventType), state_(std::move(state)) {} + + const StateUpdate &GetState() const { return state_; } + + virtual wxEvent *Clone() const { return new StateChangedEvent(*this); } + + private: + StateUpdate state_; +}; + wxDECLARE_EVENT(STATE_RESET, wxCommandEvent); -wxDECLARE_EVENT(STATE_CHANGED, wxCommandEvent); +wxDECLARE_EVENT(STATE_CHANGED, StateChangedEvent); wxDECLARE_EVENT(STATUS_CHANGED, wxCommandEvent); -wxDECLARE_EVENT(REDRAW_POSITION, wxCommandEvent); wxDECLARE_EVENT(CONNECT_TO_AP, ApConnectEvent); -enum UpdateIndicatorsMode { - kUPDATE_ALL_INDICATORS = 0, - kUPDATE_ONLY_PANELS = 1, -}; - class TrackerFrame : public wxFrame { public: TrackerFrame(); @@ -63,8 +80,7 @@ class TrackerFrame : public wxFrame { void UpdateStatusMessage(); void ResetIndicators(); - void UpdateIndicators(UpdateIndicatorsMode mode = kUPDATE_ALL_INDICATORS); - void RedrawPosition(); + void UpdateIndicators(StateUpdate state); private: void OnExit(wxCommandEvent &event); @@ -80,9 +96,8 @@ class TrackerFrame : public wxFrame { void OnSashPositionChanged(wxSplitterEvent &event); void OnStateReset(wxCommandEvent &event); - void OnStateChanged(wxCommandEvent &event); + void OnStateChanged(StateChangedEvent &event); void OnStatusChanged(wxCommandEvent &event); - void OnRedrawPosition(wxCommandEvent &event); void OnConnectToAp(ApConnectEvent &event); std::unique_ptr updater_; -- cgit 1.4.1