mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-08-13 17:03:47 -04:00
1db4e9303e
* Refactor GetCheckFromActor, WIP currently broken * Fixes build errors via forward declarations and emplace vs insert. * Removes some unnecessary code. * Fixes non-windows build errors. * Fixes Deku Scrubs outside of grottos. * Fixes DMC Deku Scrub Grotto Center * Fixes Ruto Blue Warp * Fix issue identifying blue warp rando checks * Move identifyCow to randomizer.cpp * Various updates to vanilla check objects * Identify MQ checks in check object table * Adjustments to how multimap is used and initialized * Convert u16 in check object table to s16 * Fix a few issues with MQ checks * Fix issue with TWO_ACTOR_PARAMS macro * Fixes some scrubs and cows appearing as identical. * Fixes known gossip stone issues (ToT, DC) * Fixes Dampe's Gravedigging tour rcObject * Fix crash on locations tab * Enable master quest dungeons in rando Co-authored-by: Christopher Leggett <chris@leggett.dev>
97 lines
2.9 KiB
C++
97 lines
2.9 KiB
C++
#pragma once
|
|
#include "randomizerTypes.h"
|
|
#include <string>
|
|
#include <map>
|
|
|
|
// Forward Declarations to avoid duplicate definition issues
|
|
enum ActorID : int;
|
|
enum SceneID : int;
|
|
|
|
// Check types based on main settings
|
|
typedef enum {
|
|
RCTYPE_STANDARD, // Base set of rando checks
|
|
RCTYPE_SKULL_TOKEN, // Gold Skulltulas
|
|
RCTYPE_COW, // Cows
|
|
RCTYPE_ADULT_TRADE, // Adult trade quest checks
|
|
RCTYPE_FROG_SONG, // Frog song purple rupee checks
|
|
RCTYPE_MAP_COMPASS, // Maps/Compasses
|
|
RCTYPE_SMALL_KEY, // Small Keys
|
|
RCTYPE_GF_KEY, // Gerudo Fortress Keys
|
|
RCTYPE_BOSS_KEY, // Boss Keys
|
|
RCTYPE_GANON_BOSS_KEY, // Ganon's boss key
|
|
RCTYPE_SHOP, // shops/scrubs
|
|
RCTYPE_CHEST_GAME, //todo replace this once we implement it, just using it to exclude for now
|
|
RCTYPE_LINKS_POCKET, //todo this feels hacky
|
|
RCTYPE_GOSSIP_STONE,
|
|
} RandomizerCheckType;
|
|
|
|
typedef enum {
|
|
RCVORMQ_VANILLA,
|
|
RCVORMQ_MQ,
|
|
RCVORMQ_BOTH
|
|
} RandomizerCheckVanillaOrMQ;
|
|
|
|
typedef enum {
|
|
RCAREA_KOKIRI_FOREST,
|
|
RCAREA_LOST_WOODS,
|
|
RCAREA_SACRED_FOREST_MEADOW,
|
|
RCAREA_HYRULE_FIELD,
|
|
RCAREA_LAKE_HYLIA,
|
|
RCAREA_GERUDO_VALLEY,
|
|
RCAREA_GERUDO_FORTRESS,
|
|
RCAREA_WASTELAND,
|
|
RCAREA_DESERT_COLOSSUS,
|
|
RCAREA_MARKET,
|
|
RCAREA_HYRULE_CASTLE,
|
|
RCAREA_KAKARIKO_VILLAGE,
|
|
RCAREA_GRAVEYARD,
|
|
RCAREA_DEATH_MOUNTAIN_TRAIL,
|
|
RCAREA_GORON_CITY,
|
|
RCAREA_DEATH_MOUNTAIN_CRATER,
|
|
RCAREA_ZORAS_RIVER,
|
|
RCAREA_ZORAS_DOMAIN,
|
|
RCAREA_ZORAS_FOUNTAIN,
|
|
RCAREA_LON_LON_RANCH,
|
|
RCAREA_DEKU_TREE,
|
|
RCAREA_DODONGOS_CAVERN,
|
|
RCAREA_JABU_JABUS_BELLY,
|
|
RCAREA_FOREST_TEMPLE,
|
|
RCAREA_FIRE_TEMPLE,
|
|
RCAREA_WATER_TEMPLE,
|
|
RCAREA_SPIRIT_TEMPLE,
|
|
RCAREA_SHADOW_TEMPLE,
|
|
RCAREA_BOTTOM_OF_THE_WELL,
|
|
RCAREA_ICE_CAVERN,
|
|
RCAREA_GERUDO_TRAINING_GROUND,
|
|
RCAREA_GANONS_CASTLE,
|
|
RCAREA_INVALID
|
|
} RandomizerCheckArea;
|
|
|
|
#define TWO_ACTOR_PARAMS(a, b) (abs(a) << 16) | abs(b)
|
|
|
|
#define RC_OBJECT(rc, rc_v_or_mq, rc_type, rc_area, actor_id, scene_id, actor_params, og_item_id, rc_shortname, rc_spoilername) \
|
|
{ rc, {rc, rc_v_or_mq, rc_type, rc_area, actor_id, scene_id, actor_params, og_item_id, false, rc_shortname, rc_spoilername} }
|
|
|
|
typedef struct {
|
|
RandomizerCheck rc;
|
|
RandomizerCheckVanillaOrMQ vOrMQ;
|
|
RandomizerCheckType rcType;
|
|
RandomizerCheckArea rcArea;
|
|
ActorID actorId;
|
|
SceneID sceneId;
|
|
int32_t actorParams;
|
|
GetItemID ogItemId;
|
|
bool visibleInImgui;
|
|
std::string rcShortName;
|
|
std::string rcSpoilerName;
|
|
} RandomizerCheckObject;
|
|
|
|
namespace RandomizerCheckObjects {
|
|
bool AreaIsDungeon(RandomizerCheckArea area);
|
|
bool AreaIsOverworld(RandomizerCheckArea area);
|
|
std::string GetRCAreaName(RandomizerCheckArea area);
|
|
std::map<RandomizerCheck, RandomizerCheckObject> GetAllRCObjects();
|
|
std::map<RandomizerCheckArea, std::map<RandomizerCheck, RandomizerCheckObject>> GetAllRCObjectsByArea();
|
|
void UpdateImGuiVisibility();
|
|
}
|