about summary refs log tree commit diff stats
path: root/data
Commit message (Expand)AuthorAgeFilesLines
...
* [Data] Couple of renamesStar Rauchenberger2025-08-314-2/+4
* Handled cyan doorsStar Rauchenberger2025-08-318-16/+16
* [Data] Small tweaksStar Rauchenberger2025-08-318-22/+34
* [Data] Small tweaksStar Rauchenberger2025-08-307-2/+16
* [Data] Bad logic in the_owl due to missing warpStar Rauchenberger2025-08-305-22/+23
* Changed how door location names are formattedStar Rauchenberger2025-08-30481-472/+385
* [Data] Wondrous gallery painting goes to huge roomStar Rauchenberger2025-08-301-1/+1
* [Data] Made proxies with the same answer as the panel explicitStar Rauchenberger2025-08-3021-36/+42
* [Data] Added logic for Tenacious Color PaintingStar Rauchenberger2025-08-302-1/+9
* [Data] S1 Door is not a location anymoreStar Rauchenberger2025-08-291-3/+1
* [Data] Fix castle stairs (again)Star Rauchenberger2025-08-291-2/+2
* [Data] Replace move_paintings with receiversStar Rauchenberger2025-08-287-22/+51
* Couple of logic errorsStar Rauchenberger2025-08-283-3/+3
* Added requirements to Green Ending doorStar Rauchenberger2025-08-271-2/+27
* Letter requirements in apworldStar Rauchenberger2025-08-271-0/+16
* Prevent assigning ap_id==0Star Rauchenberger2025-08-271-1/+1
* Added control_centerStar Rauchenberger2025-08-2722-14/+837
* Added the_wordsStar Rauchenberger2025-08-268-3/+157
* Added the_wondrousStar Rauchenberger2025-08-269-3/+191
* Added the_wiseStar Rauchenberger2025-08-269-5/+351
* Added the_unkemptStar Rauchenberger2025-08-2617-4/+1023
* Added the_treeStar Rauchenberger2025-08-269-8/+441
* Added the_towerStar Rauchenberger2025-08-269-3/+837
* Added the_three_doorsStar Rauchenberger2025-08-2611-2/+398
* Added the_tenaciousStar Rauchenberger2025-08-2514-7/+201
* Added the_talentedStar Rauchenberger2025-08-258-1/+284
* Added the_symbolicStar Rauchenberger2025-08-2528-1/+1682
* Ok another Lime Pyramid connectionStar Rauchenberger2025-08-242-0/+25
* Connected up Lime PyramidStar Rauchenberger2025-08-242-0/+81
* Fixed typo in Blue Smiley Annex connectionStar Rauchenberger2025-08-241-1/+1
* Added daedalusStar Rauchenberger2025-08-24161-32/+10727
* Fixed a couple of missing connectionsStar Rauchenberger2025-08-213-0/+18
* Added the_unyieldingStar Rauchenberger2025-08-2146-12/+2370
* Converted puzzle symbols to an enumStar Rauchenberger2025-08-20205-950/+950
* Added the_sweetStar Rauchenberger2025-08-207-0/+289
* Added the_sun_templeStar Rauchenberger2025-08-2010-2/+167
* Maps have display names nowStar Rauchenberger2025-08-2043-0/+43
* Added "endings" object typeStar Rauchenberger2025-08-208-7/+36
* Added the_sturdyStar Rauchenberger2025-08-207-2/+206
* Added the_stormyStar Rauchenberger2025-08-1912-0/+238
* Added the_sirenicStar Rauchenberger2025-08-197-1/+231
* Store IDs in a yaml fileStar Rauchenberger2025-08-192-5905/+1691
* Added the_shopStar Rauchenberger2025-08-184-1/+324
* Added the_revitalizedStar Rauchenberger2025-08-1812-2/+257
* Added the_repetitiveStar Rauchenberger2025-08-1822-30/+1513
* Added the_relentlessStar Rauchenberger2025-08-1812-0/+672
* Added the_quietStar Rauchenberger2025-08-186-0/+159
* Validate that nodes in game files are usedStar Rauchenberger2025-08-1822-26/+163
* Validate that node paths aren't used multiple timesStar Rauchenberger2025-08-171-7/+0
* Fill the item pool with "Nothing"sStar Rauchenberger2025-08-171-0/+4
n class="w"> menuBar->Append(menuHelp, "&Help"); SetMenuBar(menuBar); CreateStatusBar(); SetStatusText("Not connected to Archipelago."); Bind(wxEVT_MENU, &TrackerFrame::OnAbout, this, wxID_ABOUT); Bind(wxEVT_MENU, &TrackerFrame::OnExit, this, wxID_EXIT); Bind(wxEVT_MENU, &TrackerFrame::OnConnect, this, ID_CONNECT); Bind(wxEVT_MENU, &TrackerFrame::OnSettings, this, ID_SETTINGS); Bind(wxEVT_MENU, &TrackerFrame::OnCheckForUpdates, this, ID_CHECK_FOR_UPDATES); Bind(STATE_CHANGED, &TrackerFrame::OnStateChanged, this); Bind(STATUS_CHANGED, &TrackerFrame::OnStatusChanged, this); wxChoicebook *choicebook = new wxChoicebook(this, wxID_ANY); achievements_pane_ = new AchievementsPane(this); choicebook->AddPage(achievements_pane_, "Achievements"); tracker_panel_ = new TrackerPanel(this); wxBoxSizer *top_sizer = new wxBoxSizer(wxHORIZONTAL); top_sizer->Add(choicebook, wxSizerFlags().Expand().Proportion(1)); top_sizer->Add(tracker_panel_, wxSizerFlags().Expand().Proportion(3)); SetSizerAndFit(top_sizer); SetSize(1280, 728); if (!GetTrackerConfig().asked_to_check_for_updates) { GetTrackerConfig().asked_to_check_for_updates = true; if (wxMessageBox( "Check for updates automatically when the tracker is opened?", "Lingo AP Tracker", wxYES_NO) == wxYES) { GetTrackerConfig().should_check_for_updates = true; } else { GetTrackerConfig().should_check_for_updates = false; } GetTrackerConfig().Save(); } if (GetTrackerConfig().should_check_for_updates) { CheckForUpdates(/*manual=*/false); } } void TrackerFrame::SetStatusMessage(std::string message) { wxCommandEvent *event = new wxCommandEvent(STATUS_CHANGED); event->SetString(message.c_str()); QueueEvent(event); } void TrackerFrame::UpdateIndicators() { QueueEvent(new wxCommandEvent(STATE_CHANGED)); } void TrackerFrame::OnAbout(wxCommandEvent &event) { std::ostringstream message_text; message_text << "Lingo Archipelago Tracker " << kTrackerVersion << " by hatkirby"; wxMessageBox(message_text.str(), "About lingo-ap-tracker", wxOK | wxICON_INFORMATION); } void TrackerFrame::OnExit(wxCommandEvent &event) { Close(true); } void TrackerFrame::OnConnect(wxCommandEvent &event) { ConnectionDialog dlg; if (dlg.ShowModal() == wxID_OK) { GetTrackerConfig().connection_details.ap_server = dlg.GetServerValue(); GetTrackerConfig().connection_details.ap_player = dlg.GetPlayerValue(); GetTrackerConfig().connection_details.ap_password = dlg.GetPasswordValue(); std::deque<ConnectionDetails> new_history; new_history.push_back(GetTrackerConfig().connection_details); for (const ConnectionDetails& details : GetTrackerConfig().connection_history) { if (details != GetTrackerConfig().connection_details) { new_history.push_back(details); } } while (new_history.size() > 5) { new_history.pop_back(); } GetTrackerConfig().connection_history = std::move(new_history); GetTrackerConfig().Save(); AP_Connect(dlg.GetServerValue(), dlg.GetPlayerValue(), dlg.GetPasswordValue()); } } void TrackerFrame::OnSettings(wxCommandEvent &event) { SettingsDialog dlg; if (dlg.ShowModal() == wxID_OK) { GetTrackerConfig().should_check_for_updates = dlg.GetShouldCheckForUpdates(); GetTrackerConfig().hybrid_areas = dlg.GetHybridAreas(); GetTrackerConfig().show_hunt_panels = dlg.GetShowHuntPanels(); GetTrackerConfig().Save(); UpdateIndicators(); } } void TrackerFrame::OnCheckForUpdates(wxCommandEvent &event) { CheckForUpdates(/*manual=*/true); } void TrackerFrame::OnStateChanged(wxCommandEvent &event) { tracker_panel_->UpdateIndicators(); achievements_pane_->UpdateIndicators(); Refresh(); } void TrackerFrame::OnStatusChanged(wxCommandEvent &event) { SetStatusText(event.GetString()); } void TrackerFrame::CheckForUpdates(bool manual) { wxWebRequest request = wxWebSession::GetDefault().CreateRequest( this, "https://code.fourisland.com/lingo-ap-tracker/plain/VERSION"); if (!request.IsOk()) { if (manual) { wxMessageBox("Could not check for updates.", "Error", wxOK | wxICON_ERROR); } else { SetStatusText("Could not check for updates."); } return; } Bind(wxEVT_WEBREQUEST_STATE, [this, manual](wxWebRequestEvent &evt) { if (evt.GetState() == wxWebRequest::State_Completed) { std::string response = evt.GetResponse().AsString().ToStdString(); Version latest_version(response); if (kTrackerVersion < latest_version) { std::ostringstream message_text; message_text << "There is a newer version of Lingo AP Tracker " "available. You have " << kTrackerVersion << ", and the latest version is " << latest_version << ". Would you like to update?"; if (wxMessageBox(message_text.str(), "Update available", wxYES_NO) == wxYES) { wxLaunchDefaultBrowser( "https://code.fourisland.com/lingo-ap-tracker/about/" "CHANGELOG.md"); } } else if (manual) { wxMessageBox("Lingo AP Tracker is up to date!", "Lingo AP Tracker", wxOK); } } else if (evt.GetState() == wxWebRequest::State_Failed) { if (manual) { wxMessageBox("Could not check for updates.", "Error", wxOK | wxICON_ERROR); } else { SetStatusText("Could not check for updates."); } } }); request.Start(); }