diff options
author | Marcus Huderle <huderlem@gmail.com> | 2017-10-09 10:23:23 -0700 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2017-10-09 10:40:04 -0700 |
commit | 72beb410f423cafd35989c0b8dd4c52860cf80f8 (patch) | |
tree | 155aa1e2c39ebd504e095bc8c1dc218aad3acdc4 /src/field/landmark.c | |
parent | a871ce87a74421df64a9ad381d37dc32ff9bdc6d (diff) | |
parent | 3e03d362fae398fa56c4a6e45d7b999772d0803f (diff) |
Merge remote-tracking branch 'upstream/master' into party_menu
Diffstat (limited to 'src/field/landmark.c')
-rw-r--r-- | src/field/landmark.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/field/landmark.c b/src/field/landmark.c new file mode 100644 index 000000000..6a53716bb --- /dev/null +++ b/src/field/landmark.c @@ -0,0 +1,73 @@ +#include "global.h" +#include "landmark.h" +#include "event_data.h" + +#define MAPSEC_NONE 0x58 + +struct Landmark +{ + u8 *name; + u16 flag; +}; + +struct LandmarkList +{ + u8 mapSection; + u8 id; + const struct Landmark **landmarks; +}; + +extern const struct LandmarkList gLandmarkLists[]; + +static const struct Landmark **GetLandmarks(u8 mapSection, u8 id); + +u8 *GetLandmarkName(u8 mapSection, u8 id, u8 count) +{ + const struct Landmark **landmarks = GetLandmarks(mapSection, id); + + if (!landmarks) + return NULL; + + while (1) + { + const struct Landmark *landmark = *landmarks; + + if (landmark->flag == 0xFFFF || FlagGet(landmark->flag) == TRUE) + { + if (count == 0) + break; + else + count--; + } + + landmarks++; + if (!*landmarks) + return NULL; + } + + return (*landmarks)->name; +} + +static const struct Landmark **GetLandmarks(u8 mapSection, u8 id) +{ + u16 i = 0; + + for (; gLandmarkLists[i].mapSection != MAPSEC_NONE; i++) + { + if (gLandmarkLists[i].mapSection > mapSection) + return NULL; + if (gLandmarkLists[i].mapSection == mapSection) + break; + } + + if (gLandmarkLists[i].mapSection == MAPSEC_NONE) + return NULL; + + for (; gLandmarkLists[i].mapSection == mapSection; i++) + { + if (gLandmarkLists[i].id == id) + return gLandmarkLists[i].landmarks; + } + + return NULL; +} |