about summary refs log tree commit diff stats
path: root/src/tracker_state.h
Commit message (Collapse)AuthorAgeFilesLines
* Added postgame detectionStar Rauchenberger2025-03-081-0/+6
|
* Pilgrim Antechamber sunwarp now shows if pilgrimage is doableStar Rauchenberger2024-07-241-0/+2
|
* Proper painting reachability detectionStar Rauchenberger2024-06-061-0/+2
|
* Added door popups that report requirementsStar Rauchenberger2024-05-161-0/+7
|
* Started making subway mapStar Rauchenberger2024-05-121-0/+2
|
* Use hardcoded AP ids nowStar Rauchenberger2023-09-171-1/+1
|
* Refactored away singletonsStar Rauchenberger2023-05-051-13/+2
| | | | (Except TrackerConfig, for now at least)
* Organised repoStar Rauchenberger2023-05-051-0/+19
ding-right: 5px; } .highlight .hll { background-color: #ffffcc } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
#ifndef TRACKER_FRAME_H_86BD8DFB
#define TRACKER_FRAME_H_86BD8DFB

#include <wx/wxprec.h>

#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif

#include <memory>

#include "ap_state.h"
#include "icons.h"
#include "updater.h"

class AchievementsPane;
class ItemsPane;
class LogDialog;
class OptionsPane;
class PaintingsPane;
class SubwayMap;
class TrackerPanel;
class wxBookCtrlEvent;
class wxNotebook;
class wxSplitterEvent;
class wxSplitterWindow;

class ApConnectEvent : public wxEvent {
 public:
  ApConnectEvent(wxEventType eventType, int winid, std::string server,
                 std::string user, std::string pass)
      : wxEvent(winid, eventType),
        ap_server_(std::move(server)),
        ap_user_(std::move(user)),
        ap_pass_(std::move(pass)) {}

  const std::string &GetServer() const { return ap_server_; }

  const std::string &GetUser() const { return ap_user_; }

  const std::string &GetPass() const { return ap_pass_; }

  virtual wxEvent *Clone() const { return new ApConnectEvent(*this); }

 private:
  std::string ap_server_;
  std::string ap_user_;
  std::string ap_pass_;
};

struct StateUpdate {
  std::vector<ItemState> items;
  bool progression_items = false;
  std::vector<std::string> paintings;
  bool achievements = false;
  bool open_panels_tab = false;
  bool cleared_locations = false;
  bool hunt_panels = false;
  bool player_position = false;
  bool changed_settings = 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, StateChangedEvent);
wxDECLARE_EVENT(STATUS_CHANGED, wxCommandEvent);
wxDECLARE_EVENT(CONNECT_TO_AP, ApConnectEvent);

class TrackerFrame : public wxFrame {
 public:
  TrackerFrame();

  void ConnectToAp(std::string server, std::string user, std::string pass);
  void UpdateStatusMessage();

  void ResetIndicators();
  void UpdateIndicators(StateUpdate state);

 private:
  void OnExit(wxCommandEvent &event);
  void OnAbout(wxCommandEvent &event);
  void OnApConnect(wxCommandEvent &event);
  void OnIpcConnect(wxCommandEvent &event);
  void OnSettings(wxCommandEvent &event);
  void OnCheckForUpdates(wxCommandEvent &event);
  void OnZoomIn(wxCommandEvent &event);
  void OnZoomOut(wxCommandEvent &event);
  void OnOpenLogWindow(wxCommandEvent &event);
  void OnCloseLogWindow(wxCloseEvent &event);
  void OnChangePage(wxBookCtrlEvent &event);
  void OnOpenFile(wxCommandEvent &event);
  void OnSashPositionChanged(wxSplitterEvent &event);

  void OnStateReset(wxCommandEvent &event);
  void OnStateChanged(StateChangedEvent &event);
  void OnStatusChanged(wxCommandEvent &event);
  void OnConnectToAp(ApConnectEvent &event);
  
  std::unique_ptr<Updater> updater_;

  wxSplitterWindow *splitter_window_;
  wxNotebook *notebook_;
  TrackerPanel *tracker_panel_;
  AchievementsPane *achievements_pane_;
  ItemsPane *items_pane_;
  OptionsPane *options_pane_;
  PaintingsPane *paintings_pane_;
  SubwayMap *subway_map_;
  TrackerPanel *panels_panel_ = nullptr;
  LogDialog *log_dialog_ = nullptr;

  wxMenuItem *zoom_in_menu_item_;
  wxMenuItem *zoom_out_menu_item_;

  IconCache icons_;
};

#endif /* end of include guard: TRACKER_FRAME_H_86BD8DFB */