@@ -4,7 +4,6 @@
|
|||||||
#include <map>
|
#include <map>
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <sstream>
|
|
||||||
#include <libultraship/libultraship.h>
|
#include <libultraship/libultraship.h>
|
||||||
#include <functions.h>
|
#include <functions.h>
|
||||||
#include "../randomizer/3drando/random.hpp"
|
#include "../randomizer/3drando/random.hpp"
|
||||||
|
|||||||
@@ -5,12 +5,11 @@
|
|||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <libultraship/bridge.h>
|
#include <libultraship/bridge.h>
|
||||||
#include <random>
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <algorithm>
|
|
||||||
#include <libultraship/libultraship.h>
|
#include <libultraship/libultraship.h>
|
||||||
|
|
||||||
#include "soh/SohGui/UIWidgets.hpp"
|
#include "soh/SohGui/UIWidgets.hpp"
|
||||||
|
#include "soh/SohGui/SohMenu.h"
|
||||||
#include "soh/SohGui/SohGui.hpp"
|
#include "soh/SohGui/SohGui.hpp"
|
||||||
#include "soh/OTRGlobals.h"
|
#include "soh/OTRGlobals.h"
|
||||||
#include "soh/ResourceManagerHelpers.h"
|
#include "soh/ResourceManagerHelpers.h"
|
||||||
@@ -22,7 +21,6 @@ extern "C" {
|
|||||||
#include "objects/object_link_boy/object_link_boy.h"
|
#include "objects/object_link_boy/object_link_boy.h"
|
||||||
#include "objects/object_link_child/object_link_child.h"
|
#include "objects/object_link_child/object_link_child.h"
|
||||||
#include "objects/object_gi_shield_3/object_gi_shield_3.h"
|
#include "objects/object_gi_shield_3/object_gi_shield_3.h"
|
||||||
#include "objects/object_gi_heart/object_gi_heart.h"
|
|
||||||
#include "objects/object_gi_bow/object_gi_bow.h"
|
#include "objects/object_gi_bow/object_gi_bow.h"
|
||||||
#include "objects/object_gi_bracelet/object_gi_bracelet.h"
|
#include "objects/object_gi_bracelet/object_gi_bracelet.h"
|
||||||
#include "objects/object_gi_rupy/object_gi_rupy.h"
|
#include "objects/object_gi_rupy/object_gi_rupy.h"
|
||||||
@@ -57,6 +55,12 @@ void ResourceMgr_UnpatchGfxByName(const char* path, const char* patchName);
|
|||||||
u8 Randomizer_GetSettingValue(RandomizerSettingKey randoSettingKey);
|
u8 Randomizer_GetSettingValue(RandomizerSettingKey randoSettingKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static WidgetInfo goronNeck;
|
||||||
|
|
||||||
|
namespace SohGui {
|
||||||
|
extern std::shared_ptr<SohMenu> mSohMenu;
|
||||||
|
}
|
||||||
|
|
||||||
#define PATCH_GFX(path, name, cvar, index, instruction) \
|
#define PATCH_GFX(path, name, cvar, index, instruction) \
|
||||||
if (CVarGetInteger(cvar, 0)) { \
|
if (CVarGetInteger(cvar, 0)) { \
|
||||||
ResourceMgr_PatchGfxByName(path, name, index, instruction); \
|
ResourceMgr_PatchGfxByName(path, name, index, instruction); \
|
||||||
@@ -1964,15 +1968,7 @@ void DrawSillyTab() {
|
|||||||
|
|
||||||
UIWidgets::Separator(true, true, 2.0f, 2.0f);
|
UIWidgets::Separator(true, true, 2.0f, 2.0f);
|
||||||
|
|
||||||
UIWidgets::CVarSliderFloat("Goron Neck Length", CVAR_COSMETIC("Goron.NeckLength"),
|
SohGui::mSohMenu->MenuDrawItem(goronNeck, ImGui::GetContentRegionAvail().x, THEME_COLOR);
|
||||||
UIWidgets::FloatSliderOptions()
|
|
||||||
.Format("%.0f")
|
|
||||||
.Min(0.0f)
|
|
||||||
.Max(5000.0f)
|
|
||||||
.DefaultValue(0.0f)
|
|
||||||
.Step(10.0f)
|
|
||||||
.Size(ImVec2(300.0f, 0.0f))
|
|
||||||
.Color(THEME_COLOR));
|
|
||||||
Reset_Option_Single("Reset##Goron_NeckLength", CVAR_COSMETIC("Goron.NeckLength"));
|
Reset_Option_Single("Reset##Goron_NeckLength", CVAR_COSMETIC("Goron.NeckLength"));
|
||||||
|
|
||||||
UIWidgets::Separator(true, true, 2.0f, 2.0f);
|
UIWidgets::Separator(true, true, 2.0f, 2.0f);
|
||||||
@@ -2586,22 +2582,6 @@ void RegisterOnGameFrameUpdateHook() {
|
|||||||
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnGameFrameUpdate>([]() { CosmeticsUpdateTick(); });
|
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnGameFrameUpdate>([]() { CosmeticsUpdateTick(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cosmetics_RegisterOnSceneInitHook() {
|
|
||||||
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnSceneInit>([](int16_t sceneNum) {
|
|
||||||
if (CVarGetInteger(CVAR_COSMETIC("RandomizeAllOnNewScene"), 0)) {
|
|
||||||
CosmeticsEditor_RandomizeAll();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void CosmeticsEditorRegisterOnGenerationCompletionHook() {
|
|
||||||
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnGenerationCompletion>([]() {
|
|
||||||
if (CVarGetInteger(CVAR_COSMETIC("RandomizeAllOnRandoGen"), 0)) {
|
|
||||||
CosmeticsEditor_RandomizeAll();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void CosmeticsEditorWindow::InitElement() {
|
void CosmeticsEditorWindow::InitElement() {
|
||||||
// Convert the `current color` into the format that the ImGui color picker expects
|
// Convert the `current color` into the format that the ImGui color picker expects
|
||||||
for (auto& [id, cosmeticOption] : cosmeticOptions) {
|
for (auto& [id, cosmeticOption] : cosmeticOptions) {
|
||||||
@@ -2617,11 +2597,6 @@ void CosmeticsEditorWindow::InitElement() {
|
|||||||
Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame();
|
Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame();
|
||||||
ApplyOrResetCustomGfxPatches();
|
ApplyOrResetCustomGfxPatches();
|
||||||
ApplyAuthenticGfxPatches();
|
ApplyAuthenticGfxPatches();
|
||||||
|
|
||||||
RegisterOnLoadGameHook();
|
|
||||||
RegisterOnGameFrameUpdateHook();
|
|
||||||
Cosmetics_RegisterOnSceneInitHook();
|
|
||||||
CosmeticsEditorRegisterOnGenerationCompletionHook();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CosmeticsEditor_RandomizeAll() {
|
void CosmeticsEditor_RandomizeAll() {
|
||||||
@@ -2670,3 +2645,33 @@ void CosmeticsEditor_ResetGroup(CosmeticGroup group) {
|
|||||||
Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame();
|
Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame();
|
||||||
ApplyOrResetCustomGfxPatches();
|
ApplyOrResetCustomGfxPatches();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RegisterCosmeticHooks() {
|
||||||
|
COND_HOOK(OnSceneInit, CVarGetInteger(CVAR_COSMETIC("RandomizeAllOnNewScene"), 0),
|
||||||
|
[](s16 sceneNum) { CosmeticsEditor_RandomizeAll(); });
|
||||||
|
|
||||||
|
COND_HOOK(OnGenerationCompletion, CVarGetInteger(CVAR_COSMETIC("RandomizeAllOnRandoGen"), 0),
|
||||||
|
[]() { CosmeticsEditor_RandomizeAll(); });
|
||||||
|
|
||||||
|
COND_HOOK(OnGameFrameUpdate, true, CosmeticsUpdateTick);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RegisterCosmeticWidgets() {
|
||||||
|
goronNeck = { .name = "Goron Neck Length", .type = WidgetType::WIDGET_CVAR_SLIDER_FLOAT };
|
||||||
|
goronNeck.CVar(CVAR_COSMETIC("Goron.NeckLength"))
|
||||||
|
.Options(UIWidgets::FloatSliderOptions()
|
||||||
|
.Format("%.0f")
|
||||||
|
.Min(0.0f)
|
||||||
|
.Max(5000.0f)
|
||||||
|
.DefaultValue(0.0f)
|
||||||
|
.Step(10.0f)
|
||||||
|
.Size(ImVec2(300.0f, 0.0f))
|
||||||
|
.Color(THEME_COLOR));
|
||||||
|
SohGui::mSohMenu->AddSearchWidget({ goronNeck, "Enhancements", "Cosmetics Editor", "Silly" });
|
||||||
|
}
|
||||||
|
|
||||||
|
static RegisterShipInitFunc initFunc(RegisterCosmeticHooks, {
|
||||||
|
CVAR_COSMETIC("RandomizeAllOnNewScene"),
|
||||||
|
CVAR_COSMETIC("RandomizeAllOnRandoGen"),
|
||||||
|
});
|
||||||
|
static RegisterMenuInitFunc menuInitFunc(RegisterCosmeticWidgets);
|
||||||
|
|||||||
Reference in New Issue
Block a user