about summary refs log tree commit diff stats
path: root/src/tracker_frame.h
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2025-03-08 10:52:51 -0500
committerStar Rauchenberger <fefferburbia@gmail.com>2025-03-08 10:52:51 -0500
commitf8f55976533ac3b77bb8d31697ba2f1e54a994c1 (patch)
tree59b4cd49e64af291b2fd0b22711174bfd79149fa /src/tracker_frame.h
parent5fe5bec92e86a4a94cddefec51fabc22212b7364 (diff)
downloadlingo-ap-tracker-f8f55976533ac3b77bb8d31697ba2f1e54a994c1.tar.gz
lingo-ap-tracker-f8f55976533ac3b77bb8d31697ba2f1e54a994c1.tar.bz2
lingo-ap-tracker-f8f55976533ac3b77bb8d31697ba2f1e54a994c1.zip
Made indicator updates more fine-grained
Diffstat (limited to 'src/tracker_frame.h')
-rw-r--r--src/tracker_frame.h37
1 files changed, 26 insertions, 11 deletions
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 @@
9 9
10#include <memory> 10#include <memory>
11 11
12#include "ap_state.h"
12#include "icons.h" 13#include "icons.h"
13#include "updater.h" 14#include "updater.h"
14 15
@@ -44,17 +45,33 @@ class ApConnectEvent : public wxEvent {
44 std::string ap_pass_; 45 std::string ap_pass_;
45}; 46};
46 47
48struct StateUpdate {
49 std::vector<ItemState> items;
50 std::vector<std::string> paintings;
51 bool achievements = false;
52 bool open_panels_tab = false;
53 bool cleared_locations = false;
54 bool player_position = false;
55};
56
57class StateChangedEvent : public wxEvent {
58 public:
59 StateChangedEvent(wxEventType eventType, int winid, StateUpdate state)
60 : wxEvent(winid, eventType), state_(std::move(state)) {}
61
62 const StateUpdate &GetState() const { return state_; }
63
64 virtual wxEvent *Clone() const { return new StateChangedEvent(*this); }
65
66 private:
67 StateUpdate state_;
68};
69
47wxDECLARE_EVENT(STATE_RESET, wxCommandEvent); 70wxDECLARE_EVENT(STATE_RESET, wxCommandEvent);
48wxDECLARE_EVENT(STATE_CHANGED, wxCommandEvent); 71wxDECLARE_EVENT(STATE_CHANGED, StateChangedEvent);
49wxDECLARE_EVENT(STATUS_CHANGED, wxCommandEvent); 72wxDECLARE_EVENT(STATUS_CHANGED, wxCommandEvent);
50wxDECLARE_EVENT(REDRAW_POSITION, wxCommandEvent);
51wxDECLARE_EVENT(CONNECT_TO_AP, ApConnectEvent); 73wxDECLARE_EVENT(CONNECT_TO_AP, ApConnectEvent);
52 74
53enum UpdateIndicatorsMode {
54 kUPDATE_ALL_INDICATORS = 0,
55 kUPDATE_ONLY_PANELS = 1,
56};
57
58class TrackerFrame : public wxFrame { 75class TrackerFrame : public wxFrame {
59 public: 76 public:
60 TrackerFrame(); 77 TrackerFrame();
@@ -63,8 +80,7 @@ class TrackerFrame : public wxFrame {
63 void UpdateStatusMessage(); 80 void UpdateStatusMessage();
64 81
65 void ResetIndicators(); 82 void ResetIndicators();
66 void UpdateIndicators(UpdateIndicatorsMode mode = kUPDATE_ALL_INDICATORS); 83 void UpdateIndicators(StateUpdate state);
67 void RedrawPosition();
68 84
69 private: 85 private:
70 void OnExit(wxCommandEvent &event); 86 void OnExit(wxCommandEvent &event);
@@ -80,9 +96,8 @@ class TrackerFrame : public wxFrame {
80 void OnSashPositionChanged(wxSplitterEvent &event); 96 void OnSashPositionChanged(wxSplitterEvent &event);
81 97
82 void OnStateReset(wxCommandEvent &event); 98 void OnStateReset(wxCommandEvent &event);
83 void OnStateChanged(wxCommandEvent &event); 99 void OnStateChanged(StateChangedEvent &event);
84 void OnStatusChanged(wxCommandEvent &event); 100 void OnStatusChanged(wxCommandEvent &event);
85 void OnRedrawPosition(wxCommandEvent &event);
86 void OnConnectToAp(ApConnectEvent &event); 101 void OnConnectToAp(ApConnectEvent &event);
87 102
88 std::unique_ptr<Updater> updater_; 103 std::unique_ptr<Updater> updater_;