blob: 1212f5cfe43e72890b6dde94232229b9ec5a872f (
plain)
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
51
52
|
#include "Rando.h"
#include "2s2h/GameInteractor/GameInteractor.h"
#include "Rando/ActorBehavior/ActorBehavior.h"
#include "Rando/MiscBehavior/MiscBehavior.h"
#include "Rando/MiscBehavior/ClockShuffle.h"
#include "Rando/Spoiler/Spoiler.h"
#include "Rando/CheckTracker/CheckTracker.h"
#include "2s2h/ShipInit.hpp"
#include <ship/window/FileDropMgr.h>
#include <ship/Context.h>
// When a save is loaded, we want to unregister all hooks and re-register them if it's a rando save
void OnSaveLoadHandler(s16 fileNum) {
Rando::MiscBehavior::OnFileLoad();
Rando::ActorBehavior::OnFileLoad();
Rando::CheckTracker::OnFileLoad();
Rando::ClockShuffle::OnFileLoad();
// Re-initalizes enhancements that are effected by the save being rando or not
ShipInit::Init("IS_RANDO");
}
// Entry point for the module, run once on game boot
void Rando::Init() {
Rando::Spoiler::RefreshOptions();
Rando::MiscBehavior::Init();
Rando::ActorBehavior::Init();
Rando::CheckTracker::Init();
Ship::Context::GetRawInstance()->GetFileDropMgr()->RegisterDropHandler(Rando::Spoiler::HandleFileDropped);
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnSaveLoad>(OnSaveLoadHandler);
}
RandoCheckId Rando::FindItemPlacement(RandoItemId randoItemId) {
for (auto& [randoCheckId, check] : Rando::StaticData::Checks) {
if (RANDO_SAVE_CHECKS[randoCheckId].randoItemId == randoItemId) {
return randoCheckId;
}
}
return RC_UNKNOWN;
}
std::vector<RandoCheckId> Rando::FindMultiItemPlacement(RandoItemId randoItemId) {
std::vector<RandoCheckId> itemPlacements;
for (auto& [randocheckId, check] : Rando::StaticData::Checks) {
if (RANDO_SAVE_CHECKS[randocheckId].randoItemId == randoItemId) {
itemPlacements.push_back(randocheckId);
}
}
return itemPlacements;
}
|