From 09d67fbad9df92caf2251d36b4abd7979fd27126 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Tue, 2 May 2023 17:26:46 -0400 Subject: Map + popups reflect checked locations --- area_window.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'area_window.cpp') diff --git a/area_window.cpp b/area_window.cpp index 2f334e4..ca327b8 100644 --- a/area_window.cpp +++ b/area_window.cpp @@ -2,6 +2,7 @@ #include +#include "ap_state.h" #include "game_data.h" AreaWindow::AreaWindow(wxWindow* parent, int area_id, AreaPopup* popup) @@ -15,6 +16,8 @@ AreaWindow::AreaWindow(wxWindow* parent, int area_id, AreaPopup* popup) Bind(wxEVT_LEAVE_WINDOW, &AreaWindow::OnLeaveWindow, this); } +void AreaWindow::UpdateIndicators() { Redraw(); } + void AreaWindow::OnPaint(wxPaintEvent& event) { if (GetSize() != rendered_.GetSize()) { Redraw(); @@ -29,12 +32,27 @@ void AreaWindow::OnEnterWindow(wxMouseEvent& event) { popup_->Show(); } void AreaWindow::OnLeaveWindow(wxMouseEvent& event) { popup_->Hide(); } void AreaWindow::Redraw() { + const wxBrush* brush_color = wxGREY_BRUSH; + + const MapArea& map_area = GetGameData().GetMapArea(area_id_); + int unchecked_sections = 0; + for (int section_id = 0; section_id < map_area.locations.size(); + section_id++) { + if (!GetAPState().HasCheckedGameLocation(area_id_, section_id)) { + unchecked_sections++; + } + } + + if (unchecked_sections > 0) { + brush_color = wxGREEN_BRUSH; + } + int actual_border_size = GetSize().GetWidth() * BORDER_SIZE / EFFECTIVE_SIZE; rendered_ = wxBitmap(GetSize()); wxMemoryDC dc; dc.SelectObject(rendered_); dc.SetPen(*wxThePenList->FindOrCreatePen(*wxBLACK, actual_border_size)); - dc.SetBrush(*wxGREEN_BRUSH); + dc.SetBrush(*brush_color); dc.DrawRectangle({0, 0}, GetSize()); } -- cgit 1.4.1