Cosmetics Editor tweaks (#4904)

* Cosmetics Editor Tweaks

* More work on keys
This commit is contained in:
aMannus 2025-01-19 20:45:07 +01:00 committed by GitHub
parent 3357543538
commit 2a172de52a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 256 additions and 166 deletions

View File

@ -32,7 +32,6 @@ extern "C" {
#include "objects/object_st/object_st.h"
#include "objects/object_gi_boomerang/object_gi_boomerang.h"
#include "objects/object_gi_liquid/object_gi_liquid.h"
#include "objects/object_gi_bow/object_gi_bow.h"
#include "objects/object_gi_hearts/object_gi_hearts.h"
#include "objects/gameplay_keep/gameplay_keep.h"
#include "objects/object_gi_sword_1/object_gi_sword_1.h"
@ -47,9 +46,8 @@ extern "C" {
#include "objects/object_gjyo_objects/object_gjyo_objects.h"
#include "textures/nintendo_rogo_static/nintendo_rogo_static.h"
#include "objects/object_gi_rabit_mask/object_gi_rabit_mask.h"
#include "overlays/ovl_Boss_Ganon2/ovl_Boss_Ganon2.h"
#include "overlays/ovl_Magic_Wind/ovl_Magic_Wind.h"
#include "textures/nintendo_rogo_static/nintendo_rogo_static.h"
extern PlayState* gPlayState;
void ResourceMgr_PatchGfxByName(const char* path, const char* patchName, int index, Gfx instruction);
void ResourceMgr_PatchGfxCopyCommandByName(const char* path, const char* patchName, int destinationIndex, int sourceIndex);
@ -74,7 +72,9 @@ std::map<CosmeticGroup, const char*> groupLabels = {
{ COSMETICS_GROUP_SWORDS, "Swords" },
{ COSMETICS_GROUP_GLOVES, "Gloves" },
{ COSMETICS_GROUP_EQUIPMENT, "Equipment" },
{ COSMETICS_GROUP_KEY, "Keys" },
{ COSMETICS_GROUP_KEYRING, "Keyring" },
{ COSMETICS_GROUP_SMALL_KEYS, "Small Keys" },
{ COSMETICS_GROUP_BOSS_KEYS, "Boss Keys" },
{ COSMETICS_GROUP_CONSUMABLE, "Consumables" },
{ COSMETICS_GROUP_HUD, "HUD" },
{ COSMETICS_GROUP_KALEIDO, "Pause Menu" },
@ -253,34 +253,41 @@ static std::map<std::string, CosmeticOption> cosmeticOptions = {
COSMETIC_OPTION("Consumable.GoldRupee", "Gold Rupee", COSMETICS_GROUP_CONSUMABLE, ColorRGBA8(255, 190, 55, 255), false, true, true),
COSMETIC_OPTION("Consumable.SilverRupee", "Silver Rupee", COSMETICS_GROUP_CONSUMABLE, ColorRGBA8(255, 255, 255, 255), false, true, true),
COSMETIC_OPTION("Key.KeyringRing", "Key Ring Ring", COSMETICS_GROUP_KEY, ColorRGBA8(255, 255, 255, 255), false, true, false),
COSMETIC_OPTION("Key.ForestSmallBase", "Forest Small Key", COSMETICS_GROUP_KEY, ColorRGBA8(255, 255, 255, 255), false, true, false),
COSMETIC_OPTION("Key.ForestEmblem", "Forest Key Gem/Emblem", COSMETICS_GROUP_KEY, ColorRGBA8(255, 0, 0, 255), false, true, true),
COSMETIC_OPTION("Key.ForestBossBase", "Forest Boss Key", COSMETICS_GROUP_KEY, ColorRGBA8(255, 255, 0, 255), false, true, false),
COSMETIC_OPTION("Key.FireSmallBase", "Fire Small Key", COSMETICS_GROUP_KEY, ColorRGBA8(255, 255, 255, 255), false, true, false),
COSMETIC_OPTION("Key.FireEmblem", "Fire Key Gem/Emblem", COSMETICS_GROUP_KEY, ColorRGBA8(255, 0, 0, 255), false, true, true),
COSMETIC_OPTION("Key.FireBossBase", "Fire Boss Key", COSMETICS_GROUP_KEY, ColorRGBA8(255, 255, 0, 255), false, true, false),
COSMETIC_OPTION("Key.WaterSmallBase", "Water Small Key", COSMETICS_GROUP_KEY, ColorRGBA8(255, 255, 255, 255), false, true, false),
COSMETIC_OPTION("Key.WaterEmblem", "Water Key Gem/Emblem", COSMETICS_GROUP_KEY, ColorRGBA8(255, 0, 0, 255), false, true, true),
COSMETIC_OPTION("Key.WaterBossBase", "Water Boss Key", COSMETICS_GROUP_KEY, ColorRGBA8(255, 255, 0, 255), false, true, false),
COSMETIC_OPTION("Key.SpiritSmallBase", "Spirit Small Key", COSMETICS_GROUP_KEY, ColorRGBA8(255, 255, 255, 255), false, true, false),
COSMETIC_OPTION("Key.SpiritEmblem", "Spirit Key Gem/Emblem", COSMETICS_GROUP_KEY, ColorRGBA8(255, 0, 0, 255), false, true, true),
COSMETIC_OPTION("Key.SpiritBossBase", "Spirit Boss Key", COSMETICS_GROUP_KEY, ColorRGBA8(255, 255, 0, 255), false, true, false),
COSMETIC_OPTION("Key.ShadowSmallBase", "Shadow Small Key", COSMETICS_GROUP_KEY, ColorRGBA8(255, 255, 255, 255), false, true, false),
COSMETIC_OPTION("Key.ShadowEmblem", "Shadow Key Gem/Emblem", COSMETICS_GROUP_KEY, ColorRGBA8(255, 0, 0, 255), false, true, true),
COSMETIC_OPTION("Key.ShadowBossBase", "Shadow Boss Key", COSMETICS_GROUP_KEY, ColorRGBA8(255, 255, 0, 255), false, true, false),
COSMETIC_OPTION("Key.WellSmallBase", "Well Small Key", COSMETICS_GROUP_KEY, ColorRGBA8(255, 255, 255, 255), false, true, false),
COSMETIC_OPTION("Key.WellEmblem", "Well Key Emblem", COSMETICS_GROUP_KEY, ColorRGBA8(255, 0, 0, 255), false, true, true),
COSMETIC_OPTION("Key.FortSmallBase", "Fortress Small Key", COSMETICS_GROUP_KEY, ColorRGBA8(255, 255, 255, 255), false, true, false),
COSMETIC_OPTION("Key.FortEmblem", "Fortress Key Emblem", COSMETICS_GROUP_KEY, ColorRGBA8(255, 0, 0, 255), false, true, true),
COSMETIC_OPTION("Key.GTGSmallBase", "GTG Small Key", COSMETICS_GROUP_KEY, ColorRGBA8(255, 255, 255, 255), false, true, false),
COSMETIC_OPTION("Key.GTGEmblem", "GTG Key Emblem", COSMETICS_GROUP_KEY, ColorRGBA8(255, 0, 0, 255), false, true, true),
COSMETIC_OPTION("Key.GanonsSmallBase", "Ganon's Small Key", COSMETICS_GROUP_KEY, ColorRGBA8(255, 255, 255, 255), false, true, false),
COSMETIC_OPTION("Key.GanonsEmblem", "Ganon's Key Gem/Emblem", COSMETICS_GROUP_KEY, ColorRGBA8(255, 0, 0, 255), false, true, true),
COSMETIC_OPTION("Key.GanonsBossBase", "Ganon's Boss Key", COSMETICS_GROUP_KEY, ColorRGBA8(255, 255, 0, 255), false, true, false),
//COSMETIC_OPTION("Key.ChestGameSmallBase", "Chest Game Key", COSMETICS_GROUP_KEY, ColorRGBA8(255, 255, 255, 255), false, true, false),
//COSMETIC_OPTION("Key.ChestGameEmblem", "Chest Game Key Emblem", COSMETICS_GROUP_KEY, ColorRGBA8(255, 0, 0, 255), false, true, true),
COSMETIC_OPTION("Key.Skeleton", "Skeleton Key", COSMETICS_GROUP_KEY, ColorRGBA8(255, 255, 170, 255), false, true, false),
COSMETIC_OPTION("Key.KeyringRing", "Key Ring Ring", COSMETICS_GROUP_KEYRING, ColorRGBA8(255, 255, 255, 255), false, true, false),
COSMETIC_OPTION("Key.ForestSmallBody", "Forest Small Key Body", COSMETICS_GROUP_SMALL_KEYS, ColorRGBA8(255, 255, 255, 255), false, true, false),
COSMETIC_OPTION("Key.ForestSmallEmblem", "Forest Small Key Emblem", COSMETICS_GROUP_SMALL_KEYS, ColorRGBA8(4, 195, 46, 255), false, true, false),
COSMETIC_OPTION("Key.ForestBossBody", "Forest Boss Key Body", COSMETICS_GROUP_BOSS_KEYS, ColorRGBA8(255, 255, 0, 255), false, true, false),
COSMETIC_OPTION("Key.ForestBossGem", "Forest Boss Key Gem", COSMETICS_GROUP_BOSS_KEYS, ColorRGBA8(255, 0, 0, 255), false, true, false),
COSMETIC_OPTION("Key.FireSmallBody", "Fire Small Key Body", COSMETICS_GROUP_SMALL_KEYS, ColorRGBA8(255, 255, 255, 255), false, true, false),
COSMETIC_OPTION("Key.FireSmallEmblem", "Fire Small Key Emblem", COSMETICS_GROUP_SMALL_KEYS, ColorRGBA8(237, 95, 95, 255), false, true, false),
COSMETIC_OPTION("Key.FireBossBody", "Fire Boss Key Body", COSMETICS_GROUP_BOSS_KEYS, ColorRGBA8(255, 255, 0, 255), false, true, false),
COSMETIC_OPTION("Key.FireBossGem", "Fire Boss Key Gem", COSMETICS_GROUP_BOSS_KEYS, ColorRGBA8(255, 0, 0, 255), false, true, false),
COSMETIC_OPTION("Key.WaterSmallBody", "Water Small Key Body", COSMETICS_GROUP_SMALL_KEYS, ColorRGBA8(255, 255, 255, 255), false, true, false),
COSMETIC_OPTION("Key.WaterSmallEmblem", "Water Small Key Emblem", COSMETICS_GROUP_SMALL_KEYS, ColorRGBA8(85, 180, 223, 255), false, true, false),
COSMETIC_OPTION("Key.WaterBossBody", "Water Boss Key Body", COSMETICS_GROUP_BOSS_KEYS, ColorRGBA8(255, 255, 0, 255), false, true, false),
COSMETIC_OPTION("Key.WaterBossGem", "Water Boss Key Gem", COSMETICS_GROUP_BOSS_KEYS, ColorRGBA8(255, 0, 0, 255), false, true, false),
COSMETIC_OPTION("Key.SpiritSmallBody", "Spirit Small Key Body", COSMETICS_GROUP_SMALL_KEYS, ColorRGBA8(255, 255, 255, 255), false, true, false),
COSMETIC_OPTION("Key.SpiritSmallEmblem", "Spirit Small Key Emblem", COSMETICS_GROUP_SMALL_KEYS, ColorRGBA8(222, 158, 47, 255), false, true, false),
COSMETIC_OPTION("Key.SpiritBossBody", "Spirit Boss Key Body", COSMETICS_GROUP_BOSS_KEYS, ColorRGBA8(255, 255, 0, 255), false, true, false),
COSMETIC_OPTION("Key.SpiritBossGem", "Spirit Boss Key Gem", COSMETICS_GROUP_BOSS_KEYS, ColorRGBA8(255, 0, 0, 255), false, true, false),
COSMETIC_OPTION("Key.ShadowSmallBody", "Shadow Small Key Body", COSMETICS_GROUP_SMALL_KEYS, ColorRGBA8(255, 255, 255, 255), false, true, false),
COSMETIC_OPTION("Key.ShadowSmallEmblem", "Shadow Small Key Emblem", COSMETICS_GROUP_SMALL_KEYS, ColorRGBA8(126, 16, 177, 255), false, true, false),
COSMETIC_OPTION("Key.ShadowBossBody", "Shadow Boss Key Body", COSMETICS_GROUP_BOSS_KEYS, ColorRGBA8(255, 255, 0, 255), false, true, false),
COSMETIC_OPTION("Key.ShadowBossGem", "Shadow Boss Key Gem", COSMETICS_GROUP_BOSS_KEYS, ColorRGBA8(255, 0, 0, 255), false, true, false),
COSMETIC_OPTION("Key.GanonsSmallBody", "Ganons Small Key Body", COSMETICS_GROUP_SMALL_KEYS, ColorRGBA8(255, 255, 255, 255), false, true, false),
COSMETIC_OPTION("Key.GanonsSmallEmblem", "Ganons Small Key Emblem", COSMETICS_GROUP_SMALL_KEYS, ColorRGBA8(80, 80, 80, 255), false, true, false),
COSMETIC_OPTION("Key.GanonsBossBody", "Ganons Boss Key Body", COSMETICS_GROUP_BOSS_KEYS, ColorRGBA8(255, 255, 0, 255), false, true, false),
COSMETIC_OPTION("Key.GanonsBossGem", "Ganons Boss Key Gem", COSMETICS_GROUP_BOSS_KEYS, ColorRGBA8(255, 0, 0, 255), false, true, false),
COSMETIC_OPTION("Key.WellSmallBody", "Well Small Key", COSMETICS_GROUP_SMALL_KEYS, ColorRGBA8(255, 255, 255, 255), false, true, false),
COSMETIC_OPTION("Key.WellSmallEmblem", "Well Small Key Emblem", COSMETICS_GROUP_SMALL_KEYS, ColorRGBA8(227, 110, 255, 255), false, true, true),
COSMETIC_OPTION("Key.FortSmallBody", "Fortress Small Key", COSMETICS_GROUP_SMALL_KEYS, ColorRGBA8(255, 255, 255, 255), false, true, false),
COSMETIC_OPTION("Key.FortSmallEmblem", "Fortress Small Key Emblem",COSMETICS_GROUP_SMALL_KEYS, ColorRGBA8(255, 255, 255, 255), false, true, true),
COSMETIC_OPTION("Key.GTGSmallBody", "GTG Small Key", COSMETICS_GROUP_SMALL_KEYS, ColorRGBA8(255, 255, 255, 255), false, true, false),
COSMETIC_OPTION("Key.GTGSmallEmblem", "GTG Small Key Emblem", COSMETICS_GROUP_SMALL_KEYS, ColorRGBA8(221, 212, 60, 255), false, true, true),
//COSMETIC_OPTION("Key.ChestGameSmallBody", "Chest Game Key", COSMETICS_GROUP_SMALL_KEYS, ColorRGBA8(255, 255, 255, 255), false, true, false),
//COSMETIC_OPTION("Key.ChestGameEmblem", "Chest Game Key Emblem", COSMETICS_GROUP_SMALL_KEYS, ColorRGBA8(255, 0, 0, 255), false, true, true),
COSMETIC_OPTION("Key.Skeleton", "Skeleton Key", COSMETICS_GROUP_SMALL_KEYS, ColorRGBA8(255, 255, 170, 255), false, true, false),
COSMETIC_OPTION("HUD.AButton", "A Button", COSMETICS_GROUP_HUD, ColorRGBA8( 90, 90, 255, 255), false, true, false),
COSMETIC_OPTION("HUD.BButton", "B Button", COSMETICS_GROUP_HUD, ColorRGBA8( 0, 150, 0, 255), false, true, false),
@ -1475,10 +1482,16 @@ void Reset_Option_Double(const char* Button_Title, const char* name) {
void DrawSillyTab() {
ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0));
UIWidgets::PaddedSeparator(true, true, 2.0f, 2.0f);
if (UIWidgets::EnhancementCheckbox("Let It Snow", CVAR_GENERAL("LetItSnow"))) {
Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame();
}
UIWidgets::Tooltip("Makes snow fall, changes chest texture colors to red and green, etc, for December holidays.\nWill reset on restart outside of December 23-25.");
UIWidgets::PaddedSeparator(true, true, 2.0f, 2.0f);
if (UIWidgets::EnhancementSliderFloat("Link Body Scale: %.3fx", "##Link_BodyScale", CVAR_COSMETIC("Link.BodyScale.Value"), 0.001f, 0.025f, "", 0.01f, true)) {
CVarSetInteger(CVAR_COSMETIC("Link.BodyScale.Changed"), 1);
}
@ -1494,31 +1507,64 @@ void DrawSillyTab() {
player->actor.scale.z = 0.01f;
}
}
UIWidgets::PaddedSeparator(true, true, 2.0f, 2.0f);
if (UIWidgets::EnhancementSliderFloat("Link Head Scale: %.2fx", "##Link_HeadScale", CVAR_COSMETIC("Link.HeadScale.Value"), 0.4f, 4.0f, "", 1.0f, false)) {
CVarSetInteger(CVAR_COSMETIC("Link.HeadScale.Changed"), 1);
}
Reset_Option_Double("Reset##Link_HeadScale", CVAR_COSMETIC("Link.HeadScale"));
UIWidgets::PaddedSeparator(true, true, 2.0f, 2.0f);
if (UIWidgets::EnhancementSliderFloat("Link Sword Scale: %f", "##Link_SwordScale", CVAR_COSMETIC("Link.SwordScale.Value"), 1.0f, 2.5f, "", 1.0f, false)) {
CVarSetInteger(CVAR_COSMETIC("Link.SwordScale.Changed"), 1);
}
Reset_Option_Double("Reset##Link_SwordScale", CVAR_COSMETIC("Link.SwordScale"));
UIWidgets::PaddedSeparator(true, true, 2.0f, 2.0f);
UIWidgets::EnhancementSliderFloat("Bunny Hood Length: %f", "##BunnyHood_EarLength", CVAR_COSMETIC("BunnyHood.EarLength"), -300.0f, 1000.0f, "", 0.0f, false);
Reset_Option_Single("Reset##BunnyHood_EarLength", CVAR_COSMETIC("BunnyHood.EarLength"));
UIWidgets::PaddedSeparator(true, true, 2.0f, 2.0f);
UIWidgets::EnhancementSliderFloat("Bunny Hood Spread: %f", "##BunnyHood_EarSpread", CVAR_COSMETIC("BunnyHood.EarSpread"), -300.0f, 500.0f, "", 0.0f, false);
Reset_Option_Single("Reset##BunnyHood_EarSpread", CVAR_COSMETIC("BunnyHood.EarSpread"));
UIWidgets::PaddedSeparator(true, true, 2.0f, 2.0f);
UIWidgets::EnhancementSliderFloat("Goron Neck Length: %f", "##Goron_NeckLength", CVAR_COSMETIC("Goron.NeckLength"), 0.0f, 5000.0f, "", 0.0f, false);
Reset_Option_Single("Reset##Goron_NeckLength", CVAR_COSMETIC("Goron.NeckLength"));
UIWidgets::PaddedSeparator(true, true, 2.0f, 2.0f);
UIWidgets::EnhancementCheckbox("Unfix Goron Spin", CVAR_COSMETIC("UnfixGoronSpin"));
UIWidgets::PaddedSeparator(true, true, 2.0f, 2.0f);
UIWidgets::EnhancementSliderFloat("Fairies Size: %f", "##Fairies_Size", CVAR_COSMETIC("Fairies.Size"), 0.25f, 5.0f, "", 1.0f, false);
Reset_Option_Single("Reset##Fairies_Size", CVAR_COSMETIC("Fairies.Size"));
UIWidgets::PaddedSeparator(true, true, 2.0f, 2.0f);
UIWidgets::EnhancementSliderFloat("N64 Logo Spin Speed: %f", "##N64Logo_SpinSpeed", CVAR_COSMETIC("N64Logo.SpinSpeed"), 0.25f, 5.0f, "", 1.0f, false);
Reset_Option_Single("Reset##N64Logo_SpinSpeed", CVAR_COSMETIC("N64Logo.SpinSpeed"));
UIWidgets::PaddedSeparator(true, true, 2.0f, 2.0f);
UIWidgets::EnhancementSliderFloat("Moon Size: %f", "##Moon_Size", CVAR_COSMETIC("Moon.Size"), 0.5f, 2.0f, "", 1.0f, false);
Reset_Option_Single("Reset##Moon_Size", CVAR_COSMETIC("Moon.Size"));
UIWidgets::PaddedSeparator(true, true, 2.0f, 2.0f);
if (UIWidgets::EnhancementSliderFloat("Kak Windmill Speed: %f", "##Kak_Windmill_Speed", CVAR_COSMETIC("Kak.Windmill_Speed.Value"), 100.0f, 6000.0f, "", 100.0f, false)) {
CVarSetInteger(CVAR_COSMETIC("Kak.Windmill_Speed.Changed"), 1);
}
Reset_Option_Double("Reset##Kak_Windmill_Speed", CVAR_COSMETIC("Kak.Windmill_Speed"));
UIWidgets::PaddedSeparator(true, true, 2.0f, 2.0f);
ImGui::EndDisabled();
}
@ -1748,6 +1794,7 @@ void DrawCosmeticGroup(CosmeticGroup cosmeticGroup) {
DrawCosmeticRow(cosmeticOption);
}
}
UIWidgets::PaddedSeparator(true, true, 2.0f, 2.0f);
}
static const char* colorSchemes[2] = {
@ -1755,92 +1802,95 @@ static const char* colorSchemes[2] = {
"Gamecube",
};
void CosmeticsEditorWindow::ApplyDungeonEmblemColors(){
CVarSetColor(cosmeticOptions["Key.ForestEmblem"].cvar, {0, 255, 0, 255});
CVarSetInteger(cosmeticOptions["Key.ForestEmblem"].changedCvar, 1);
cosmeticOptions["Key.ForestEmblem"].currentColor = {0, 255/255.0f, 0, 255/255.0f};
void CosmeticsEditorWindow::ApplyDungeonKeyColors() {
// Keyring
ResetColor(cosmeticOptions.at("Key.KeyringRing"));
CVarSetColor(cosmeticOptions["Key.FireEmblem"].cvar, {255, 30, 0, 255});
CVarSetInteger(cosmeticOptions["Key.FireEmblem"].changedCvar, 1);
cosmeticOptions["Key.FireEmblem"].currentColor = {255/255.0f, 30/255.0f, 0, 255/255.0f};
// Forest Temple
CVarSetColor(cosmeticOptions["Key.ForestSmallBody"].cvar, { 4, 195, 46, 255 });
CVarSetInteger(cosmeticOptions["Key.ForestSmallBody"].changedCvar, 1);
cosmeticOptions["Key.ForestSmallBody"].currentColor = { 4 / 255.0f, 195 / 255.0f, 46 / 255.0f, 255 / 255.0f };
ResetColor(cosmeticOptions.at("Key.ForestSmallEmblem"));
ResetColor(cosmeticOptions.at("Key.ForestBossBody"));
CVarSetColor(cosmeticOptions["Key.ForestBossGem"].cvar, { 0, 255, 0, 255 });
CVarSetInteger(cosmeticOptions["Key.ForestBossGem"].changedCvar, 1);
cosmeticOptions["Key.ForestBossGem"].currentColor = { 0, 255 / 255.0f, 0, 255 / 255.0f };
// Fire Temple
CVarSetColor(cosmeticOptions["Key.FireSmallBody"].cvar, { 237, 95, 95, 255 });
CVarSetInteger(cosmeticOptions["Key.FireSmallBody"].changedCvar, 1);
cosmeticOptions["Key.FireSmallBody"].currentColor = { 237 / 255.0f, 95 / 255.0f, 95 / 255.0f, 255 / 255.0f };
ResetColor(cosmeticOptions.at("Key.FireSmallEmblem"));
ResetColor(cosmeticOptions.at("Key.FireBossBody"));
CVarSetColor(cosmeticOptions["Key.FireBossGem"].cvar, { 255, 30, 0, 255 });
CVarSetInteger(cosmeticOptions["Key.FireBossGem"].changedCvar, 1);
cosmeticOptions["Key.FireBossGem"].currentColor = { 255 / 255.0f, 30 / 255.0f, 0, 255 / 255.0f };
// Water Temple
CVarSetColor(cosmeticOptions["Key.WaterSmallBody"].cvar, { 85, 180, 223, 255 });
CVarSetInteger(cosmeticOptions["Key.WaterSmallBody"].changedCvar, 1);
cosmeticOptions["Key.WaterSmallBody"].currentColor = { 85 / 255.0f, 180 / 255.0f, 223 / 255.0f, 255 / 255.0f };
ResetColor(cosmeticOptions.at("Key.WaterSmallEmblem"));
ResetColor(cosmeticOptions.at("Key.WaterBossBody"));
CVarSetColor(cosmeticOptions["Key.WaterBossGem"].cvar, { 0, 137, 255, 255 });
CVarSetInteger(cosmeticOptions["Key.WaterBossGem"].changedCvar, 1);
cosmeticOptions["Key.WaterBossGem"].currentColor = { 0, 137 / 255.0f, 255 / 255.0f, 255 / 255.0f };
// Spirit Temple
CVarSetColor(cosmeticOptions["Key.SpiritSmallBody"].cvar, { 222, 158, 47, 255 });
CVarSetInteger(cosmeticOptions["Key.SpiritSmallBody"].changedCvar, 1);
cosmeticOptions["Key.SpiritSmallBody"].currentColor = { 222 / 255.0f, 158 / 255.0f, 47 / 255.0f, 255 / 255.0f };
ResetColor(cosmeticOptions.at("Key.SpiritSmallEmblem"));
ResetColor(cosmeticOptions.at("Key.SpiritBossBody"));
CVarSetColor(cosmeticOptions["Key.SpiritBossGem"].cvar, { 255, 85, 0, 255 });
CVarSetInteger(cosmeticOptions["Key.SpiritBossGem"].changedCvar, 1);
cosmeticOptions["Key.SpiritBossGem"].currentColor = { 255 / 255.0f, 85 / 255.0f, 0, 255 / 255.0f };
// Shadow Temple
CVarSetColor(cosmeticOptions["Key.ShadowSmallBody"].cvar, { 126, 16, 177, 255 });
CVarSetInteger(cosmeticOptions["Key.ShadowSmallBody"].changedCvar, 1);
cosmeticOptions["Key.ShadowSmallBody"].currentColor = { 126 / 255.0f, 16 / 255.0f, 177 / 255.0f, 255 / 255.0f };
ResetColor(cosmeticOptions.at("Key.ShadowSmallEmblem"));
ResetColor(cosmeticOptions.at("Key.ShadowBossBody"));
CVarSetColor(cosmeticOptions["Key.ShadowBossGem"].cvar, { 153, 0, 255, 255 });
CVarSetInteger(cosmeticOptions["Key.ShadowBossGem"].changedCvar, 1);
cosmeticOptions["Key.ShadowBossGem"].currentColor = { 153 / 255.0f, 0, 255 / 255.0f, 255 / 255.0f };
// Ganon's Tower
CVarSetColor(cosmeticOptions["Key.GanonsSmallBody"].cvar, { 80, 80, 80, 255 });
CVarSetInteger(cosmeticOptions["Key.GanonsSmallBody"].changedCvar, 1);
cosmeticOptions["Key.GanonsSmallBody"].currentColor = { 80 / 255.0f, 80 / 255.0f, 80 / 255.0f, 255 / 255.0f };
ResetColor(cosmeticOptions.at("Key.GanonsSmallEmblem"));
CVarSetColor(cosmeticOptions["Key.GanonsBossBody"].cvar, { 80, 80, 80, 255 });
CVarSetInteger(cosmeticOptions["Key.GanonsBossBody"].changedCvar, 1);
cosmeticOptions["Key.GanonsBossBody"].currentColor = { 80 / 255.0f, 80 / 255.0f, 80 / 255.0f, 255 / 255.0f };
CVarSetColor(cosmeticOptions["Key.GanonsBossGem"].cvar, { 255, 0, 0, 255 });
CVarSetInteger(cosmeticOptions["Key.GanonsBossGem"].changedCvar, 1);
cosmeticOptions["Key.GanonsBossGem"].currentColor = { 255 / 255.0f, 0, 0, 255 / 255.0f };
CVarSetColor(cosmeticOptions["Key.WaterEmblem"].cvar, {0, 137, 255, 255});
CVarSetInteger(cosmeticOptions["Key.WaterEmblem"].changedCvar, 1);
cosmeticOptions["Key.WaterEmblem"].currentColor = {0, 137/255.0f, 255/255.0f, 255/255.0f};
// Bottom of the Well
CVarSetColor(cosmeticOptions["Key.WellSmallBody"].cvar, { 227, 110, 255, 255 });
CVarSetInteger(cosmeticOptions["Key.WellSmallBody"].changedCvar, 1);
cosmeticOptions["Key.WellSmallBody"].currentColor = { 227 / 255.0f, 110 / 255.0f, 255 / 255.0f, 255 / 255.0f };
ResetColor(cosmeticOptions.at("Key.WellSmallEmblem"));
// Gerudo Training Ground
CVarSetColor(cosmeticOptions["Key.GTGSmallBody"].cvar, { 221, 212, 60, 255 });
CVarSetInteger(cosmeticOptions["Key.GTGSmallBody"].changedCvar, 1);
cosmeticOptions["Key.GTGSmallBody"].currentColor = { 221 / 255.0f, 212 / 255.0f, 60 / 255.0f, 255 / 255.0f };
ResetColor(cosmeticOptions.at("Key.GTGSmallEmblem"));
CVarSetColor(cosmeticOptions["Key.SpiritEmblem"].cvar, {255, 85, 0, 255});
CVarSetInteger(cosmeticOptions["Key.SpiritEmblem"].changedCvar, 1);
cosmeticOptions["Key.SpiritEmblem"].currentColor = {255/255.0f, 85/255.0f, 0, 255/255.0f};
CVarSetColor(cosmeticOptions["Key.ShadowEmblem"].cvar, {153, 0, 255, 255});
CVarSetInteger(cosmeticOptions["Key.ShadowEmblem"].changedCvar, 1);
cosmeticOptions["Key.ShadowEmblem"].currentColor = {153/255.0f, 0, 255/255.0f, 255/255.0f};
CVarSetColor(cosmeticOptions["Key.WellEmblem"].cvar, { 255, 0, 188, 255});
CVarSetInteger(cosmeticOptions["Key.WellEmblem"].changedCvar, 1);
cosmeticOptions["Key.WellEmblem"].currentColor = {255/255.0f, 0, 188/255.0f, 255/255.0f};
CVarSetColor(cosmeticOptions["Key.GTGEmblem"].cvar, {255, 255, 0, 255});
CVarSetInteger(cosmeticOptions["Key.GTGEmblem"].changedCvar, 1);
cosmeticOptions["Key.GTGEmblem"].currentColor = {255/255.0f, 255/255.0f, 0, 255/255.0f};
CVarSetColor(cosmeticOptions["Key.FortEmblem"].cvar, {255, 255, 203, 255});
CVarSetInteger(cosmeticOptions["Key.FortEmblem"].changedCvar, 1);
cosmeticOptions["Key.FortEmblem"].currentColor = { 255/255.0f, 255/255.0f, 203/255.0f, 255/255.0f};
CVarSetColor(cosmeticOptions["Key.GanonsEmblem"].cvar, {255, 0, 0, 255});
CVarSetInteger(cosmeticOptions["Key.GanonsEmblem"].changedCvar, 1);
cosmeticOptions["Key.GanonsEmblem"].currentColor = {255/255.0f, 0, 0, 255/255.0f};
//CVarSetColor(cosmeticOptions["Key.ChestGameEmblem"].cvar, {255, 255, 0, 255});
//CVarSetInteger(cosmeticOptions["Key.ChestGameEmblem"].changedCvar, 1);
//cosmeticOptions["Key.ChestGameEmblem"].currentColor = {255/255.0f, 255/255.0f, 0, 255/255.0f};
}
void CosmeticsEditorWindow::ApplyDungeonBaseColors(){
CVarSetColor(cosmeticOptions["Key.ForestSmallBase"].cvar, {4, 195, 46, 255});
CVarSetInteger(cosmeticOptions["Key.ForestSmallBase"].changedCvar, 1);
cosmeticOptions["Key.ForestSmallBase"].currentColor = {4/255.0f, 195/255.0f, 46/255.0f, 255/255.0f};
CVarSetColor(cosmeticOptions["Key.FireSmallBase"].cvar, {237, 95, 95, 255});
CVarSetInteger(cosmeticOptions["Key.FireSmallBase"].changedCvar, 1);
cosmeticOptions["Key.FireSmallBase"].currentColor = {237/255.0f, 95/255.0f, 95/255.0f, 255/255.0f};
CVarSetColor(cosmeticOptions["Key.WaterSmallBase"].cvar, {85, 180, 223, 255});
CVarSetInteger(cosmeticOptions["Key.WaterSmallBase"].changedCvar, 1);
cosmeticOptions["Key.WaterSmallBase"].currentColor = {85/255.0f, 180/255.0f, 223/255.0f, 255/255.0f};
CVarSetColor(cosmeticOptions["Key.SpiritSmallBase"].cvar, {222, 158, 47, 255});
CVarSetInteger(cosmeticOptions["Key.SpiritSmallBase"].changedCvar, 1);
cosmeticOptions["Key.SpiritSmallBase"].currentColor = {222/255.0f, 158/255.0f, 47/255.0f, 255/255.0f};
CVarSetColor(cosmeticOptions["Key.ShadowSmallBase"].cvar, {126, 16, 177, 255});
CVarSetInteger(cosmeticOptions["Key.ShadowSmallBase"].changedCvar, 1);
cosmeticOptions["Key.ShadowSmallBase"].currentColor = {126/255.0f, 16/255.0f, 177/255.0f, 255/255.0f};
CVarSetColor(cosmeticOptions["Key.WellSmallBase"].cvar, {227, 110, 255, 255});
CVarSetInteger(cosmeticOptions["Key.WellSmallBase"].changedCvar, 1);
cosmeticOptions["Key.WellSmallBase"].currentColor = {227/255.0f, 110/255.0f, 255/255.0f, 255/255.0f};
CVarSetColor(cosmeticOptions["Key.GTGSmallBase"].cvar, {221, 212, 60, 255});
CVarSetInteger(cosmeticOptions["Key.GTGSmallBase"].changedCvar, 1);
cosmeticOptions["Key.GTGSmallBase"].currentColor = {221/255.0f, 212/255.0f, 60/255.0f, 255/255.0f};
CVarSetColor(cosmeticOptions["Key.FortSmallBase"].cvar, {255, 255, 255, 255});
CVarSetInteger(cosmeticOptions["Key.FortSmallBase"].changedCvar, 1);
cosmeticOptions["Key.FortSmallBase"].currentColor = {255/255.0f, 255/255.0f, 255/255.0f, 255/255.0f};
CVarSetColor(cosmeticOptions["Key.GanonsSmallBase"].cvar, {80, 80, 80, 255});
CVarSetInteger(cosmeticOptions["Key.GanonsSmallBase"].changedCvar, 1);
cosmeticOptions["Key.GanonsSmallBase"].currentColor = {80/255.0f, 80/255.0f, 80/255.0f, 255/255.0f};
CVarSetColor(cosmeticOptions["Key.GanonsBossBase"].cvar, {80, 80, 80, 255});
CVarSetInteger(cosmeticOptions["Key.GanonsBossBase"].changedCvar, 1);
cosmeticOptions["Key.GanonsBossBase"].currentColor = {80/255.0f, 80/255.0f, 80/255.0f, 255/255.0f};
//CVarSetColor(cosmeticOptions["Key.ChestGameSmallBase"].cvar, {255, 255, 0, 255});
//CVarSetInteger(cosmeticOptions["Key.ChestGameSmallBase"].changedCvar, 1);
//cosmeticOptions["Key.ChestGameSmallBase"].currentColor = {255/255.0f, 255/255.0f, 0, 255/255.0f};
// Gerudo Fortress
CVarSetColor(cosmeticOptions["Key.FortSmallBody"].cvar, { 255, 255, 255, 255 });
CVarSetInteger(cosmeticOptions["Key.FortSmallBody"].changedCvar, 1);
cosmeticOptions["Key.FortSmallBody"].currentColor = { 255 / 255.0f, 255 / 255.0f, 255 / 255.0f, 255 / 255.0f };
ResetColor(cosmeticOptions.at("Key.FortSmallEmblem"));
}
void CosmeticsEditorWindow::DrawElement() {
@ -1853,15 +1903,6 @@ void CosmeticsEditorWindow::DrawElement() {
"For example, if you have custom Link model, then the Link's Hair color option will most likely not apply."
);
if (ImGui::Button("Apply Dungeon Gem/Emblem Colors", ImVec2(ImGui::GetContentRegionAvail().x / 2, 30.0f))) {
ApplyDungeonEmblemColors();
Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame();
}
ImGui::SameLine();
if (ImGui::Button("Apply Dungeon Base Colors", ImVec2(ImGui::GetContentRegionAvail().x, 30.0f))) {
ApplyDungeonBaseColors();
Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame();
}
if (CVarGetInteger(CVAR_COSMETIC("AdvancedMode"), 0)) {
if (ImGui::Button("Lock All Advanced", ImVec2(ImGui::GetContentRegionAvail().x / 2, 30.0f))) {
for (auto& [id, cosmeticOption] : cosmeticOptions) {
@ -1950,16 +1991,40 @@ void CosmeticsEditorWindow::DrawElement() {
if (ImGui::BeginTabBar("CosmeticsContextTabBar", ImGuiTabBarFlags_NoCloseWithMiddleMouseButton)) {
if (ImGui::BeginTabItem("Link & Items")) {
UIWidgets::PaddedSeparator(true, true, 2.0f, 2.0f);
DrawCosmeticGroup(COSMETICS_GROUP_LINK);
DrawCosmeticGroup(COSMETICS_GROUP_GLOVES);
DrawCosmeticGroup(COSMETICS_GROUP_MIRRORSHIELD);
DrawCosmeticGroup(COSMETICS_GROUP_EQUIPMENT);
DrawCosmeticGroup(COSMETICS_GROUP_SWORDS);
DrawCosmeticGroup(COSMETICS_GROUP_KEY);
DrawCosmeticGroup(COSMETICS_GROUP_CONSUMABLE);
ImGui::EndTabItem();
}
if (ImGui::BeginTabItem("Keys")) {
UIWidgets::PaddedSeparator(true, true, 2.0f, 2.0f);
if (ImGui::Button("Give all keys dungeon-specific colors", ImVec2(300.0f, 30.0f))) {
ApplyDungeonKeyColors();
Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame();
}
UIWidgets::PaddedSeparator(true, true, 2.0f, 2.0f);
DrawCosmeticGroup(COSMETICS_GROUP_KEYRING);
DrawCosmeticGroup(COSMETICS_GROUP_SMALL_KEYS);
DrawCosmeticGroup(COSMETICS_GROUP_BOSS_KEYS);
ImGui::EndTabItem();
}
if (ImGui::BeginTabItem("Effects")) {
UIWidgets::PaddedSeparator(true, true, 2.0f, 2.0f);
DrawCosmeticGroup(COSMETICS_GROUP_MAGIC);
DrawCosmeticGroup(COSMETICS_GROUP_ARROWS);
DrawCosmeticGroup(COSMETICS_GROUP_SPIN_ATTACK);
@ -1973,9 +2038,15 @@ void CosmeticsEditorWindow::DrawElement() {
CVarClear(CVAR_COSMETIC("Trails.Duration.Changed"));
Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame();
}
UIWidgets::PaddedSeparator(true, true, 2.0f, 2.0f);
ImGui::EndTabItem();
}
if (ImGui::BeginTabItem("World & NPCs")) {
UIWidgets::PaddedSeparator(true, true, 2.0f, 2.0f);
DrawCosmeticGroup(COSMETICS_GROUP_WORLD);
DrawCosmeticGroup(COSMETICS_GROUP_NAVI);
DrawCosmeticGroup(COSMETICS_GROUP_IVAN);
@ -1987,6 +2058,9 @@ void CosmeticsEditorWindow::DrawElement() {
ImGui::EndTabItem();
}
if (ImGui::BeginTabItem("HUD")) {
UIWidgets::PaddedSeparator(true, true, 2.0f, 2.0f);
DrawCosmeticGroup(COSMETICS_GROUP_HUD);
DrawCosmeticGroup(COSMETICS_GROUP_TITLE);
ImGui::EndTabItem();

View File

@ -9,7 +9,9 @@ typedef enum {
COSMETICS_GROUP_SWORDS,
COSMETICS_GROUP_GLOVES,
COSMETICS_GROUP_EQUIPMENT,
COSMETICS_GROUP_KEY,
COSMETICS_GROUP_KEYRING,
COSMETICS_GROUP_SMALL_KEYS,
COSMETICS_GROUP_BOSS_KEYS,
COSMETICS_GROUP_CONSUMABLE,
COSMETICS_GROUP_HUD,
COSMETICS_GROUP_KALEIDO,
@ -63,8 +65,7 @@ class CosmeticsEditorWindow : public Ship::GuiWindow {
void InitElement() override;
void DrawElement() override;
void ApplyDungeonEmblemColors();
void ApplyDungeonBaseColors();
void ApplyDungeonKeyColors();
void UpdateElement() override {};
};
#endif //__cplusplus

View File

@ -1297,7 +1297,9 @@ static constexpr std::array<std::pair<const char*, CosmeticGroup>, COSMETICS_GRO
{"swords", COSMETICS_GROUP_SWORDS},
{"gloves", COSMETICS_GROUP_GLOVES},
{"equipment", COSMETICS_GROUP_EQUIPMENT},
{"key", COSMETICS_GROUP_KEY},
{"keyring", COSMETICS_GROUP_KEYRING},
{"small_keys", COSMETICS_GROUP_SMALL_KEYS },
{"boss_keys", COSMETICS_GROUP_BOSS_KEYS },
{"consumable", COSMETICS_GROUP_CONSUMABLE},
{"hud", COSMETICS_GROUP_HUD},
{"kaleido", COSMETICS_GROUP_KALEIDO},

View File

@ -38,32 +38,45 @@ extern PlayState* gPlayState;
extern SaveContext gSaveContext;
}
const char* SmallBaseCvarValue[10] = {
CVAR_COSMETIC("Key.ForestSmallBase.Value"),
CVAR_COSMETIC("Key.FireSmallBase.Value"),
CVAR_COSMETIC("Key.WaterSmallBase.Value"),
CVAR_COSMETIC("Key.SpiritSmallBase.Value"),
CVAR_COSMETIC("Key.ShadowSmallBase.Value"),
CVAR_COSMETIC("Key.WellSmallBase.Value"),
CVAR_COSMETIC("Key.GTGSmallBase.Value"),
CVAR_COSMETIC("Key.FortSmallBase.Value"),
CVAR_COSMETIC("Key.GanonsSmallBase.Value"),
CVAR_COSMETIC("Key.ChestGameSmallBase.Value"),
const char* SmallBodyCvarValue[10] = {
CVAR_COSMETIC("Key.ForestSmallBody.Value"),
CVAR_COSMETIC("Key.FireSmallBody.Value"),
CVAR_COSMETIC("Key.WaterSmallBody.Value"),
CVAR_COSMETIC("Key.SpiritSmallBody.Value"),
CVAR_COSMETIC("Key.ShadowSmallBody.Value"),
CVAR_COSMETIC("Key.WellSmallBody.Value"),
CVAR_COSMETIC("Key.GTGSmallBody.Value"),
CVAR_COSMETIC("Key.FortSmallBody.Value"),
CVAR_COSMETIC("Key.GanonsSmallBody.Value"),
CVAR_COSMETIC("Key.ChestGameSmallBody.Value"),
};
const char* SmallEmblemCvarValue[10] = {
CVAR_COSMETIC("Key.ForestEmblem.Value"),
CVAR_COSMETIC("Key.FireEmblem.Value"),
CVAR_COSMETIC("Key.WaterEmblem.Value"),
CVAR_COSMETIC("Key.SpiritEmblem.Value"),
CVAR_COSMETIC("Key.ShadowEmblem.Value"),
CVAR_COSMETIC("Key.WellEmblem.Value"),
CVAR_COSMETIC("Key.GTGEmblem.Value"),
CVAR_COSMETIC("Key.FortEmblem.Value"),
CVAR_COSMETIC("Key.GanonsEmblem.Value"),
CVAR_COSMETIC("Key.ForestSmallEmblem.Value"),
CVAR_COSMETIC("Key.FireSmallEmblem.Value"),
CVAR_COSMETIC("Key.WaterSmallEmblem.Value"),
CVAR_COSMETIC("Key.SpiritSmallEmblem.Value"),
CVAR_COSMETIC("Key.ShadowSmallEmblem.Value"),
CVAR_COSMETIC("Key.WellSmallEmblem.Value"),
CVAR_COSMETIC("Key.GTGSmallEmblem.Value"),
CVAR_COSMETIC("Key.FortSmallEmblem.Value"),
CVAR_COSMETIC("Key.GanonsSmallEmblem.Value"),
CVAR_COSMETIC("Key.ChestGameEmblem.Value"),
};
Color_RGB8 SmallEmblemDefaultValue[10] = {
{ 4, 195, 46 }, // Forest
{ 237, 95, 95 }, // Fire
{ 85, 180, 223 }, // Water
{ 222, 158, 47 }, // Spirit
{ 126, 16, 177 }, // Shadow
{ 227, 110, 255 }, // Well
{ 221, 212, 60 }, // GTG
{ 255, 255, 255 }, // Fortress
{ 80, 80, 80 }, // Ganons
{ 255, 255, 255 }, // Chest Game
};
extern "C" u8 Randomizer_GetSettingValue(RandomizerSettingKey randoSettingKey);
extern "C" void Randomizer_DrawSmallKey(PlayState* play, GetItemEntry* getItemEntry) {
@ -91,7 +104,7 @@ extern "C" void Randomizer_DrawSmallKey(PlayState* play, GetItemEntry* getItemEn
G_MTX_MODELVIEW | G_MTX_LOAD);
Color_RGB8 keyColor = { 255, 255, 255 };
keyColor = CVarGetColor24(SmallBaseCvarValue[slot], keyColor);
keyColor = CVarGetColor24(SmallBodyCvarValue[slot], keyColor);
if (isCustomKeysEnabled) {
gDPSetEnvColor(POLY_OPA_DISP++, keyColor.r, keyColor.g, keyColor.b, 255);
@ -99,7 +112,7 @@ extern "C" void Randomizer_DrawSmallKey(PlayState* play, GetItemEntry* getItemEn
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
Color_RGB8 emblemColor = { 255, 0, 0 };
Color_RGB8 emblemColor = SmallEmblemDefaultValue[slot];
emblemColor = CVarGetColor24(SmallEmblemCvarValue[slot], emblemColor);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__),
@ -166,12 +179,12 @@ extern "C" void Randomizer_DrawBossKey(PlayState* play, GetItemEntry* getItemEnt
s16 slot = getItemEntry->getItemId - RG_FOREST_TEMPLE_BOSS_KEY;
std::string CvarValue[6] = {
"gCosmetics.Key.Forest",
"gCosmetics.Key.Fire",
"gCosmetics.Key.Water",
"gCosmetics.Key.Spirit",
"gCosmetics.Key.Shadow",
"gCosmetics.Key.Ganons",
"gCosmetics.Key.ForestBoss",
"gCosmetics.Key.FireBoss",
"gCosmetics.Key.WaterBoss",
"gCosmetics.Key.SpiritBoss",
"gCosmetics.Key.ShadowBoss",
"gCosmetics.Key.GanonsBoss",
};
Gfx* CustomdLists[] = {
@ -192,13 +205,13 @@ extern "C" void Randomizer_DrawBossKey(PlayState* play, GetItemEntry* getItemEnt
Color_RGB8 keyColor = { 255, 255, 0 };
//Supposed to use CVAR_COSMETIC but I can't figure out the syntax
keyColor = CVarGetColor24((CvarValue[slot] + "BossBase.Value").c_str(), keyColor);
keyColor = CVarGetColor24((CvarValue[slot] + "Body.Value").c_str(), keyColor);
if (isCustomKeysEnabled){
gDPSetEnvColor(POLY_OPA_DISP++, keyColor.r, keyColor.g, keyColor.b, 255);
gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gBossKeyCustomDL);
} else {
if (CVarGetInteger((CvarValue[slot] + "BossBase.Changed").c_str(), false)){
if (CVarGetInteger((CvarValue[slot] + "Body.Changed").c_str(), false)){
gDPSetGrayscaleColor(POLY_OPA_DISP++, keyColor.r, keyColor.g, keyColor.b, 255);
gSPGrayscale(POLY_OPA_DISP++, true);
gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gGiBossKeyDL);
@ -213,15 +226,15 @@ extern "C" void Randomizer_DrawBossKey(PlayState* play, GetItemEntry* getItemEnt
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__),
G_MTX_MODELVIEW | G_MTX_LOAD);
Color_RGB8 emblemColor = { 255, 0, 0 };
emblemColor = CVarGetColor24((CvarValue[slot] + "Emblem.Value").c_str(), emblemColor);
Color_RGB8 gemColor = { 255, 0, 0 };
gemColor = CVarGetColor24((CvarValue[slot] + "Gem.Value").c_str(), gemColor);
if (isCustomKeysEnabled){
gDPSetEnvColor(POLY_XLU_DISP++, emblemColor.r, emblemColor.g, emblemColor.b, 255);
gDPSetEnvColor(POLY_XLU_DISP++, gemColor.r, gemColor.g, gemColor.b, 255);
gSPDisplayList(POLY_XLU_DISP++, CustomdLists[slot]);
} else {
if (CVarGetInteger((CvarValue[slot] + "Emblem.Changed").c_str(), false)){
gDPSetGrayscaleColor(POLY_XLU_DISP++, emblemColor.r, emblemColor.g, emblemColor.b, 255);
if (CVarGetInteger((CvarValue[slot] + "Gem.Changed").c_str(), false)){
gDPSetGrayscaleColor(POLY_XLU_DISP++, gemColor.r, gemColor.g, gemColor.b, 255);
gSPGrayscale(POLY_XLU_DISP++, true);
gSPDisplayList(POLY_XLU_DISP++, (Gfx*)gGiBossKeyGemDL);
gSPGrayscale(POLY_XLU_DISP++, false);
@ -296,7 +309,7 @@ extern "C" void Randomizer_DrawKeyRing(PlayState* play, GetItemEntry* getItemEnt
Gfx_SetupDL_25Opa(play->state.gfxCtx);
Color_RGB8 keyColor = { 255, 255, 255 };
keyColor = CVarGetColor24(SmallBaseCvarValue[slot], keyColor);
keyColor = CVarGetColor24(SmallBodyCvarValue[slot], keyColor);
if (isCustomKeysEnabled) {
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__),
@ -314,7 +327,7 @@ extern "C" void Randomizer_DrawKeyRing(PlayState* play, GetItemEntry* getItemEnt
gDPSetEnvColor(POLY_OPA_DISP++, ringColor.r, ringColor.g, ringColor.b, 255);
gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gKeyringRingDL);
Color_RGB8 emblemColor = { 255, 0, 0 };
Color_RGB8 emblemColor = SmallEmblemDefaultValue[slot];
emblemColor = CVarGetColor24(SmallEmblemCvarValue[slot], emblemColor);
Gfx_SetupDL_25Opa(play->state.gfxCtx);