Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion include/macro_presets.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ struct MacroPreset {
/*0x06*/ s16 param;
};

struct MacroPreset MacroObjectPresets[] = {
static struct MacroPreset MacroObjectPresets[] = {
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvOneCoin, MODEL_YELLOW_COIN, 0},
{bhvMovingBlueCoin, MODEL_BLUE_COIN, 0},
Expand Down
1 change: 1 addition & 0 deletions src/game/save_file.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ struct RandoSaveCheck {
struct RandoSaveEntrance {
RandoEntranceId randoEntranceId;
int16_t destinationId;
bool found;
};

struct RandoSaveOption {
Expand Down
90 changes: 30 additions & 60 deletions src/port/Rando/CheckTracker/CheckTracker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,64 +12,35 @@ namespace GhostshipGui {
extern std::shared_ptr<Rando::CheckTracker::CheckTrackerWindow> mRandoCheckTrackerWindow;
}

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

#define CVAR_NAME_SHOW_CHECK_TRACKER "gWindows.CheckTracker"
#define CVAR_NAME_TRACKER_OPACITY "gRando.CheckTracker.Opacity"
#define CVAR_NAME_TRACKER_SCALE "gRando.CheckTracker.Scale"
#define CVAR_NAME_CHECK_TRACKER_OPACITY "gRando.CheckTracker.Opacity"
#define CVAR_NAME_CHECK_TRACKER_SCALE "gRando.CheckTracker.Scale"
#define CVAR_NAME_SHOW_CURRENT_LEVEL "gRando.CheckTracker.ShowCurrentLevel"
#define CVAR_NAME_COLLECTED_COLOR "gRando.CheckTracker.CollectedColor"
#define CVAR_NAME_SKIPPED_COLOR "gRando.CheckTracker.SkippedColor"
#define CVAR_NAME_ITEM_COLOR "gRando.CheckTracker.ItemColor"

#define CVAR_SHOW_CHECK_TRACKER CVarGetInteger(CVAR_NAME_SHOW_CHECK_TRACKER, 0)
#define CVAR_TRACKER_OPACITY CVarGetFloat(CVAR_NAME_TRACKER_OPACITY, 0.5f)
#define CVAR_TRACKER_SCALE CVarGetFloat(CVAR_NAME_TRACKER_SCALE, 1.0f)
#define CVAR_CHECK_TRACKER_OPACITY CVarGetFloat(CVAR_NAME_CHECK_TRACKER_OPACITY, 0.5f)
#define CVAR_CHECK_TRACKER_SCALE CVarGetFloat(CVAR_NAME_CHECK_TRACKER_SCALE, 1.0f)
#define CVAR_SHOW_CURRENT_LEVEL CVarGetInteger(CVAR_NAME_SHOW_CURRENT_LEVEL, 0)
#define CVAR_COLLECTED_COLOR CVarGetColor(CVAR_NAME_COLLECTED_COLOR ".Value", DEFAULT_COLLECTED_COLOR)
#define CVAR_SKIPPED_COLOR CVarGetColor(CVAR_NAME_SKIPPED_COLOR ".Value", DEFAULT_SKIPPED_COLOR)
#define CVAR_ITEM_COLOR CVarGetColor(CVAR_NAME_ITEM_COLOR ".Value", DEFAULT_ITEM_COLOR)

std::vector<std::tuple<const char*, Color_RGBA8, const char*>> defaultColorList = {
std::vector<std::tuple<const char*, Color_RGBA8, const char*>> defaultCheckColorList = {
{ CVAR_NAME_COLLECTED_COLOR, DEFAULT_COLLECTED_COLOR, "Check Obtained" },
{ CVAR_NAME_SKIPPED_COLOR, DEFAULT_SKIPPED_COLOR, "Check Skipped" },
{ CVAR_NAME_ITEM_COLOR, DEFAULT_ITEM_COLOR, "Obtained Item" },
};

std::map<int16_t, std::string> levelIdList = {
{ LEVEL_BOB, "Bob Omb Battlefield" },
{ LEVEL_WF, "Whomp's Fortress" },
{ LEVEL_JRB, "Jolly Rodger's Bay" },
{ LEVEL_CASTLE, "Castle Interior" },
{ LEVEL_CCM, "Cool Cool Mountain" },
{ LEVEL_BBH, "Big Boo's Haunt" },
{ LEVEL_HMC, "Hazy Maze Cave" },
{ LEVEL_LLL, "Lethal Lava Land" },
{ LEVEL_SSL, "Shifting Sand Land" },
{ LEVEL_DDD, "Dire Dire Docks" },
{ LEVEL_SL, "Snowman's Land" },
{ LEVEL_WDW, "Wet Dry World" },
{ LEVEL_TTM, "Tall Tall Mountain" },
{ LEVEL_THI, "Tiny Huge Island" },
{ LEVEL_TTC, "Tick Tock Clock" },
{ LEVEL_RR, "Rainbow Ride" },
{ LEVEL_BITDW, "Bowser in the Dark World" },
{ LEVEL_BITFS, "Bowser in the Fire Sea" },
{ LEVEL_BITS, "Bowser in the Sky" },
{ LEVEL_PSS, "Princess's Secret Slide" },
{ LEVEL_COTMC, "Cavern of the Metal Cap" },
{ LEVEL_TOTWC, "Tower of the Wing Cap" },
{ LEVEL_VCUTM, "Vanish Cap Under the Moat" },
{ LEVEL_WMOTR, "Winged Mario over the Rainbow" },
{ LEVEL_SA, "Secret Aquarium" },
};

bool trackerPopoutState = false;
ImVec4 trackerBG = ImVec4{ 0, 0, 0, 0.5f };
float trackerScale = 1.0f;
bool checkTrackerPopoutState = false;
ImVec4 checkTrackerBG = ImVec4{ 0, 0, 0, 0.5f };
float checkTrackerScale = 1.0f;

bool expandState = true;

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

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

ImGui::BeginGroup();
ImGui::Image(textureId, ImVec2(16.0f * trackerScale, 16.0f * trackerScale));
ImGui::Image(textureId, ImVec2(16.0f * checkTrackerScale, 16.0f * checkTrackerScale));
ImGui::TableNextColumn();
ImGui::TextColored(checkTextColor, Rando::StaticData::Checks[entry.randoCheckId].name);
if (randoSaveCheck.obtained) {
Expand Down Expand Up @@ -153,17 +124,17 @@ void CheckTrackerWindow::Draw() {
return;
}

ImGui::PushStyleColor(ImGuiCol_TitleBgActive, trackerBG);
ImGui::PushStyleColor(ImGuiCol_TitleBg, trackerBG);
ImGui::PushStyleColor(ImGuiCol_WindowBg, trackerBG);
ImGui::PushStyleColor(ImGuiCol_TitleBgActive, checkTrackerBG);
ImGui::PushStyleColor(ImGuiCol_TitleBg, checkTrackerBG);
ImGui::PushStyleColor(ImGuiCol_WindowBg, checkTrackerBG);
ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(0, 0, 0, 0));
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 4.0f);

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

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

void SettingsWindow::DrawElement() {
if (CVarGetInteger("gWindows.CheckTracker", 0)) {
trackerPopoutState = true;
checkTrackerPopoutState = true;
UIWidgets::WindowButton("Return Check Tracker", "gWindows.CheckTracker", GhostshipGui::mRandoCheckTrackerWindow,
{ .size = UIWidgets::Sizes::Inline, .color = UIWidgets::Colors::Red });
} else {
trackerPopoutState = false;
checkTrackerPopoutState = false;
UIWidgets::WindowButton("Popout Check Tracker", "gWindows.CheckTracker", GhostshipGui::mRandoCheckTrackerWindow,
{ .size = UIWidgets::Sizes::Inline, .color = UIWidgets::Colors::Green });
}
Expand All @@ -200,7 +171,7 @@ void SettingsWindow::DrawElement() {
ImGui::TableNextColumn();

ImGui::SeparatorText("Check Tracker");
if (!trackerPopoutState) {
if (!checkTrackerPopoutState) {
if (ImGui::BeginChild("Checks", ImVec2(ImGui::GetContentRegionAvail().x, 0))) {
DrawCheckTrackerList();
ImGui::EndChild();
Expand All @@ -227,7 +198,7 @@ void SettingsWindow::DrawElement() {
// UIWidgets::CheckboxOptions().DefaultValue(true)); UIWidgets::CVarCheckbox("Show Check Type Filters",
// CVAR_NAME_SHOW_CHECK_TYPE_FILTER);

if (UIWidgets::CVarSliderFloat("", CVAR_NAME_TRACKER_OPACITY,
if (UIWidgets::CVarSliderFloat("", CVAR_NAME_CHECK_TRACKER_OPACITY,
{
.format = "Opacity: %.1f",
.step = 0.10f,
Expand All @@ -237,10 +208,10 @@ void SettingsWindow::DrawElement() {
.labelPosition = UIWidgets::LabelPositions::None,
.color = WIDGET_COLOR,
})) {
trackerBG.w = CVAR_TRACKER_OPACITY;
checkTrackerBG.w = CVAR_CHECK_TRACKER_OPACITY;
}

if (UIWidgets::CVarSliderFloat(" ", CVAR_NAME_TRACKER_SCALE,
if (UIWidgets::CVarSliderFloat(" ", CVAR_NAME_CHECK_TRACKER_SCALE,
{
.format = "Scale: %.1f",
.step = 0.10f,
Expand All @@ -250,19 +221,19 @@ void SettingsWindow::DrawElement() {
.labelPosition = UIWidgets::LabelPositions::None,
.color = WIDGET_COLOR,
})) {
trackerScale = CVAR_TRACKER_SCALE;
checkTrackerScale = CVAR_CHECK_TRACKER_SCALE;
}

int16_t colorIndex = 0;
for (auto& [cvar, color, label] : defaultColorList) {
int16_t checkColorIndex = 0;
for (auto& [cvar, color, label] : defaultCheckColorList) {
std::string cvarText = cvar;
cvarText += ".Value";
std::string colorText = label;
colorText += " Color";
std::string widgetLabel = "##";
widgetLabel += std::to_string(colorIndex);
widgetLabel += std::to_string(checkColorIndex);

ImGui::PushID(colorIndex);
ImGui::PushID(checkColorIndex);
UIWidgets::CVarColorPicker(widgetLabel.c_str(), cvar, color, true);
ImGui::SameLine();
if (UIWidgets::Button(ICON_FA_REFRESH, { .size = ImVec2(32.0f, 32.0f), .color = WIDGET_COLOR })) {
Expand All @@ -272,17 +243,16 @@ void SettingsWindow::DrawElement() {
ImGui::SameLine();
ImGui::Text(colorText.c_str());
ImGui::PopID();
colorIndex++;
checkColorIndex++;
}
ImGui::EndTable();
}
}

bool isInitialized = false;
void Init() {
trackerPopoutState = CVarGetInteger("gWindows.CheckTracker", 0);
trackerBG = { 0, 0, 0, CVAR_TRACKER_OPACITY };
trackerScale = CVAR_TRACKER_SCALE;
checkTrackerPopoutState = CVarGetInteger("gWindows.CheckTracker", 0);
checkTrackerBG = { 0, 0, 0, CVAR_CHECK_TRACKER_OPACITY };
checkTrackerScale = CVAR_CHECK_TRACKER_SCALE;
}

} // namespace CheckTracker
Expand Down
1 change: 0 additions & 1 deletion src/port/Rando/CheckTracker/CheckTracker.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ namespace Rando {
namespace CheckTracker {

void Init();
//void OnFileLoad();

class CheckTrackerWindow : public Ship::GuiWindow {
public:
Expand Down
Loading
Loading