about summary refs log tree commit diff stats
path: root/src/ap_state.h
blob: f8936e57a75aa52dd2d10db694142909a238f58d (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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-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 { 
#ifndef AP_STATE_H_664A4180
#define AP_STATE_H_664A4180

#include <map>
#include <optional>
#include <set>
#include <string>
#include <tuple>

#include "game_data.h"

class TrackerFrame;

enum DoorShuffleMode { kNO_DOORS = 0, kSIMPLE_DOORS = 1, kCOMPLEX_DOORS = 2 };

enum VictoryCondition {
  kTHE_END = 0,
  kTHE_MASTER = 1,
  kLEVEL_2 = 2,
  kPILGRIMAGE = 3
};

enum LocationChecks {
  kNORMAL_LOCATIONS = 0,
  kREDUCED_LOCATIONS = 1,
  kPANELSANITY = 2
};

enum SunwarpAccess {
  kSUNWARP_ACCESS_NORMAL = 0,
  kSUNWARP_ACCESS_DISABLED = 1,
  kSUNWARP_ACCESS_UNLOCK = 2,
  kSUNWARP_ACCESS_INDIVIDUAL = 3,
  kSUNWARP_ACCESS_PROGRESSIVE = 4
};

struct SunwarpMapping {
  int dots;
  int exit_index;
};

void AP_SetTrackerFrame(TrackerFrame* tracker_frame);

void AP_Connect(std::string server, std::string player, std::string password);

std::string AP_GetSaveName();

bool AP_HasCheckedGameLocation(int location_id);

bool AP_HasCheckedHuntPanel(int location_id);

bool AP_HasItem(int item_id, int quantity = 1);

std::string AP_GetItemName(int item_id);

DoorShuffleMode AP_GetDoorShuffleMode();

bool AP_IsColorShuffle();

bool AP_IsPaintingShuffle();

const std::map<std::string, std::string>& AP_GetPaintingMapping();

bool AP_IsPaintingMappedTo(const std::string& painting_id);

const std::set<std::string>& AP_GetCheckedPaintings();

bool AP_IsPaintingChecked(const std::string& painting_id);

int AP_GetMasteryRequirement();

int AP_GetLevel2Requirement();

bool AP_IsLocationVisible(int classification);

VictoryCondition AP_GetVictoryCondition();

bool AP_HasAchievement(const std::string& achievement_name);

bool AP_HasEarlyColorHallways();

bool AP_IsPilgrimageEnabled();

bool AP_DoesPilgrimageAllowRoofAccess();

bool AP_DoesPilgrimageAllowPaintings();

SunwarpAccess AP_GetSunwarpAccess();

bool AP_IsSunwarpShuffle();

const std::map<int, SunwarpMapping>& AP_GetSunwarpMapping();

bool AP_HasReachedGoal();

std::optional<std::tuple<int, int>> AP_GetPlayerPosition();

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