Shipwright/soh/soh/Enhancements/randomizer/randomizer_check_objects.h
Malkierian 533f29bce9
Update to RCObjects (#3193)
* Add `vanillaCheck` to `RandomizerCheckObjects` and update the `RCObjects` table and macro.

Update `ogItemId` for many checks.

* Rename `vanillaCheck` to `vanillaHundoCheck`.

* baguette

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>

* Bean Salesman should be true for `vanillaHundoCheck`

* One more rename to `vanillaCompletion` to avoid possible confusion with 100% speedrun conditions.

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2023-09-16 15:59:03 -05:00

40 lines
1.4 KiB
C++

#pragma once
#include "randomizerTypes.h"
#include <string>
#include <map>
// Forward Declarations to avoid duplicate definition issues
enum ActorID : int;
enum SceneID : int;
#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, vanillaCompletion) \
{ rc, {rc, rc_v_or_mq, rc_type, rc_area, actor_id, scene_id, actor_params, og_item_id, false, rc_shortname, rc_spoilername, vanillaCompletion} }
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;
bool vanillaCompletion;
} 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();
std::map<SceneID, RandomizerCheckArea> GetAllRCAreaBySceneID();
RandomizerCheckArea GetRCAreaBySceneID(SceneID sceneId);
void UpdateImGuiVisibility();
}