about summary refs log tree commit diff stats
path: root/src/achievements_pane.cpp
blob: 8ec3727d4e0f33762753b9f3e8192ece9c832f2b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "achievements_pane.h"

#include "ap_state.h"
#include "game_data.h"

AchievementsPane::AchievementsPane(wxWindow* parent)
    : wxListView(parent, wxID_ANY) {
  AppendColumn("Achievement");

  for (int panel_id : GD_GetAchievementPanels()) {
    achievement_names_.push_back(GD_GetPanel(panel_id).achievement_name);
  }

  std::sort(std::begin(achievement_names_), std::end(achievement_names_));

  for (int i = 0; i < achievement_names_.size(); i++) {
    InsertItem(i, achievement_names_.at(i));
  }

  SetColumnWidth(0, wxLIST_AUTOSIZE);

  UpdateIndicators();
}

void AchievementsPane::UpdateIndicators() {
  for (int i = 0; i < achievement_names_.size(); i++) {
    if (AP_HasAchievement(achievement_names_.at(i))) {
      SetItemTextColour(i, *wxBLACK);
    } else {
      SetItemTextColour(i, *wxRED);
    }
  }
}
span>4; enum class EntranceType { kNormal, kPainting, kSunwarp, kWarp, kPilgrimage, kCrossroadsRoofAccess, }; enum class DoorType { kNormal, kSunwarp, kSunPainting, }; struct Panel { int id; int room; std::string name; std::vector<LingoColor> colors; std::vector<int> required_rooms; std::vector<int> required_doors; std::vector<int> required_panels; bool check = false; bool exclude_reduce = false; bool achievement = false; std::string achievement_name; bool non_counting = false; int ap_location_id = -1; bool hunt = false; }; struct ProgressiveRequirement { std::string item_name; int ap_item_id = -1; int quantity = 0; }; struct Door { int id; int room; std::string name; std::string location_name; std::string item_name; std::string group_name; bool skip_location = false; bool skip_item = false; bool is_event = false; std::vector<int> panels; bool exclude_reduce = true; std::vector<ProgressiveRequirement> progressives; int ap_item_id = -1; int group_ap_item_id = -1; int ap_location_id = -1; DoorType type = DoorType::kNormal; }; struct Exit { int destination_room; std::optional<int> door; EntranceType type = EntranceType::kNormal; }; struct PaintingExit { std::string id; std::optional<int> door; }; struct Room { std::string name; std::vector<Exit> exits; std::vector<PaintingExit> paintings; std::vector<int> sunwarps; std::vector<int> panels; }; struct Location { std::string name; std::string ap_location_name; int ap_location_id = -1; int room; std::vector<int> panels; int classification = 0; bool hunt = false; }; struct MapArea { int id; std::string name; std::vector<Location> locations; int map_x; int map_y; int classification = 0; bool hunt = false; }; enum class SubwaySunwarpType { kEnter, kExit, kFinal }; struct SubwaySunwarp { int dots; SubwaySunwarpType type; }; struct SubwayItem { int id; int x; int y; std::optional<int> door; std::vector<std::string> paintings; std::vector<std::string> tags; std::optional<SubwaySunwarp> sunwarp; std::optional<std::string> special; }; const std::vector<MapArea>& GD_GetMapAreas(); const MapArea& GD_GetMapArea(int id); int GD_GetRoomByName(const std::string& name); const Room& GD_GetRoom(int room_id); const std::vector<Door>& GD_GetDoors(); const Door& GD_GetDoor(int door_id); int GD_GetDoorByName(const std::string& name); const Panel& GD_GetPanel(int panel_id); int GD_GetRoomForPainting(const std::string& painting_id); const std::vector<int>& GD_GetAchievementPanels(); int GD_GetItemIdForColor(LingoColor color); const std::vector<int>& GD_GetSunwarpDoors(); int GD_GetRoomForSunwarp(int index); const std::vector<SubwayItem>& GD_GetSubwayItems(); const SubwayItem& GD_GetSubwayItem(int id); #endif /* end of include guard: GAME_DATA_H_9C42AC51 */