Skip to content

Commit 31ce065

Browse files
authored
Merge pull request #141 from Caladius/develop-rando-entrance-tracker
[Rando] Implement Entrance Tracker plus more cleanup
2 parents 961250e + b4ae604 commit 31ce065

19 files changed

Lines changed: 333 additions & 80 deletions

include/macro_presets.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ struct MacroPreset {
1111
/*0x06*/ s16 param;
1212
};
1313

14-
struct MacroPreset MacroObjectPresets[] = {
14+
static struct MacroPreset MacroObjectPresets[] = {
1515
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
1616
{bhvOneCoin, MODEL_YELLOW_COIN, 0},
1717
{bhvMovingBlueCoin, MODEL_BLUE_COIN, 0},

src/game/save_file.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ struct RandoSaveCheck {
2929
struct RandoSaveEntrance {
3030
RandoEntranceId randoEntranceId;
3131
int16_t destinationId;
32+
bool found;
3233
};
3334

3435
struct RandoSaveOption {

src/port/Rando/CheckTracker/CheckTracker.cpp

Lines changed: 30 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -12,64 +12,35 @@ namespace GhostshipGui {
1212
extern std::shared_ptr<Rando::CheckTracker::CheckTrackerWindow> mRandoCheckTrackerWindow;
1313
}
1414

15-
#define WIDGET_COLOR UIWidgets::Colors(CVarGetInteger("gSettings.Menu.Theme", 5))
1615
#define DEFAULT_COLLECTED_COLOR Color_RGBA8(100, 255, 100, 255)
1716
#define DEFAULT_SKIPPED_COLOR Color_RGBA8(255, 100, 255, 255)
1817
#define DEFAULT_ITEM_COLOR Color_RGBA8(79, 0, 221, 255)
1918

2019
#define CVAR_NAME_SHOW_CHECK_TRACKER "gWindows.CheckTracker"
21-
#define CVAR_NAME_TRACKER_OPACITY "gRando.CheckTracker.Opacity"
22-
#define CVAR_NAME_TRACKER_SCALE "gRando.CheckTracker.Scale"
20+
#define CVAR_NAME_CHECK_TRACKER_OPACITY "gRando.CheckTracker.Opacity"
21+
#define CVAR_NAME_CHECK_TRACKER_SCALE "gRando.CheckTracker.Scale"
2322
#define CVAR_NAME_SHOW_CURRENT_LEVEL "gRando.CheckTracker.ShowCurrentLevel"
2423
#define CVAR_NAME_COLLECTED_COLOR "gRando.CheckTracker.CollectedColor"
2524
#define CVAR_NAME_SKIPPED_COLOR "gRando.CheckTracker.SkippedColor"
2625
#define CVAR_NAME_ITEM_COLOR "gRando.CheckTracker.ItemColor"
2726

2827
#define CVAR_SHOW_CHECK_TRACKER CVarGetInteger(CVAR_NAME_SHOW_CHECK_TRACKER, 0)
29-
#define CVAR_TRACKER_OPACITY CVarGetFloat(CVAR_NAME_TRACKER_OPACITY, 0.5f)
30-
#define CVAR_TRACKER_SCALE CVarGetFloat(CVAR_NAME_TRACKER_SCALE, 1.0f)
28+
#define CVAR_CHECK_TRACKER_OPACITY CVarGetFloat(CVAR_NAME_CHECK_TRACKER_OPACITY, 0.5f)
29+
#define CVAR_CHECK_TRACKER_SCALE CVarGetFloat(CVAR_NAME_CHECK_TRACKER_SCALE, 1.0f)
3130
#define CVAR_SHOW_CURRENT_LEVEL CVarGetInteger(CVAR_NAME_SHOW_CURRENT_LEVEL, 0)
3231
#define CVAR_COLLECTED_COLOR CVarGetColor(CVAR_NAME_COLLECTED_COLOR ".Value", DEFAULT_COLLECTED_COLOR)
3332
#define CVAR_SKIPPED_COLOR CVarGetColor(CVAR_NAME_SKIPPED_COLOR ".Value", DEFAULT_SKIPPED_COLOR)
3433
#define CVAR_ITEM_COLOR CVarGetColor(CVAR_NAME_ITEM_COLOR ".Value", DEFAULT_ITEM_COLOR)
3534

36-
std::vector<std::tuple<const char*, Color_RGBA8, const char*>> defaultColorList = {
35+
std::vector<std::tuple<const char*, Color_RGBA8, const char*>> defaultCheckColorList = {
3736
{ CVAR_NAME_COLLECTED_COLOR, DEFAULT_COLLECTED_COLOR, "Check Obtained" },
3837
{ CVAR_NAME_SKIPPED_COLOR, DEFAULT_SKIPPED_COLOR, "Check Skipped" },
3938
{ CVAR_NAME_ITEM_COLOR, DEFAULT_ITEM_COLOR, "Obtained Item" },
4039
};
4140

42-
std::map<int16_t, std::string> levelIdList = {
43-
{ LEVEL_BOB, "Bob Omb Battlefield" },
44-
{ LEVEL_WF, "Whomp's Fortress" },
45-
{ LEVEL_JRB, "Jolly Rodger's Bay" },
46-
{ LEVEL_CASTLE, "Castle Interior" },
47-
{ LEVEL_CCM, "Cool Cool Mountain" },
48-
{ LEVEL_BBH, "Big Boo's Haunt" },
49-
{ LEVEL_HMC, "Hazy Maze Cave" },
50-
{ LEVEL_LLL, "Lethal Lava Land" },
51-
{ LEVEL_SSL, "Shifting Sand Land" },
52-
{ LEVEL_DDD, "Dire Dire Docks" },
53-
{ LEVEL_SL, "Snowman's Land" },
54-
{ LEVEL_WDW, "Wet Dry World" },
55-
{ LEVEL_TTM, "Tall Tall Mountain" },
56-
{ LEVEL_THI, "Tiny Huge Island" },
57-
{ LEVEL_TTC, "Tick Tock Clock" },
58-
{ LEVEL_RR, "Rainbow Ride" },
59-
{ LEVEL_BITDW, "Bowser in the Dark World" },
60-
{ LEVEL_BITFS, "Bowser in the Fire Sea" },
61-
{ LEVEL_BITS, "Bowser in the Sky" },
62-
{ LEVEL_PSS, "Princess's Secret Slide" },
63-
{ LEVEL_COTMC, "Cavern of the Metal Cap" },
64-
{ LEVEL_TOTWC, "Tower of the Wing Cap" },
65-
{ LEVEL_VCUTM, "Vanish Cap Under the Moat" },
66-
{ LEVEL_WMOTR, "Winged Mario over the Rainbow" },
67-
{ LEVEL_SA, "Secret Aquarium" },
68-
};
69-
70-
bool trackerPopoutState = false;
71-
ImVec4 trackerBG = ImVec4{ 0, 0, 0, 0.5f };
72-
float trackerScale = 1.0f;
41+
bool checkTrackerPopoutState = false;
42+
ImVec4 checkTrackerBG = ImVec4{ 0, 0, 0, 0.5f };
43+
float checkTrackerScale = 1.0f;
7344

7445
bool expandState = true;
7546

@@ -89,7 +60,7 @@ void DrawCheckTrackerList() {
8960
if (ImGui::CollapsingHeader(name.c_str(), ImGuiTreeNodeFlags_DefaultOpen)) {
9061
ImGui::Indent(20.0f);
9162
if (ImGui::BeginTable("CheckList", 2)) {
92-
ImGui::TableSetupColumn("Type", ImGuiTableColumnFlags_WidthFixed, (16.0f * trackerScale));
63+
ImGui::TableSetupColumn("Type", ImGuiTableColumnFlags_WidthFixed, (16.0f * checkTrackerScale));
9364
ImGui::TableSetupColumn("Check");
9465

9566
ImGui::TableNextColumn();
@@ -114,7 +85,7 @@ void DrawCheckTrackerList() {
11485
Ship::Context::GetInstance()->GetWindow()->GetGui()->GetTextureByName(texture);
11586

11687
ImGui::BeginGroup();
117-
ImGui::Image(textureId, ImVec2(16.0f * trackerScale, 16.0f * trackerScale));
88+
ImGui::Image(textureId, ImVec2(16.0f * checkTrackerScale, 16.0f * checkTrackerScale));
11889
ImGui::TableNextColumn();
11990
ImGui::TextColored(checkTextColor, Rando::StaticData::Checks[entry.randoCheckId].name);
12091
if (randoSaveCheck.obtained) {
@@ -153,17 +124,17 @@ void CheckTrackerWindow::Draw() {
153124
return;
154125
}
155126

156-
ImGui::PushStyleColor(ImGuiCol_TitleBgActive, trackerBG);
157-
ImGui::PushStyleColor(ImGuiCol_TitleBg, trackerBG);
158-
ImGui::PushStyleColor(ImGuiCol_WindowBg, trackerBG);
127+
ImGui::PushStyleColor(ImGuiCol_TitleBgActive, checkTrackerBG);
128+
ImGui::PushStyleColor(ImGuiCol_TitleBg, checkTrackerBG);
129+
ImGui::PushStyleColor(ImGuiCol_WindowBg, checkTrackerBG);
159130
ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(0, 0, 0, 0));
160131
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 4.0f);
161132

162133
ImGui::SetNextWindowSize(ImVec2(485.0f, 500.0f), ImGuiCond_FirstUseEver);
163134

164135
if (ImGui::Begin("Check Tracker", nullptr, ImGuiWindowFlags_NoNav | ImGuiWindowFlags_NoFocusOnAppearing)) {
165-
trackerBG.w = ImGui::IsWindowDocked() ? 1.0f : CVAR_TRACKER_OPACITY;
166-
ImGui::SetWindowFontScale(trackerScale);
136+
checkTrackerBG.w = ImGui::IsWindowDocked() ? 1.0f : CVAR_CHECK_TRACKER_OPACITY;
137+
ImGui::SetWindowFontScale(checkTrackerScale);
167138
if (Rando::Logic::shuffledPool.empty()) {
168139
ImGui::TextColored(UIWidgets::ColorValues.at(UIWidgets::Colors::Orange), "No Rando Save Loaded");
169140
ImGui::End();
@@ -186,11 +157,11 @@ void CheckTrackerWindow::Draw() {
186157

187158
void SettingsWindow::DrawElement() {
188159
if (CVarGetInteger("gWindows.CheckTracker", 0)) {
189-
trackerPopoutState = true;
160+
checkTrackerPopoutState = true;
190161
UIWidgets::WindowButton("Return Check Tracker", "gWindows.CheckTracker", GhostshipGui::mRandoCheckTrackerWindow,
191162
{ .size = UIWidgets::Sizes::Inline, .color = UIWidgets::Colors::Red });
192163
} else {
193-
trackerPopoutState = false;
164+
checkTrackerPopoutState = false;
194165
UIWidgets::WindowButton("Popout Check Tracker", "gWindows.CheckTracker", GhostshipGui::mRandoCheckTrackerWindow,
195166
{ .size = UIWidgets::Sizes::Inline, .color = UIWidgets::Colors::Green });
196167
}
@@ -200,7 +171,7 @@ void SettingsWindow::DrawElement() {
200171
ImGui::TableNextColumn();
201172

202173
ImGui::SeparatorText("Check Tracker");
203-
if (!trackerPopoutState) {
174+
if (!checkTrackerPopoutState) {
204175
if (ImGui::BeginChild("Checks", ImVec2(ImGui::GetContentRegionAvail().x, 0))) {
205176
DrawCheckTrackerList();
206177
ImGui::EndChild();
@@ -227,7 +198,7 @@ void SettingsWindow::DrawElement() {
227198
// UIWidgets::CheckboxOptions().DefaultValue(true)); UIWidgets::CVarCheckbox("Show Check Type Filters",
228199
// CVAR_NAME_SHOW_CHECK_TYPE_FILTER);
229200

230-
if (UIWidgets::CVarSliderFloat("", CVAR_NAME_TRACKER_OPACITY,
201+
if (UIWidgets::CVarSliderFloat("", CVAR_NAME_CHECK_TRACKER_OPACITY,
231202
{
232203
.format = "Opacity: %.1f",
233204
.step = 0.10f,
@@ -237,10 +208,10 @@ void SettingsWindow::DrawElement() {
237208
.labelPosition = UIWidgets::LabelPositions::None,
238209
.color = WIDGET_COLOR,
239210
})) {
240-
trackerBG.w = CVAR_TRACKER_OPACITY;
211+
checkTrackerBG.w = CVAR_CHECK_TRACKER_OPACITY;
241212
}
242213

243-
if (UIWidgets::CVarSliderFloat(" ", CVAR_NAME_TRACKER_SCALE,
214+
if (UIWidgets::CVarSliderFloat(" ", CVAR_NAME_CHECK_TRACKER_SCALE,
244215
{
245216
.format = "Scale: %.1f",
246217
.step = 0.10f,
@@ -250,19 +221,19 @@ void SettingsWindow::DrawElement() {
250221
.labelPosition = UIWidgets::LabelPositions::None,
251222
.color = WIDGET_COLOR,
252223
})) {
253-
trackerScale = CVAR_TRACKER_SCALE;
224+
checkTrackerScale = CVAR_CHECK_TRACKER_SCALE;
254225
}
255226

256-
int16_t colorIndex = 0;
257-
for (auto& [cvar, color, label] : defaultColorList) {
227+
int16_t checkColorIndex = 0;
228+
for (auto& [cvar, color, label] : defaultCheckColorList) {
258229
std::string cvarText = cvar;
259230
cvarText += ".Value";
260231
std::string colorText = label;
261232
colorText += " Color";
262233
std::string widgetLabel = "##";
263-
widgetLabel += std::to_string(colorIndex);
234+
widgetLabel += std::to_string(checkColorIndex);
264235

265-
ImGui::PushID(colorIndex);
236+
ImGui::PushID(checkColorIndex);
266237
UIWidgets::CVarColorPicker(widgetLabel.c_str(), cvar, color, true);
267238
ImGui::SameLine();
268239
if (UIWidgets::Button(ICON_FA_REFRESH, { .size = ImVec2(32.0f, 32.0f), .color = WIDGET_COLOR })) {
@@ -272,17 +243,16 @@ void SettingsWindow::DrawElement() {
272243
ImGui::SameLine();
273244
ImGui::Text(colorText.c_str());
274245
ImGui::PopID();
275-
colorIndex++;
246+
checkColorIndex++;
276247
}
277248
ImGui::EndTable();
278249
}
279250
}
280251

281-
bool isInitialized = false;
282252
void Init() {
283-
trackerPopoutState = CVarGetInteger("gWindows.CheckTracker", 0);
284-
trackerBG = { 0, 0, 0, CVAR_TRACKER_OPACITY };
285-
trackerScale = CVAR_TRACKER_SCALE;
253+
checkTrackerPopoutState = CVarGetInteger("gWindows.CheckTracker", 0);
254+
checkTrackerBG = { 0, 0, 0, CVAR_CHECK_TRACKER_OPACITY };
255+
checkTrackerScale = CVAR_CHECK_TRACKER_SCALE;
286256
}
287257

288258
} // namespace CheckTracker

src/port/Rando/CheckTracker/CheckTracker.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ namespace Rando {
99
namespace CheckTracker {
1010

1111
void Init();
12-
//void OnFileLoad();
1312

1413
class CheckTrackerWindow : public Ship::GuiWindow {
1514
public:

0 commit comments

Comments
 (0)