From 8c5b719469bc61e33a451d9b3aeb66c7b0a6d68e Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Fri, 19 Jul 2024 03:51:23 -0400 Subject: Added savedata analyzer --- src/tracker_frame.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'src/tracker_frame.cpp') diff --git a/src/tracker_frame.cpp b/src/tracker_frame.cpp index 80fd137..3b6beda 100644 --- a/src/tracker_frame.cpp +++ b/src/tracker_frame.cpp @@ -2,9 +2,12 @@ #include #include +#include #include +#include #include +#include #include #include @@ -23,6 +26,7 @@ enum TrackerFrameIds { ID_SETTINGS = 3, ID_ZOOM_IN = 4, ID_ZOOM_OUT = 5, + ID_OPEN_SAVE_FILE = 6, }; wxDEFINE_EVENT(STATE_RESET, wxCommandEvent); @@ -38,6 +42,7 @@ TrackerFrame::TrackerFrame() wxMenu *menuFile = new wxMenu(); menuFile->Append(ID_CONNECT, "&Connect"); + menuFile->Append(ID_OPEN_SAVE_FILE, "&Open Save Data\tCtrl-O"); menuFile->Append(ID_SETTINGS, "&Settings"); menuFile->Append(wxID_EXIT); @@ -71,6 +76,7 @@ TrackerFrame::TrackerFrame() Bind(wxEVT_MENU, &TrackerFrame::OnZoomIn, this, ID_ZOOM_IN); Bind(wxEVT_MENU, &TrackerFrame::OnZoomOut, this, ID_ZOOM_OUT); Bind(wxEVT_NOTEBOOK_PAGE_CHANGED, &TrackerFrame::OnChangePage, this); + Bind(wxEVT_MENU, &TrackerFrame::OnOpenFile, this, ID_OPEN_SAVE_FILE); Bind(STATE_RESET, &TrackerFrame::OnStateReset, this); Bind(STATE_CHANGED, &TrackerFrame::OnStateChanged, this); Bind(STATUS_CHANGED, &TrackerFrame::OnStatusChanged, this); @@ -204,10 +210,36 @@ void TrackerFrame::OnChangePage(wxBookCtrlEvent &event) { zoom_out_menu_item_->Enable(event.GetSelection() == 1); } +void TrackerFrame::OnOpenFile(wxCommandEvent& event) { + wxFileDialog open_file_dialog( + this, "Open Lingo Save File", + fmt::format("{}\\Godot\\app_userdata\\Lingo\\level1_stable", + wxStandardPaths::Get().GetUserConfigDir().ToStdString()), + AP_GetSaveName(), "Lingo save file (*.save)|*.save", + wxFD_OPEN | wxFD_FILE_MUST_EXIST); + if (open_file_dialog.ShowModal() == wxID_CANCEL) { + return; + } + + std::string savedata_path = open_file_dialog.GetPath().ToStdString(); + + if (panels_panel_ == nullptr) { + panels_panel_ = new TrackerPanel(notebook_); + notebook_->AddPage(panels_panel_, "Panels"); + } + + notebook_->SetSelection(notebook_->FindPage(panels_panel_)); + panels_panel_->SetSavedataPath(savedata_path); +} + void TrackerFrame::OnStateReset(wxCommandEvent& event) { tracker_panel_->UpdateIndicators(); achievements_pane_->UpdateIndicators(); subway_map_->OnConnect(); + if (panels_panel_ != nullptr) { + notebook_->DeletePage(notebook_->FindPage(panels_panel_)); + panels_panel_ = nullptr; + } Refresh(); } @@ -215,6 +247,9 @@ void TrackerFrame::OnStateChanged(wxCommandEvent &event) { tracker_panel_->UpdateIndicators(); achievements_pane_->UpdateIndicators(); subway_map_->UpdateIndicators(); + if (panels_panel_ != nullptr) { + panels_panel_->UpdateIndicators(); + } Refresh(); } -- cgit 1.4.1