mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-11-10 11:35:19 -05:00
Merge pull request #879 from briaguya-ai/merge-zhora-into-rando-next
zhora -> rando next
This commit is contained in:
commit
f2b07ac3a9
12
.gitignore
vendored
12
.gitignore
vendored
@ -405,4 +405,14 @@ tags
|
|||||||
oot.otr
|
oot.otr
|
||||||
*.sav
|
*.sav
|
||||||
shipofharkinian.ini
|
shipofharkinian.ini
|
||||||
shipofharkinian.json
|
shipofharkinian.json
|
||||||
|
|
||||||
|
# Xcode
|
||||||
|
xcuserdata/
|
||||||
|
*.xcconfig
|
||||||
|
*.xcodeproj/*
|
||||||
|
!*.xcodeproj/project.pbxproj
|
||||||
|
!*.xcodeproj/xcshareddata/
|
||||||
|
!*.xcworkspace/contents.xcworkspacedata
|
||||||
|
/*.gcno
|
||||||
|
**/xcshareddata/WorkspaceSettings.xcsettings
|
||||||
|
@ -5,6 +5,7 @@ import shutil
|
|||||||
from rom_info import Z64Rom
|
from rom_info import Z64Rom
|
||||||
import rom_chooser
|
import rom_chooser
|
||||||
import struct
|
import struct
|
||||||
|
import subprocess
|
||||||
|
|
||||||
def BuildOTR(xmlPath, rom):
|
def BuildOTR(xmlPath, rom):
|
||||||
shutil.copytree("assets", "Extract/assets")
|
shutil.copytree("assets", "Extract/assets")
|
||||||
@ -13,11 +14,13 @@ def BuildOTR(xmlPath, rom):
|
|||||||
with open("Extract/version", "wb") as f:
|
with open("Extract/version", "wb") as f:
|
||||||
f.write(struct.pack('<L', checksum))
|
f.write(struct.pack('<L', checksum))
|
||||||
|
|
||||||
execStr = "x64\\Release\\ZAPD.exe" if sys.platform == "win32" else "../ZAPDTR/ZAPD.out"
|
zapd_exe = "x64\\Release\\ZAPD.exe" if sys.platform == "win32" else "../ZAPDTR/ZAPD.out"
|
||||||
execStr += " ed -i %s -b %s -fl CFG/filelists -o placeholder -osf placeholder -gsf 1 -rconf CFG/Config.xml -se OTR" % (xmlPath, rom)
|
exec_cmd = [zapd_exe, "ed", "-i", xmlPath, "-b", rom, "-fl", "CFG/filelists",
|
||||||
|
"-o", "placeholder", "-osf", "placeholder", "-gsf", "1",
|
||||||
|
"-rconf", "CFG/Config.xml", "-se", "OTR"]
|
||||||
|
|
||||||
print(execStr)
|
print(exec_cmd)
|
||||||
exitValue = os.system(execStr)
|
exitValue = subprocess.call(exec_cmd)
|
||||||
if exitValue != 0:
|
if exitValue != 0:
|
||||||
print("\n")
|
print("\n")
|
||||||
print("Error when building the OTR file...", file=os.sys.stderr)
|
print("Error when building the OTR file...", file=os.sys.stderr)
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
#include "Window.h"
|
#include "Window.h"
|
||||||
#include "Controller.h"
|
#include "Controller.h"
|
||||||
#include "DisconnectedController.h"
|
#include "VirtualController.h"
|
||||||
#include "KeyboardController.h"
|
#include "KeyboardController.h"
|
||||||
#include "SDLController.h"
|
#include "SDLController.h"
|
||||||
#include <Utils/StringHelper.h>
|
#include <Utils/StringHelper.h>
|
||||||
@ -27,8 +27,9 @@ void Ship::ControlDeck::ScanPhysicalDevices() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
physicalDevices.push_back(std::make_shared<VirtualController>("Auto", "Auto", true));
|
||||||
physicalDevices.push_back(std::make_shared<KeyboardController>());
|
physicalDevices.push_back(std::make_shared<KeyboardController>());
|
||||||
physicalDevices.push_back(std::make_shared<DisconnectedController>());
|
physicalDevices.push_back(std::make_shared<VirtualController>("Disconnected", "None", false));
|
||||||
|
|
||||||
for (const auto& device : physicalDevices) {
|
for (const auto& device : physicalDevices) {
|
||||||
for (int i = 0; i < MAXCONTROLLERS; i++) {
|
for (int i = 0; i < MAXCONTROLLERS; i++) {
|
||||||
@ -51,7 +52,14 @@ void Ship::ControlDeck::SetPhysicalDevice(int slot, int deviceSlot) {
|
|||||||
|
|
||||||
void Ship::ControlDeck::WriteToPad(OSContPad* pad) const {
|
void Ship::ControlDeck::WriteToPad(OSContPad* pad) const {
|
||||||
for (size_t i = 0; i < virtualDevices.size(); i++) {
|
for (size_t i = 0; i < virtualDevices.size(); i++) {
|
||||||
physicalDevices[virtualDevices[i]]->Read(&pad[i], i);
|
const std::shared_ptr<Controller> backend = physicalDevices[virtualDevices[i]];
|
||||||
|
if (backend->GetGuid() == "Auto") {
|
||||||
|
for (const auto& device : physicalDevices) {
|
||||||
|
device->Read(&pad[i], i);
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
backend->Read(&pad[i], i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -844,6 +844,8 @@ namespace SohImGui {
|
|||||||
EnhancementCheckbox("D-pad Support for Browsing Shop Items", "gDpadShop");
|
EnhancementCheckbox("D-pad Support for Browsing Shop Items", "gDpadShop");
|
||||||
EnhancementCheckbox("D-pad as Equip Items", "gDpadEquips");
|
EnhancementCheckbox("D-pad as Equip Items", "gDpadEquips");
|
||||||
Tooltip("Allows the D-pad to be used as extra C buttons");
|
Tooltip("Allows the D-pad to be used as extra C buttons");
|
||||||
|
EnhancementCheckbox("Answer Navi Prompt with L Button", "gNaviOnL");
|
||||||
|
Tooltip("Speak to Navi with L but enter first-person camera with C-Up");
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
|
|
||||||
EnhancementCheckbox("Show Inputs", "gInputEnabled");
|
EnhancementCheckbox("Show Inputs", "gInputEnabled");
|
||||||
@ -973,7 +975,8 @@ namespace SohImGui {
|
|||||||
Tooltip("The default response to Kaepora Gaebora is\nalways that you understood what he said");
|
Tooltip("The default response to Kaepora Gaebora is\nalways that you understood what he said");
|
||||||
EnhancementCheckbox("Fast Ocarina Playback", "gFastOcarinaPlayback");
|
EnhancementCheckbox("Fast Ocarina Playback", "gFastOcarinaPlayback");
|
||||||
Tooltip("Skip the part where the Ocarina playback is called when you play\na song");
|
Tooltip("Skip the part where the Ocarina playback is called when you play\na song");
|
||||||
|
EnhancementCheckbox("Instant Putaway", "gInstantPutaway");
|
||||||
|
Tooltip("Allow Link to put items away without having to wait around");
|
||||||
ImGui::EndMenu();
|
ImGui::EndMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1192,6 +1195,14 @@ namespace SohImGui {
|
|||||||
Tooltip("Correctly centers the Navi text prompt on the HUD's C-Up button");
|
Tooltip("Correctly centers the Navi text prompt on the HUD's C-Up button");
|
||||||
EnhancementCheckbox("Fix Anubis fireballs", "gAnubisFix");
|
EnhancementCheckbox("Fix Anubis fireballs", "gAnubisFix");
|
||||||
Tooltip("Make Anubis fireballs do fire damage when reflected\nback at them with the Mirror Shield");
|
Tooltip("Make Anubis fireballs do fire damage when reflected\nback at them with the Mirror Shield");
|
||||||
|
EnhancementCheckbox("Fix Megaton Hammer crouch stab", "gCrouchStabHammerFix");
|
||||||
|
Tooltip("Make the Megaton Hammer's crouch stab able to destroy\nrocks without first swinging it normally");
|
||||||
|
if (CVar_GetS32("gCrouchStabHammerFix", 0) == 0) {
|
||||||
|
CVar_SetS32("gCrouchStabFix", 0);
|
||||||
|
} else {
|
||||||
|
EnhancementCheckbox("Remove power crouch stab", "gCrouchStabFix");
|
||||||
|
Tooltip("Make crouch stabbing always do the same damage as a regular slash");
|
||||||
|
}
|
||||||
|
|
||||||
ImGui::EndMenu();
|
ImGui::EndMenu();
|
||||||
}
|
}
|
||||||
@ -1239,6 +1250,15 @@ namespace SohImGui {
|
|||||||
|
|
||||||
if (ImGui::SliderInt("##FPSInterpolation", &val, 20, 250, "", ImGuiSliderFlags_AlwaysClamp))
|
if (ImGui::SliderInt("##FPSInterpolation", &val, 20, 250, "", ImGuiSliderFlags_AlwaysClamp))
|
||||||
{
|
{
|
||||||
|
if (val > 250)
|
||||||
|
{
|
||||||
|
val = 250;
|
||||||
|
}
|
||||||
|
else if (val < 20)
|
||||||
|
{
|
||||||
|
val = 20;
|
||||||
|
}
|
||||||
|
|
||||||
CVar_SetS32(fps_cvar, val);
|
CVar_SetS32(fps_cvar, val);
|
||||||
needs_save = true;
|
needs_save = true;
|
||||||
}
|
}
|
||||||
@ -1335,10 +1355,20 @@ namespace SohImGui {
|
|||||||
EnhancementCheckbox("OoT Debug Mode", "gDebugEnabled");
|
EnhancementCheckbox("OoT Debug Mode", "gDebugEnabled");
|
||||||
Tooltip("Enables Debug Mode, allowing you to select maps with L + R + Z, noclip with L + D-pad Right,\nand open the debug menu with L on the pause screen");
|
Tooltip("Enables Debug Mode, allowing you to select maps with L + R + Z, noclip with L + D-pad Right,\nand open the debug menu with L on the pause screen");
|
||||||
EnhancementCheckbox("Fast File Select", "gSkipLogoTitle");
|
EnhancementCheckbox("Fast File Select", "gSkipLogoTitle");
|
||||||
Tooltip("Load the game to the selected slot below upon launch\nUse slot number 4 to load directly into the game's internal Map Select\n(Does not require the Debug Menu, but you will be unable to save there\nYou can also load the Map Select with OoT Debug Mode + slot 0)\nWith slot 0 you can directly go to the File Select menu\nAttention: loading an empty save file will result in a crash");
|
Tooltip("Load the game to the selected menu or file\n\"Zelda Map Select\" require debug mode else you will fallback to File choose menu\nUsing a file number that don't have save will create a save file only\nif you toggle on \"Create a new save if none ?\" else it will bring you to the\nFile choose menu");
|
||||||
if (CVar_GetS32("gSkipLogoTitle", 0)) {
|
if (CVar_GetS32("gSkipLogoTitle", 0)) {
|
||||||
EnhancementSliderInt("Loading %d", "##SaveFileID", "gSaveFileID", 0, 4, "");
|
const char* FastFileSelect[5] = {
|
||||||
}
|
"File N.1",
|
||||||
|
"File N.2",
|
||||||
|
"File N.3",
|
||||||
|
"File select",
|
||||||
|
"Zelda Map Select (require OoT Debug Mode)"
|
||||||
|
};
|
||||||
|
ImGui::Text("Loading :");
|
||||||
|
EnhancementCombobox("gSaveFileID", FastFileSelect, 5, 0);
|
||||||
|
EnhancementCheckbox("Create a new save if none", "gCreateNewSave");
|
||||||
|
Tooltip("Enable the creation of a new save file\nif none exist in the File number selected\nNo file name will be assigned please do in Save editor once you see the first text\nelse your save file name will be named \"00000000\"\nIf disabled you will fall back in File select menu");
|
||||||
|
};
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
EnhancementCheckbox("Stats", "gStatsEnabled");
|
EnhancementCheckbox("Stats", "gStatsEnabled");
|
||||||
Tooltip("Shows the stats window, with your FPS and frametimes,\nand the OS you're playing on");
|
Tooltip("Shows the stats window, with your FPS and frametimes,\nand the OS you're playing on");
|
||||||
|
@ -26,7 +26,7 @@ namespace Ship {
|
|||||||
|
|
||||||
float size = 40;
|
float size = 40;
|
||||||
bool readingMode = BtnReading == n64Btn;
|
bool readingMode = BtnReading == n64Btn;
|
||||||
bool disabled = BtnReading != -1 && !readingMode || !backend->Connected();
|
bool disabled = (BtnReading != -1 && !readingMode) || !backend->Connected() || backend->GetGuid() == "Auto";
|
||||||
ImVec2 len = ImGui::CalcTextSize(label);
|
ImVec2 len = ImGui::CalcTextSize(label);
|
||||||
ImVec2 pos = ImGui::GetCursorPos();
|
ImVec2 pos = ImGui::GetCursorPos();
|
||||||
ImGui::SetCursorPosY(pos.y + len.y / 4);
|
ImGui::SetCursorPosY(pos.y + len.y / 4);
|
||||||
@ -90,7 +90,7 @@ namespace Ship {
|
|||||||
std::shared_ptr<Controller> Backend = devices[vDevices[CurrentPort]];
|
std::shared_ptr<Controller> Backend = devices[vDevices[CurrentPort]];
|
||||||
DeviceProfile& profile =Backend->profiles[CurrentPort];
|
DeviceProfile& profile =Backend->profiles[CurrentPort];
|
||||||
float sensitivity = profile.Thresholds[SENSITIVITY];
|
float sensitivity = profile.Thresholds[SENSITIVITY];
|
||||||
bool IsKeyboard = Backend->GetGuid() == "Keyboard" || !Backend->Connected();
|
bool IsKeyboard = Backend->GetGuid() == "Keyboard" || Backend->GetGuid() == "Auto" || !Backend->Connected();
|
||||||
const char* ControllerName = Backend->GetControllerName();
|
const char* ControllerName = Backend->GetControllerName();
|
||||||
|
|
||||||
if (ControllerName != nullptr && ImGui::BeginCombo("##ControllerEntries", ControllerName)) {
|
if (ControllerName != nullptr && ImGui::BeginCombo("##ControllerEntries", ControllerName)) {
|
||||||
|
@ -4,18 +4,20 @@
|
|||||||
|
|
||||||
#include "Controller.h"
|
#include "Controller.h"
|
||||||
|
|
||||||
class DisconnectedController final : public Ship::Controller {
|
class VirtualController final : public Ship::Controller {
|
||||||
public:
|
public:
|
||||||
DisconnectedController() {
|
VirtualController(const std::string& CUID, const std::string& KeyName, bool Connected) {
|
||||||
GUID = "Disconnected";
|
GUID = CUID;
|
||||||
|
isConnected = Connected;
|
||||||
|
ButtonName = KeyName;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::map<std::vector<std::string>, int32_t> ReadButtonPress();
|
std::map<std::vector<std::string>, int32_t> ReadButtonPress();
|
||||||
void ReadFromSource(int32_t slot) override {}
|
void ReadFromSource(int32_t slot) override {}
|
||||||
const char* GetControllerName() override { return "Disconnected"; }
|
const char* GetControllerName() override { return GUID.c_str(); }
|
||||||
const char* GetButtonName(int slot, int n64Button) override { return "None"; }
|
const char* GetButtonName(int slot, int n64Button) override { return ButtonName.c_str(); }
|
||||||
void WriteToSource(int32_t slot, ControllerCallback* controller) override { }
|
void WriteToSource(int32_t slot, ControllerCallback* controller) override { }
|
||||||
bool Connected() const override { return false; }
|
bool Connected() const override { return isConnected; }
|
||||||
bool CanRumble() const override { return false; }
|
bool CanRumble() const override { return false; }
|
||||||
bool CanGyro() const override { return false; }
|
bool CanGyro() const override { return false; }
|
||||||
|
|
||||||
@ -25,6 +27,8 @@ public:
|
|||||||
std::optional<std::string> GetPadConfSection() { return "Unk"; }
|
std::optional<std::string> GetPadConfSection() { return "Unk"; }
|
||||||
void CreateDefaultBinding(int32_t slot) override {}
|
void CreateDefaultBinding(int32_t slot) override {}
|
||||||
protected:
|
protected:
|
||||||
|
std::string ButtonName;
|
||||||
|
bool isConnected = false;
|
||||||
std::string GetControllerType() { return "Unk"; }
|
std::string GetControllerType() { return "Unk"; }
|
||||||
std::string GetConfSection() { return "Unk"; }
|
std::string GetConfSection() { return "Unk"; }
|
||||||
std::string GetBindingConfSection() { return "Unk"; }
|
std::string GetBindingConfSection() { return "Unk"; }
|
@ -344,6 +344,7 @@
|
|||||||
<ClCompile Include="SDLController.cpp" />
|
<ClCompile Include="SDLController.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ClInclude Include="VirtualController.h" />
|
||||||
<ClInclude Include="Lib\Mercury\Mercury.h" />
|
<ClInclude Include="Lib\Mercury\Mercury.h" />
|
||||||
<ClInclude Include="Lib\nlohmann\json.hpp" />
|
<ClInclude Include="Lib\nlohmann\json.hpp" />
|
||||||
<ClInclude Include="abi.h" />
|
<ClInclude Include="abi.h" />
|
||||||
@ -352,7 +353,6 @@
|
|||||||
<ClInclude Include="Blob.h" />
|
<ClInclude Include="Blob.h" />
|
||||||
<ClInclude Include="ControlDeck.h" />
|
<ClInclude Include="ControlDeck.h" />
|
||||||
<ClInclude Include="Cvar.h" />
|
<ClInclude Include="Cvar.h" />
|
||||||
<ClInclude Include="DisconnectedController.h" />
|
|
||||||
<ClInclude Include="Environment.h" />
|
<ClInclude Include="Environment.h" />
|
||||||
<ClInclude Include="Factories\AudioFactory.h" />
|
<ClInclude Include="Factories\AudioFactory.h" />
|
||||||
<ClInclude Include="InputEditor.h" />
|
<ClInclude Include="InputEditor.h" />
|
||||||
|
@ -674,14 +674,14 @@
|
|||||||
<ClInclude Include="ControlDeck.h">
|
<ClInclude Include="ControlDeck.h">
|
||||||
<Filter>Source Files\Controller</Filter>
|
<Filter>Source Files\Controller</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="DisconnectedController.h">
|
|
||||||
<Filter>Source Files\Controller</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="Lib\nlohmann\json.hpp">
|
<ClInclude Include="Lib\nlohmann\json.hpp">
|
||||||
<Filter>Source Files\Lib\nlohmann</Filter>
|
<Filter>Source Files\Lib\nlohmann</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="Lib\Mercury\Mercury.h">
|
<ClInclude Include="Lib\Mercury\Mercury.h">
|
||||||
<Filter>Source Files\Lib\Mercury</Filter>
|
<Filter>Source Files\Lib\Mercury</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="VirtualController.h">
|
||||||
|
<Filter>Source Files\Controller</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
@ -25,8 +25,8 @@ typedef enum {
|
|||||||
typedef enum {
|
typedef enum {
|
||||||
/* 0 */ TEXTBOX_POS_VARIABLE,
|
/* 0 */ TEXTBOX_POS_VARIABLE,
|
||||||
/* 1 */ TEXTBOX_POS_TOP,
|
/* 1 */ TEXTBOX_POS_TOP,
|
||||||
/* 2 */ TEXTBOX_POS_BOTTOM,
|
/* 2 */ TEXTBOX_POS_MIDDLE,
|
||||||
/* 3 */ TEXTBOX_POS_MIDDLE
|
/* 3 */ TEXTBOX_POS_BOTTOM
|
||||||
} TextBoxPosition;
|
} TextBoxPosition;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
36
soh/macosx/Xcode-Info.plist
Normal file
36
soh/macosx/Xcode-Info.plist
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleDisplayName</key>
|
||||||
|
<string></string>
|
||||||
|
<key>LSApplicationCategoryType</key>
|
||||||
|
<string></string>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>English</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>$(EXECUTABLE_NAME)</string>
|
||||||
|
<key>CFBundleGetInfoString</key>
|
||||||
|
<string>3.0.0</string>
|
||||||
|
<key>CFBundleIconFile</key>
|
||||||
|
<string>soh</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>Ship of Harkinian</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>3.0.0</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>RACHAEL ALFA</string>
|
||||||
|
<key>CSResourcesFileMapped</key>
|
||||||
|
<true/>
|
||||||
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
<string>Copyright 2022 HarbourMasters.</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
1019
soh/macosx/otr-outputs.xcfilelist
Normal file
1019
soh/macosx/otr-outputs.xcfilelist
Normal file
File diff suppressed because it is too large
Load Diff
7152
soh/soh.xcodeproj/project.pbxproj
Normal file
7152
soh/soh.xcodeproj/project.pbxproj
Normal file
File diff suppressed because it is too large
Load Diff
7
soh/soh.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
7
soh/soh.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Workspace
|
||||||
|
version = "1.0">
|
||||||
|
<FileRef
|
||||||
|
location = "self:">
|
||||||
|
</FileRef>
|
||||||
|
</Workspace>
|
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>IDEDidComputeMac32BitWarning</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
@ -1,6 +1,7 @@
|
|||||||
#include "CosmeticsEditor.h"
|
#include "CosmeticsEditor.h"
|
||||||
#include "../../util.h"
|
#include "../../util.h"
|
||||||
#include "../libultraship/ImGuiImpl.h"
|
#include "../libultraship/ImGuiImpl.h"
|
||||||
|
#include "GameSettings.h"
|
||||||
|
|
||||||
#include <array>
|
#include <array>
|
||||||
#include <bit>
|
#include <bit>
|
||||||
@ -97,6 +98,50 @@ const char* RainbowColorCvarList[] = {
|
|||||||
"gCCFileChoosePrim", "gCCFileChooseTextPrim", "gCCEquipmentsPrim", "gCCItemsPrim",
|
"gCCFileChoosePrim", "gCCFileChooseTextPrim", "gCCEquipmentsPrim", "gCCItemsPrim",
|
||||||
"gCCMapsPrim", "gCCQuestsPrim", "gCCSavePrim", "gCCGameoverPrim",
|
"gCCMapsPrim", "gCCQuestsPrim", "gCCSavePrim", "gCCGameoverPrim",
|
||||||
};
|
};
|
||||||
|
const char* MarginCvarList[] {
|
||||||
|
"gHearts", "gMagicBar", "gVSOA", "gBBtn", "gABtn", "gStartBtn",
|
||||||
|
"gCBtnU", "gCBtnD", "gCBtnL", "gCBtnR", "gDPad", "gMinimap",
|
||||||
|
"gSKC", "gRC", "gCarrots", "gTimers", "gAS", "gTCM", "gTCB"
|
||||||
|
};
|
||||||
|
|
||||||
|
void SetMarginAll(const char* ButtonName, bool SetActivated) {
|
||||||
|
if (ImGui::Button(ButtonName)) {
|
||||||
|
u8 arrayLength = sizeof(MarginCvarList) / sizeof(*MarginCvarList);
|
||||||
|
//MarginCvarNonAnchor is an array that list every element that has No anchor by default, because if that the case this function will not touch it with pose type 0.
|
||||||
|
const char* MarginCvarNonAnchor[] { "gCarrots", "gTimers", "gAS", "gTCM","gTCB" };
|
||||||
|
u8 arrayLengthNonMargin = sizeof(MarginCvarNonAnchor) / sizeof(*MarginCvarNonAnchor);
|
||||||
|
for (u8 s = 0; s < arrayLength; s++) {
|
||||||
|
std::string cvarName = MarginCvarList[s];
|
||||||
|
std::string cvarPosType = cvarName+"PosType";
|
||||||
|
std::string cvarNameMargins = cvarName+"UseMargins";
|
||||||
|
if (CVar_GetS32(cvarPosType.c_str(),0) <= 2 && SetActivated) { //Our element is not Hidden or Non anchor
|
||||||
|
for(int i = 0; i < arrayLengthNonMargin; i++){
|
||||||
|
if(MarginCvarNonAnchor[i] == cvarName && CVar_GetS32(cvarPosType.c_str(),0) == 0){ //Our element is both in original position and do not have anchor by default so we skip it.
|
||||||
|
CVar_SetS32(cvarNameMargins.c_str(), false); //force set off
|
||||||
|
} else if(MarginCvarNonAnchor[i] == cvarName && CVar_GetS32(cvarPosType.c_str(),0) != 0){ //Our element is not in original position regarless it has no anchor by default since player made it anchored we can toggle margins
|
||||||
|
CVar_SetS32(cvarNameMargins.c_str(), SetActivated);
|
||||||
|
} else if(MarginCvarNonAnchor[i] != cvarName){ //Our elements has an anchor by default so regarless of it's position right now that okay to toggle margins.
|
||||||
|
CVar_SetS32(cvarNameMargins.c_str(), SetActivated);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else { //Since the user requested to turn all margin off no need to do any check there.
|
||||||
|
CVar_SetS32(cvarNameMargins.c_str(), SetActivated);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void ResetPositionAll() {
|
||||||
|
if (ImGui::Button("Reset all positions")) {
|
||||||
|
u8 arrayLength = sizeof(MarginCvarList) / sizeof(*MarginCvarList);
|
||||||
|
for (u8 s = 0; s < arrayLength; s++) {
|
||||||
|
std::string cvarName = MarginCvarList[s];
|
||||||
|
std::string cvarPosType = cvarName+"PosType";
|
||||||
|
std::string cvarNameMargins = cvarName+"UseMargins";
|
||||||
|
CVar_SetS32(cvarPosType.c_str(), 0);
|
||||||
|
CVar_SetS32(cvarNameMargins.c_str(), false); //Turn margin off to everythings as that original position.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
void LoadRainbowColor(bool& open) {
|
void LoadRainbowColor(bool& open) {
|
||||||
u8 arrayLength = sizeof(RainbowColorCvarList) / sizeof(*RainbowColorCvarList);
|
u8 arrayLength = sizeof(RainbowColorCvarList) / sizeof(*RainbowColorCvarList);
|
||||||
for (u8 s = 0; s < arrayLength; s++) {
|
for (u8 s = 0; s < arrayLength; s++) {
|
||||||
@ -140,6 +185,7 @@ void LoadRainbowColor(bool& open) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Table_InitHeader(bool has_header = true) {
|
void Table_InitHeader(bool has_header = true) {
|
||||||
if (has_header) {
|
if (has_header) {
|
||||||
ImGui::TableHeadersRow();
|
ImGui::TableHeadersRow();
|
||||||
@ -147,6 +193,7 @@ void Table_InitHeader(bool has_header = true) {
|
|||||||
ImGui::TableNextRow();
|
ImGui::TableNextRow();
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
ImGui::AlignTextToFramePadding(); //This is to adjust Vertical pos of item in a cell to be normlized.
|
ImGui::AlignTextToFramePadding(); //This is to adjust Vertical pos of item in a cell to be normlized.
|
||||||
|
ImGui::SetCursorPosX(ImGui::GetCursorPosX() - 2);
|
||||||
ImGui::PushItemWidth(ImGui::GetContentRegionAvail().x);
|
ImGui::PushItemWidth(ImGui::GetContentRegionAvail().x);
|
||||||
}
|
}
|
||||||
void Table_NextCol() {
|
void Table_NextCol() {
|
||||||
@ -160,8 +207,10 @@ void Table_NextLine() {
|
|||||||
ImGui::AlignTextToFramePadding();
|
ImGui::AlignTextToFramePadding();
|
||||||
ImGui::PushItemWidth(ImGui::GetContentRegionAvail().x);
|
ImGui::PushItemWidth(ImGui::GetContentRegionAvail().x);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Draw_HelpIcon(const std::string& helptext, bool sameline = true, int Pos = 0) {
|
void Draw_HelpIcon(const std::string& helptext, bool sameline = true, int Pos = 0) {
|
||||||
// place the ? button to the most of the right side of the cell it is using.
|
// place the ? button to the most of the right side of the cell it is using.
|
||||||
|
ImGui::PushItemWidth(ImGui::GetContentRegionAvail().x-60);
|
||||||
ImGui::SetCursorPosX(ImGui::GetCursorPosX() + ImGui::GetContentRegionAvail().x - 15);
|
ImGui::SetCursorPosX(ImGui::GetCursorPosX() + ImGui::GetContentRegionAvail().x - 15);
|
||||||
ImGui::SmallButton("?");
|
ImGui::SmallButton("?");
|
||||||
SohImGui::Tooltip(helptext.c_str());
|
SohImGui::Tooltip(helptext.c_str());
|
||||||
@ -169,6 +218,7 @@ void Draw_HelpIcon(const std::string& helptext, bool sameline = true, int Pos =
|
|||||||
//I do not use ImGui::SameLine(); because it make some element vanish.
|
//I do not use ImGui::SameLine(); because it make some element vanish.
|
||||||
ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 22);
|
ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 22);
|
||||||
}
|
}
|
||||||
|
ImGui::PushItemWidth(ImGui::GetContentRegionAvail().x);
|
||||||
}
|
}
|
||||||
void Draw_Npcs(){
|
void Draw_Npcs(){
|
||||||
SohImGui::EnhancementCheckbox("Custom colors for Navi", "gUseNaviCol");
|
SohImGui::EnhancementCheckbox("Custom colors for Navi", "gUseNaviCol");
|
||||||
@ -376,10 +426,18 @@ void Draw_Placements(){
|
|||||||
if (ImGui::BeginTable("tableMargins", 1, ImGuiTableFlags_BordersH | ImGuiTableFlags_BordersV)) {
|
if (ImGui::BeginTable("tableMargins", 1, ImGuiTableFlags_BordersH | ImGuiTableFlags_BordersV)) {
|
||||||
ImGui::TableSetupColumn("General margins settings", ImGuiTableColumnFlags_WidthStretch | ImGuiTableColumnFlags_IndentEnable | ImGuiTableColumnFlags_NoSort, TablesCellsWidth);
|
ImGui::TableSetupColumn("General margins settings", ImGuiTableColumnFlags_WidthStretch | ImGuiTableColumnFlags_IndentEnable | ImGuiTableColumnFlags_NoSort, TablesCellsWidth);
|
||||||
Table_InitHeader();
|
Table_InitHeader();
|
||||||
SohImGui::EnhancementSliderInt("Top : %dx", "##UIMARGINT", "gHUDMargin_T", (ImGui::GetWindowViewport()->Size.y/2)*-1, 25, "");
|
SohImGui::EnhancementSliderInt("Top : %dx", "##UIMARGINT", "gHUDMargin_T", (ImGui::GetWindowViewport()->Size.y/2)*-1, 25, "", 0, true);
|
||||||
SohImGui::EnhancementSliderInt("Left: %dx", "##UIMARGINL", "gHUDMargin_L", -25, ImGui::GetWindowViewport()->Size.x, "");
|
SohImGui::EnhancementSliderInt("Left: %dx", "##UIMARGINL", "gHUDMargin_L", -25, ImGui::GetWindowViewport()->Size.x, "", 0, true);
|
||||||
SohImGui::EnhancementSliderInt("Right: %dx", "##UIMARGINR", "gHUDMargin_R", (ImGui::GetWindowViewport()->Size.x)*-1, 25, "");
|
SohImGui::EnhancementSliderInt("Right: %dx", "##UIMARGINR", "gHUDMargin_R", (ImGui::GetWindowViewport()->Size.x)*-1, 25, "", 0, true);
|
||||||
SohImGui::EnhancementSliderInt("Bottom: %dx", "##UIMARGINB", "gHUDMargin_B", (ImGui::GetWindowViewport()->Size.y/2)*-1, 25, "");
|
SohImGui::EnhancementSliderInt("Bottom: %dx", "##UIMARGINB", "gHUDMargin_B", (ImGui::GetWindowViewport()->Size.y/2)*-1, 25, "", 0, true);
|
||||||
|
SetMarginAll("All margins on",true);
|
||||||
|
SohImGui::Tooltip("Set most of the element to use margin\nSome elements with default position will not be affected\nElements without Archor or Hidden will not be turned on");
|
||||||
|
ImGui::SameLine();
|
||||||
|
SetMarginAll("All margins off",false);
|
||||||
|
SohImGui::Tooltip("Set all of the element to not use margin");
|
||||||
|
ImGui::SameLine();
|
||||||
|
ResetPositionAll();
|
||||||
|
SohImGui::Tooltip("Revert every element to use their original position and no margins");
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
}
|
}
|
||||||
@ -399,9 +457,9 @@ void Draw_Placements(){
|
|||||||
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
||||||
SohImGui::EnhancementRadioButton("Hidden", "gHeartsCountPosType", 4);
|
SohImGui::EnhancementRadioButton("Hidden", "gHeartsCountPosType", 4);
|
||||||
SohImGui::Tooltip("This will make your elements hidden");
|
SohImGui::Tooltip("This will make your elements hidden");
|
||||||
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##HeartCountPosY", "gHeartsPosY", -22, ImGui::GetWindowViewport()->Size.y, "");
|
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##HeartCountPosY", "gHeartsPosY", -22, ImGui::GetWindowViewport()->Size.y, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
||||||
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##HeartCountPosX", "gHeartsPosX", -25, ImGui::GetWindowViewport()->Size.x, "");
|
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##HeartCountPosX", "gHeartsPosX", -25, ImGui::GetWindowViewport()->Size.x, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
@ -423,9 +481,9 @@ void Draw_Placements(){
|
|||||||
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
||||||
SohImGui::EnhancementRadioButton("Hidden", "gMagicBarPosType", 4);
|
SohImGui::EnhancementRadioButton("Hidden", "gMagicBarPosType", 4);
|
||||||
SohImGui::Tooltip("This will make your elements hidden");
|
SohImGui::Tooltip("This will make your elements hidden");
|
||||||
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##MagicBarPosY", "gMagicBarPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "");
|
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##MagicBarPosY", "gMagicBarPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
||||||
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##MagicBarPosX", "gMagicBarPosX", -5, ImGui::GetWindowViewport()->Size.x/2, "");
|
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##MagicBarPosX", "gMagicBarPosX", -5, ImGui::GetWindowViewport()->Size.x/2, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
@ -447,7 +505,7 @@ void Draw_Placements(){
|
|||||||
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
||||||
SohImGui::EnhancementRadioButton("Hidden", "gVSOAPosType", 4); //in case you want only SFX
|
SohImGui::EnhancementRadioButton("Hidden", "gVSOAPosType", 4); //in case you want only SFX
|
||||||
SohImGui::Tooltip("This will make your elements hidden");
|
SohImGui::Tooltip("This will make your elements hidden");
|
||||||
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##VSOAPosY", "gVSOAPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "");
|
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##VSOAPosY", "gVSOAPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
||||||
s16 Min_X_Dpad = 0;
|
s16 Min_X_Dpad = 0;
|
||||||
s16 Max_X_Dpad = ImGui::GetWindowViewport()->Size.x/2;
|
s16 Max_X_Dpad = ImGui::GetWindowViewport()->Size.x/2;
|
||||||
@ -456,7 +514,7 @@ void Draw_Placements(){
|
|||||||
} else if(CVar_GetS32("gVSOAPosType",0) == 4){
|
} else if(CVar_GetS32("gVSOAPosType",0) == 4){
|
||||||
Min_X_Dpad = (ImGui::GetWindowViewport()->Size.x/2)*-1;
|
Min_X_Dpad = (ImGui::GetWindowViewport()->Size.x/2)*-1;
|
||||||
}
|
}
|
||||||
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##VSOAPosX", "gVSOAPosX", Min_X_Dpad, Max_X_Dpad, "");
|
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##VSOAPosX", "gVSOAPosX", Min_X_Dpad, Max_X_Dpad, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
@ -478,9 +536,9 @@ void Draw_Placements(){
|
|||||||
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
||||||
SohImGui::EnhancementRadioButton("Hidden", "gBBtnPosType", 4);
|
SohImGui::EnhancementRadioButton("Hidden", "gBBtnPosType", 4);
|
||||||
SohImGui::Tooltip("This will make your elements hidden");
|
SohImGui::Tooltip("This will make your elements hidden");
|
||||||
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##BBtnPosY", "gBBtnPosY", 0, ImGui::GetWindowViewport()->Size.y/4+50, "");
|
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##BBtnPosY", "gBBtnPosY", 0, ImGui::GetWindowViewport()->Size.y/4+50, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
||||||
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##BBtnPosX", "gBBtnPosX", -1, ImGui::GetWindowViewport()->Size.x-50, "");
|
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##BBtnPosX", "gBBtnPosX", -1, ImGui::GetWindowViewport()->Size.x-50, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
@ -502,9 +560,9 @@ void Draw_Placements(){
|
|||||||
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
||||||
SohImGui::EnhancementRadioButton("Hidden", "gABtnPosType", 4);
|
SohImGui::EnhancementRadioButton("Hidden", "gABtnPosType", 4);
|
||||||
SohImGui::Tooltip("This will make your elements hidden");
|
SohImGui::Tooltip("This will make your elements hidden");
|
||||||
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##ABtnPosY", "gABtnPosY", -10, ImGui::GetWindowViewport()->Size.y/4+50, "");
|
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##ABtnPosY", "gABtnPosY", -10, ImGui::GetWindowViewport()->Size.y/4+50, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
||||||
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##ABtnPosX", "gABtnPosX", -20, ImGui::GetWindowViewport()->Size.x-50, "");
|
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##ABtnPosX", "gABtnPosX", -20, ImGui::GetWindowViewport()->Size.x-50, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
@ -526,9 +584,9 @@ void Draw_Placements(){
|
|||||||
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
||||||
SohImGui::EnhancementRadioButton("Hidden", "gStartBtnPosType", 4);
|
SohImGui::EnhancementRadioButton("Hidden", "gStartBtnPosType", 4);
|
||||||
SohImGui::Tooltip("This will make your elements hidden");
|
SohImGui::Tooltip("This will make your elements hidden");
|
||||||
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##StartBtnPosY", "gStartBtnPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "");
|
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##StartBtnPosY", "gStartBtnPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
||||||
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##StartBtnPosX", "gStartBtnPosX", 0, ImGui::GetWindowViewport()->Size.x/2+70, "");
|
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##StartBtnPosX", "gStartBtnPosX", 0, ImGui::GetWindowViewport()->Size.x/2+70, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
@ -550,7 +608,7 @@ void Draw_Placements(){
|
|||||||
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
||||||
SohImGui::EnhancementRadioButton("Hidden", "gCBtnUPosType", 4);
|
SohImGui::EnhancementRadioButton("Hidden", "gCBtnUPosType", 4);
|
||||||
SohImGui::Tooltip("This will make your elements hidden");
|
SohImGui::Tooltip("This will make your elements hidden");
|
||||||
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##CBtnUPosY", "gCBtnUPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "");
|
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##CBtnUPosY", "gCBtnUPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
||||||
s16 Min_X_CU = 0;
|
s16 Min_X_CU = 0;
|
||||||
s16 Max_X_CU = ImGui::GetWindowViewport()->Size.x/2;
|
s16 Max_X_CU = ImGui::GetWindowViewport()->Size.x/2;
|
||||||
@ -561,7 +619,7 @@ void Draw_Placements(){
|
|||||||
} else if(CVar_GetS32("gCBtnUPosType",0) == 4){
|
} else if(CVar_GetS32("gCBtnUPosType",0) == 4){
|
||||||
Min_X_CU = (ImGui::GetWindowViewport()->Size.x/2)*-1;
|
Min_X_CU = (ImGui::GetWindowViewport()->Size.x/2)*-1;
|
||||||
}
|
}
|
||||||
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##CBtnUPosX", "gCBtnUPosX", Min_X_CU, Max_X_CU, "");
|
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##CBtnUPosX", "gCBtnUPosX", Min_X_CU, Max_X_CU, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
@ -583,7 +641,7 @@ void Draw_Placements(){
|
|||||||
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
||||||
SohImGui::EnhancementRadioButton("Hidden", "gCBtnDPosType", 4);
|
SohImGui::EnhancementRadioButton("Hidden", "gCBtnDPosType", 4);
|
||||||
SohImGui::Tooltip("This will make your elements hidden");
|
SohImGui::Tooltip("This will make your elements hidden");
|
||||||
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##CBtnDPosY", "gCBtnDPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "");
|
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##CBtnDPosY", "gCBtnDPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
||||||
s16 Min_X_CD = 0;
|
s16 Min_X_CD = 0;
|
||||||
s16 Max_X_CD = ImGui::GetWindowViewport()->Size.x/2;
|
s16 Max_X_CD = ImGui::GetWindowViewport()->Size.x/2;
|
||||||
@ -594,7 +652,7 @@ void Draw_Placements(){
|
|||||||
} else if(CVar_GetS32("gCBtnDPosType",0) == 4){
|
} else if(CVar_GetS32("gCBtnDPosType",0) == 4){
|
||||||
Min_X_CD = (ImGui::GetWindowViewport()->Size.x/2)*-1;
|
Min_X_CD = (ImGui::GetWindowViewport()->Size.x/2)*-1;
|
||||||
}
|
}
|
||||||
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##CBtnDPosX", "gCBtnDPosX", Min_X_CD, Max_X_CD, "");
|
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##CBtnDPosX", "gCBtnDPosX", Min_X_CD, Max_X_CD, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
@ -616,7 +674,7 @@ void Draw_Placements(){
|
|||||||
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
||||||
SohImGui::EnhancementRadioButton("Hidden", "gCBtnLPosType", 4);
|
SohImGui::EnhancementRadioButton("Hidden", "gCBtnLPosType", 4);
|
||||||
SohImGui::Tooltip("This will make your elements hidden");
|
SohImGui::Tooltip("This will make your elements hidden");
|
||||||
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##CBtnLPosY", "gCBtnLPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "");
|
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##CBtnLPosY", "gCBtnLPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
||||||
s16 Min_X_CL = 0;
|
s16 Min_X_CL = 0;
|
||||||
s16 Max_X_CL = ImGui::GetWindowViewport()->Size.x/2;
|
s16 Max_X_CL = ImGui::GetWindowViewport()->Size.x/2;
|
||||||
@ -627,7 +685,7 @@ void Draw_Placements(){
|
|||||||
} else if(CVar_GetS32("gCBtnDPosType",0) == 4){
|
} else if(CVar_GetS32("gCBtnDPosType",0) == 4){
|
||||||
Min_X_CL = (ImGui::GetWindowViewport()->Size.x/2)*-1;
|
Min_X_CL = (ImGui::GetWindowViewport()->Size.x/2)*-1;
|
||||||
}
|
}
|
||||||
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##CBtnLPosX", "gCBtnLPosX", Min_X_CL, Max_X_CL, "");
|
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##CBtnLPosX", "gCBtnLPosX", Min_X_CL, Max_X_CL, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
@ -649,7 +707,7 @@ void Draw_Placements(){
|
|||||||
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
||||||
SohImGui::EnhancementRadioButton("Hidden", "gCBtnRPosType", 4);
|
SohImGui::EnhancementRadioButton("Hidden", "gCBtnRPosType", 4);
|
||||||
SohImGui::Tooltip("This will make your elements hidden");
|
SohImGui::Tooltip("This will make your elements hidden");
|
||||||
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##CBtnRPosY", "gCBtnRPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "");
|
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##CBtnRPosY", "gCBtnRPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
||||||
s16 Min_X_CR = 0;
|
s16 Min_X_CR = 0;
|
||||||
s16 Max_X_CR = ImGui::GetWindowViewport()->Size.x/2;
|
s16 Max_X_CR = ImGui::GetWindowViewport()->Size.x/2;
|
||||||
@ -660,7 +718,7 @@ void Draw_Placements(){
|
|||||||
} else if(CVar_GetS32("gCBtnRPosType",0) == 4){
|
} else if(CVar_GetS32("gCBtnRPosType",0) == 4){
|
||||||
Min_X_CR = (ImGui::GetWindowViewport()->Size.x/2)*-1;
|
Min_X_CR = (ImGui::GetWindowViewport()->Size.x/2)*-1;
|
||||||
}
|
}
|
||||||
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##CBtnRPosX", "gCBtnRPosX", Min_X_CR, Max_X_CR, "");
|
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##CBtnRPosX", "gCBtnRPosX", Min_X_CR, Max_X_CR, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
@ -682,7 +740,7 @@ void Draw_Placements(){
|
|||||||
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
||||||
SohImGui::EnhancementRadioButton("Hidden", "gDPadPosType", 4);
|
SohImGui::EnhancementRadioButton("Hidden", "gDPadPosType", 4);
|
||||||
SohImGui::Tooltip("This will make your elements hidden");
|
SohImGui::Tooltip("This will make your elements hidden");
|
||||||
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##DPadPosY", "gDPadPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "");
|
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##DPadPosY", "gDPadPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
||||||
s16 Min_X_Dpad = 0;
|
s16 Min_X_Dpad = 0;
|
||||||
s16 Max_X_Dpad = ImGui::GetWindowViewport()->Size.x/2;
|
s16 Max_X_Dpad = ImGui::GetWindowViewport()->Size.x/2;
|
||||||
@ -691,7 +749,7 @@ void Draw_Placements(){
|
|||||||
} else if(CVar_GetS32("gDPadPosType",0) == 4){
|
} else if(CVar_GetS32("gDPadPosType",0) == 4){
|
||||||
Min_X_Dpad = (ImGui::GetWindowViewport()->Size.x/2)*-1;
|
Min_X_Dpad = (ImGui::GetWindowViewport()->Size.x/2)*-1;
|
||||||
}
|
}
|
||||||
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##DPadPosX", "gDPadPosX", Min_X_Dpad, Max_X_Dpad, "");
|
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##DPadPosX", "gDPadPosX", Min_X_Dpad, Max_X_Dpad, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
@ -713,9 +771,9 @@ void Draw_Placements(){
|
|||||||
//SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
//SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
||||||
SohImGui::EnhancementRadioButton("Hidden", "gMinimapPosType", 4);
|
SohImGui::EnhancementRadioButton("Hidden", "gMinimapPosType", 4);
|
||||||
SohImGui::Tooltip("This will make your elements hidden");
|
SohImGui::Tooltip("This will make your elements hidden");
|
||||||
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##MinimapPosY", "gMinimapPosY", (ImGui::GetWindowViewport()->Size.y/3)*-1, ImGui::GetWindowViewport()->Size.y/3, "");
|
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##MinimapPosY", "gMinimapPosY", (ImGui::GetWindowViewport()->Size.y/3)*-1, ImGui::GetWindowViewport()->Size.y/3, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
||||||
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##MinimapPosX", "gMinimapPosX", ImGui::GetWindowViewport()->Size.x*-1, ImGui::GetWindowViewport()->Size.x/2, "");
|
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##MinimapPosX", "gMinimapPosX", ImGui::GetWindowViewport()->Size.x*-1, ImGui::GetWindowViewport()->Size.x/2, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
@ -737,9 +795,9 @@ void Draw_Placements(){
|
|||||||
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
||||||
SohImGui::EnhancementRadioButton("Hidden", "gSKCPosType", 4);
|
SohImGui::EnhancementRadioButton("Hidden", "gSKCPosType", 4);
|
||||||
SohImGui::Tooltip("This will make your elements hidden");
|
SohImGui::Tooltip("This will make your elements hidden");
|
||||||
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##SKCPosY", "gSKCPosY", 0, ImGui::GetWindowViewport()->Size.y/3, "");
|
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##SKCPosY", "gSKCPosY", 0, ImGui::GetWindowViewport()->Size.y/3, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
||||||
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##SKCPosX", "gSKCPosX", -1, ImGui::GetWindowViewport()->Size.x/2, "");
|
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##SKCPosX", "gSKCPosX", -1, ImGui::GetWindowViewport()->Size.x/2, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
@ -761,9 +819,9 @@ void Draw_Placements(){
|
|||||||
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
||||||
SohImGui::EnhancementRadioButton("Hidden", "gRCPosType", 4);
|
SohImGui::EnhancementRadioButton("Hidden", "gRCPosType", 4);
|
||||||
SohImGui::Tooltip("This will make your elements hidden");
|
SohImGui::Tooltip("This will make your elements hidden");
|
||||||
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##RCPosY", "gRCPosY", -2, ImGui::GetWindowViewport()->Size.y/3, "");
|
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##RCPosY", "gRCPosY", -2, ImGui::GetWindowViewport()->Size.y/3, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
||||||
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##RCPosX", "gRCPosX", -3, ImGui::GetWindowViewport()->Size.x/2, "");
|
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##RCPosX", "gRCPosX", -3, ImGui::GetWindowViewport()->Size.x/2, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
@ -785,9 +843,9 @@ void Draw_Placements(){
|
|||||||
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
||||||
SohImGui::EnhancementRadioButton("Hidden", "gCarrotsPosType", 4);
|
SohImGui::EnhancementRadioButton("Hidden", "gCarrotsPosType", 4);
|
||||||
SohImGui::Tooltip("This will make your elements hidden");
|
SohImGui::Tooltip("This will make your elements hidden");
|
||||||
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##CarrotsPosY", "gCarrotsPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "");
|
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##CarrotsPosY", "gCarrotsPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
||||||
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##CarrotsPosX", "gCarrotsPosX", -50, ImGui::GetWindowViewport()->Size.x/2+25, "");
|
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##CarrotsPosX", "gCarrotsPosX", -50, ImGui::GetWindowViewport()->Size.x/2+25, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
@ -809,9 +867,9 @@ void Draw_Placements(){
|
|||||||
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
||||||
SohImGui::EnhancementRadioButton("Hidden", "gTimersPosType", 4);
|
SohImGui::EnhancementRadioButton("Hidden", "gTimersPosType", 4);
|
||||||
SohImGui::Tooltip("This will make your elements hidden");
|
SohImGui::Tooltip("This will make your elements hidden");
|
||||||
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##TimersPosY", "gTimersPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "");
|
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##TimersPosY", "gTimersPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
||||||
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##TimersPosX", "gTimersPosX", -50, ImGui::GetWindowViewport()->Size.x/2-50, "");
|
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##TimersPosX", "gTimersPosX", -50, ImGui::GetWindowViewport()->Size.x/2-50, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
@ -833,9 +891,9 @@ void Draw_Placements(){
|
|||||||
//SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
//SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
||||||
SohImGui::EnhancementRadioButton("Hidden", "gASPosType", 4);
|
SohImGui::EnhancementRadioButton("Hidden", "gASPosType", 4);
|
||||||
SohImGui::Tooltip("This will make your elements hidden");
|
SohImGui::Tooltip("This will make your elements hidden");
|
||||||
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##ASPosY", "gASPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "");
|
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##ASPosY", "gASPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
||||||
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##ASPosX", "gASPosX", -50, ImGui::GetWindowViewport()->Size.x/2-50, "");
|
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##ASPosX", "gASPosX", -50, ImGui::GetWindowViewport()->Size.x/2-50, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
@ -857,9 +915,9 @@ void Draw_Placements(){
|
|||||||
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
||||||
SohImGui::EnhancementRadioButton("Hidden", "gTCMPosType", 4);
|
SohImGui::EnhancementRadioButton("Hidden", "gTCMPosType", 4);
|
||||||
SohImGui::Tooltip("This will make your elements hidden");
|
SohImGui::Tooltip("This will make your elements hidden");
|
||||||
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##TCMPosY", "gTCMPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "");
|
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##TCMPosY", "gTCMPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
||||||
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##TCMPosX", "gTCMPosX", -50, ImGui::GetWindowViewport()->Size.x/2+10, "");
|
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##TCMPosX", "gTCMPosX", -50, ImGui::GetWindowViewport()->Size.x/2+10, ""), true;
|
||||||
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
@ -881,9 +939,9 @@ void Draw_Placements(){
|
|||||||
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
SohImGui::Tooltip("This will make your elements to not follow any side\nBetter used for center elements.");
|
||||||
SohImGui::EnhancementRadioButton("Hidden", "gTCBPosType", 4);
|
SohImGui::EnhancementRadioButton("Hidden", "gTCBPosType", 4);
|
||||||
SohImGui::Tooltip("This will make your elements hidden");
|
SohImGui::Tooltip("This will make your elements hidden");
|
||||||
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##TCBPosY", "gTCBPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "");
|
SohImGui::EnhancementSliderInt("Up <-> Down : %d", "##TCBPosY", "gTCBPosY", 0, ImGui::GetWindowViewport()->Size.y/2, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
SohImGui::Tooltip("This slider is used to move Up and Down your elements.");
|
||||||
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##TCBPosX", "gTCBPosX", -50, ImGui::GetWindowViewport()->Size.x/2+10, "");
|
SohImGui::EnhancementSliderInt("Left <-> Right : %d", "##TCBPosX", "gTCBPosX", -50, ImGui::GetWindowViewport()->Size.x/2+10, "", 0, true);
|
||||||
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
SohImGui::Tooltip("This slider is used to move Left and Right your elements.");
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
void InitCosmeticsEditor();//Init the menu itself
|
void InitCosmeticsEditor();//Init the menu itself
|
||||||
void LoadRainbowColor();
|
void LoadRainbowColor();
|
||||||
|
void NewSliderInt(const char* text, const char* id, const char* cvarName, int min, int max, const char* format, int defaultValue = 0);
|
@ -42,7 +42,7 @@ static RandomizerHash randomizerHash;
|
|||||||
static SpoilerData spoilerData;
|
static SpoilerData spoilerData;
|
||||||
|
|
||||||
void GenerateHash() {
|
void GenerateHash() {
|
||||||
for (size_t i = 0; i < Settings::seed.size(); i++) {
|
for (size_t i = 0; i < Settings::hashIconIndexes.size(); i++) {
|
||||||
int number = Settings::seed[i] - '0';
|
int number = Settings::seed[i] - '0';
|
||||||
Settings::hashIconIndexes[i] = number;
|
Settings::hashIconIndexes[i] = number;
|
||||||
}
|
}
|
||||||
@ -371,10 +371,11 @@ static void WriteSettings(const bool printAll = false) {
|
|||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3drando doesn't have a "skip child zelda" setting, manually add it to the spoilerfile
|
|
||||||
jsonData["settings"]["Skip Child Zelda"] = Settings::skipChildZelda;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 3drando doesn't have a "skip child zelda" setting, manually add it to the spoilerfile
|
||||||
|
jsonData["settings"]["Skip Child Zelda"] = Settings::skipChildZelda;
|
||||||
|
|
||||||
// spoilerLog.RootElement()->InsertEndChild(parentNode);
|
// spoilerLog.RootElement()->InsertEndChild(parentNode);
|
||||||
|
|
||||||
// for (const uint32_t key : allLocations) {
|
// for (const uint32_t key : allLocations) {
|
||||||
|
@ -869,21 +869,19 @@ SaveStateReturn SaveStateMgr::AddRequest(const SaveStateRequest request) {
|
|||||||
switch (request.type) {
|
switch (request.type) {
|
||||||
case RequestType::SAVE:
|
case RequestType::SAVE:
|
||||||
requests.push(request);
|
requests.push(request);
|
||||||
break;
|
return SaveStateReturn::SUCCESS;
|
||||||
case RequestType::LOAD:
|
case RequestType::LOAD:
|
||||||
if (states.contains(request.slot)) {
|
if (states.contains(request.slot)) {
|
||||||
requests.push(request);
|
requests.push(request);
|
||||||
|
return SaveStateReturn::SUCCESS;
|
||||||
} else {
|
} else {
|
||||||
SPDLOG_ERROR("Invalid SaveState slot: {}", request.type);
|
SPDLOG_ERROR("Invalid SaveState slot: {}", request.type);
|
||||||
SohImGui::overlay->TextDrawNotification(1.0f, true, "state slot %u empty", request.slot);
|
SohImGui::overlay->TextDrawNotification(1.0f, true, "state slot %u empty", request.slot);
|
||||||
return SaveStateReturn::FAIL_INVALID_SLOT;
|
return SaveStateReturn::FAIL_INVALID_SLOT;
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
[[unlikely]] default:
|
[[unlikely]] default:
|
||||||
SPDLOG_ERROR("Invalid SaveState request type: {}", request.type);
|
SPDLOG_ERROR("Invalid SaveState request type: {}", request.type);
|
||||||
return SaveStateReturn::FAIL_BAD_REQUEST;
|
return SaveStateReturn::FAIL_BAD_REQUEST;
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -517,6 +517,19 @@ void SaveManager::LoadFile(int fileNum) {
|
|||||||
InitMeta(fileNum);
|
InitMeta(fileNum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SaveManager::SaveFile_Exist(int fileNum) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
std::filesystem::exists(GetFileName(fileNum));
|
||||||
|
printf("File[%d] - exist \n",fileNum);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch(std::filesystem::filesystem_error const& ex) {
|
||||||
|
printf("File[%d] - do not exist \n",fileNum);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void SaveManager::AddInitFunction(InitFunc func) {
|
void SaveManager::AddInitFunction(InitFunc func) {
|
||||||
initFuncs.emplace_back(func);
|
initFuncs.emplace_back(func);
|
||||||
}
|
}
|
||||||
@ -1332,3 +1345,7 @@ extern "C" void Save_CopyFile(int from, int to) {
|
|||||||
extern "C" void Save_DeleteFile(int fileNum) {
|
extern "C" void Save_DeleteFile(int fileNum) {
|
||||||
SaveManager::Instance->DeleteZeldaFile(fileNum);
|
SaveManager::Instance->DeleteZeldaFile(fileNum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" bool Save_Exist(int fileNum) {
|
||||||
|
return SaveManager::Instance->SaveFile_Exist(fileNum);
|
||||||
|
}
|
@ -41,6 +41,7 @@ public:
|
|||||||
void SaveFile(int fileNum);
|
void SaveFile(int fileNum);
|
||||||
void SaveGlobal();
|
void SaveGlobal();
|
||||||
void LoadFile(int fileNum);
|
void LoadFile(int fileNum);
|
||||||
|
bool SaveFile_Exist(int fileNum);
|
||||||
|
|
||||||
// Adds a function that is called when we are intializing a save, including when we are loading a save.
|
// Adds a function that is called when we are intializing a save, including when we are loading a save.
|
||||||
void AddInitFunction(InitFunc func);
|
void AddInitFunction(InitFunc func);
|
||||||
@ -149,5 +150,5 @@ void Save_AddSaveFunction(char* name, int version, Save_SaveFunc func);
|
|||||||
SaveFileMetaInfo* Save_GetSaveMetaInfo(int fileNum);
|
SaveFileMetaInfo* Save_GetSaveMetaInfo(int fileNum);
|
||||||
void Save_CopyFile(int from, int to);
|
void Save_CopyFile(int from, int to);
|
||||||
void Save_DeleteFile(int fileNum);
|
void Save_DeleteFile(int fileNum);
|
||||||
|
bool Save_Exist(int fileNum);
|
||||||
#endif
|
#endif
|
||||||
|
@ -1035,15 +1035,9 @@ void EnItem00_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
|||||||
Matrix_Scale(mtxScale, mtxScale, mtxScale, MTXMODE_APPLY);
|
Matrix_Scale(mtxScale, mtxScale, mtxScale, MTXMODE_APPLY);
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
this->actor.home.rot.z = Rand_CenteredFloat(65535.0f);
|
|
||||||
this->actor.shape.yOffset = 430.0f;
|
|
||||||
this->actor.shape.shadowScale = 0.03f;
|
|
||||||
Actor_SetScale(&this->actor, 0.02f);
|
|
||||||
this->scale = 0.02f;
|
|
||||||
if (this->unk_15A < 0) {
|
if (this->unk_15A < 0) {
|
||||||
if (this->unk_15A == -1) {
|
if (this->unk_15A == -1) {
|
||||||
s8 bankIndex = Object_GetIndex(&globalCtx->objectCtx, OBJECT_GI_HEART);
|
s8 bankIndex = Object_GetIndex(&globalCtx->objectCtx, OBJECT_GI_HEART);
|
||||||
|
|
||||||
if (Object_IsLoaded(&globalCtx->objectCtx, bankIndex)) {
|
if (Object_IsLoaded(&globalCtx->objectCtx, bankIndex)) {
|
||||||
this->actor.objBankIndex = bankIndex;
|
this->actor.objBankIndex = bankIndex;
|
||||||
Actor_SetObjectDependency(globalCtx, &this->actor);
|
Actor_SetObjectDependency(globalCtx, &this->actor);
|
||||||
@ -1056,7 +1050,16 @@ void EnItem00_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
//Big hearts workaround
|
||||||
|
this->actor.home.rot.z = Rand_CenteredFloat(65535.0f);
|
||||||
|
this->actor.shape.yOffset = 430.0f;
|
||||||
|
this->actor.shape.shadowScale = 6.0f;
|
||||||
|
Actor_SetScale(&this->actor, 0.02f);
|
||||||
|
this->scale = 0.02f;
|
||||||
|
EnItem00_DrawCollectible(this, globalCtx);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case ITEM00_BOMBS_A:
|
case ITEM00_BOMBS_A:
|
||||||
if (CVar_GetS32("gNewDrops", 0)) {
|
if (CVar_GetS32("gNewDrops", 0)) {
|
||||||
Actor_SetScale(&this->actor, 0.2f);
|
Actor_SetScale(&this->actor, 0.2f);
|
||||||
|
@ -520,12 +520,12 @@ void Message_DrawTextboxIcon(GlobalContext* globalCtx, Gfx** p, s16 x, s16 y) {
|
|||||||
sIconEnvColors[1][1] = 255;
|
sIconEnvColors[1][1] = 255;
|
||||||
sIconEnvColors[1][2] = 130;
|
sIconEnvColors[1][2] = 130;
|
||||||
} else if (CVar_GetS32("gHudColors", 1) == 2) {
|
} else if (CVar_GetS32("gHudColors", 1) == 2) {
|
||||||
sIconPrimColors[0][0] = (CVar_GetS32("gCCABtnPrimR", 50)/255)*95;
|
sIconPrimColors[0][0] = (CVar_GetS32("gCCABtnPrimR", 0)/255)*95;
|
||||||
sIconPrimColors[0][1] = (CVar_GetS32("gCCABtnPrimG", 255)/255)*95;
|
sIconPrimColors[0][1] = (CVar_GetS32("gCCABtnPrimG", 200)/255)*95;
|
||||||
sIconPrimColors[0][2] = (CVar_GetS32("gCCABtnPrimB", 130)/255)*95;
|
sIconPrimColors[0][2] = (CVar_GetS32("gCCABtnPrimB", 80)/255)*95;
|
||||||
sIconPrimColors[1][0] = CVar_GetS32("gCCABtnPrimR", 50);
|
sIconPrimColors[1][0] = CVar_GetS32("gCCABtnPrimR", 0);
|
||||||
sIconPrimColors[1][1] = CVar_GetS32("gCCABtnPrimG", 255);
|
sIconPrimColors[1][1] = CVar_GetS32("gCCABtnPrimG", 200);
|
||||||
sIconPrimColors[1][2] = CVar_GetS32("gCCABtnPrimB", 130);
|
sIconPrimColors[1][2] = CVar_GetS32("gCCABtnPrimB", 80);
|
||||||
sIconEnvColors[0][0] = 0;
|
sIconEnvColors[0][0] = 0;
|
||||||
sIconEnvColors[0][1] = 0;
|
sIconEnvColors[0][1] = 0;
|
||||||
sIconEnvColors[0][2] = 0;
|
sIconEnvColors[0][2] = 0;
|
||||||
@ -3320,13 +3320,13 @@ void Message_Update(GlobalContext* globalCtx) {
|
|||||||
static s16 sTextboxXPositions[] = {
|
static s16 sTextboxXPositions[] = {
|
||||||
34, 34, 34, 34, 34, 34,
|
34, 34, 34, 34, 34, 34,
|
||||||
};
|
};
|
||||||
static s16 sTextboxMidYPositions[] = {
|
static s16 sTextboxLowerYPositions[] = {
|
||||||
142, 142, 142, 142, 174, 142,
|
142, 142, 142, 142, 174, 142,
|
||||||
};
|
};
|
||||||
static s16 sTextboxUpperYPositions[] = {
|
static s16 sTextboxUpperYPositions[] = {
|
||||||
38, 38, 38, 38, 174, 38,
|
38, 38, 38, 38, 174, 38,
|
||||||
};
|
};
|
||||||
static s16 sTextboxLowerYPositions[] = {
|
static s16 sTextboxMidYPositions[] = {
|
||||||
90, 90, 90, 90, 174, 90,
|
90, 90, 90, 90, 174, 90,
|
||||||
};
|
};
|
||||||
static s16 sTextboxEndIconYOffset[] = {
|
static s16 sTextboxEndIconYOffset[] = {
|
||||||
@ -3420,20 +3420,20 @@ void Message_Update(GlobalContext* globalCtx) {
|
|||||||
if (!msgCtx->textBoxPos) { // variable position
|
if (!msgCtx->textBoxPos) { // variable position
|
||||||
if (YREG(15) != 0 || globalCtx->sceneNum == SCENE_HAIRAL_NIWA) {
|
if (YREG(15) != 0 || globalCtx->sceneNum == SCENE_HAIRAL_NIWA) {
|
||||||
if (averageY < XREG(92)) {
|
if (averageY < XREG(92)) {
|
||||||
R_TEXTBOX_Y_TARGET = sTextboxMidYPositions[var];
|
R_TEXTBOX_Y_TARGET = sTextboxLowerYPositions[var];
|
||||||
} else {
|
} else {
|
||||||
R_TEXTBOX_Y_TARGET = sTextboxUpperYPositions[var];
|
R_TEXTBOX_Y_TARGET = sTextboxUpperYPositions[var];
|
||||||
}
|
}
|
||||||
} else if (globalCtx->sceneNum == SCENE_MARKET_DAY || globalCtx->sceneNum == SCENE_MARKET_NIGHT ||
|
} else if (globalCtx->sceneNum == SCENE_MARKET_DAY || globalCtx->sceneNum == SCENE_MARKET_NIGHT ||
|
||||||
globalCtx->sceneNum == SCENE_MARKET_RUINS) {
|
globalCtx->sceneNum == SCENE_MARKET_RUINS) {
|
||||||
if (averageY < XREG(93)) {
|
if (averageY < XREG(93)) {
|
||||||
R_TEXTBOX_Y_TARGET = sTextboxMidYPositions[var];
|
R_TEXTBOX_Y_TARGET = sTextboxLowerYPositions[var];
|
||||||
} else {
|
} else {
|
||||||
R_TEXTBOX_Y_TARGET = sTextboxUpperYPositions[var];
|
R_TEXTBOX_Y_TARGET = sTextboxUpperYPositions[var];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (averageY < XREG(94)) {
|
if (averageY < XREG(94)) {
|
||||||
R_TEXTBOX_Y_TARGET = sTextboxMidYPositions[var];
|
R_TEXTBOX_Y_TARGET = sTextboxLowerYPositions[var];
|
||||||
} else {
|
} else {
|
||||||
R_TEXTBOX_Y_TARGET = sTextboxUpperYPositions[var];
|
R_TEXTBOX_Y_TARGET = sTextboxUpperYPositions[var];
|
||||||
}
|
}
|
||||||
|
@ -1676,13 +1676,15 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) {
|
|||||||
if (item == ITEM_SWORD_BGS) {
|
if (item == ITEM_SWORD_BGS) {
|
||||||
gSaveContext.swordHealth = 8;
|
gSaveContext.swordHealth = 8;
|
||||||
|
|
||||||
if (ALL_EQUIP_VALUE(EQUIP_SWORD) == 0xF) {
|
if (ALL_EQUIP_VALUE(EQUIP_SWORD) == 0xF
|
||||||
gSaveContext.inventory.equipment ^= 8 << gEquipShifts[EQUIP_SWORD];
|
||(gSaveContext.n64ddFlag && ALL_EQUIP_VALUE(EQUIP_SWORD) == 0xE)) { // In rando, when buying Giant's Knife, also check
|
||||||
|
gSaveContext.inventory.equipment ^= 8 << gEquipShifts[EQUIP_SWORD]; // for 0xE in case we don't have Kokiri Sword
|
||||||
if (gSaveContext.equips.buttonItems[0] == ITEM_SWORD_KNIFE) {
|
if (gSaveContext.equips.buttonItems[0] == ITEM_SWORD_KNIFE) {
|
||||||
gSaveContext.equips.buttonItems[0] = ITEM_SWORD_BGS;
|
gSaveContext.equips.buttonItems[0] = ITEM_SWORD_BGS;
|
||||||
Interface_LoadItemIcon1(globalCtx, 0);
|
Interface_LoadItemIcon1(globalCtx, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (item == ITEM_SWORD_MASTER) {
|
} else if (item == ITEM_SWORD_MASTER) {
|
||||||
gSaveContext.equips.buttonItems[0] = ITEM_SWORD_MASTER;
|
gSaveContext.equips.buttonItems[0] = ITEM_SWORD_MASTER;
|
||||||
gSaveContext.equips.equipment &= 0xFFF0;
|
gSaveContext.equips.equipment &= 0xFFF0;
|
||||||
@ -4796,10 +4798,11 @@ void Interface_Draw(GlobalContext* globalCtx) {
|
|||||||
PosY_BtnA = CVar_GetS32("gABtnPosY", 0)+Y_Margins_BtnA;
|
PosY_BtnA = CVar_GetS32("gABtnPosY", 0)+Y_Margins_BtnA;
|
||||||
rAIconY = 98.0f - PosY_BtnA;
|
rAIconY = 98.0f - PosY_BtnA;
|
||||||
if (CVar_GetS32("gABtnPosType", 0) == 1) {//Anchor Left
|
if (CVar_GetS32("gABtnPosType", 0) == 1) {//Anchor Left
|
||||||
|
if (CVar_GetS32("gABtnUseMargins", 0) != 0) {X_Margins_BtnA = Left_HUD_Margin;};
|
||||||
PosX_BtnA = OTRGetDimensionFromLeftEdge(CVar_GetS32("gABtnPosX", 0)+X_Margins_BtnA);
|
PosX_BtnA = OTRGetDimensionFromLeftEdge(CVar_GetS32("gABtnPosX", 0)+X_Margins_BtnA);
|
||||||
rAIconX = OTRGetDimensionFromLeftEdge(CVar_GetS32("gABtnPosX", 0)+X_Margins_BtnA);
|
rAIconX = OTRGetDimensionFromLeftEdge(CVar_GetS32("gABtnPosX", 0)+X_Margins_BtnA);
|
||||||
} else if (CVar_GetS32("gABtnPosType", 0) == 2) {//Anchor Right
|
} else if (CVar_GetS32("gABtnPosType", 0) == 2) {//Anchor Right
|
||||||
X_Margins_BtnA = Right_HUD_Margin;
|
if (CVar_GetS32("gABtnUseMargins", 0) != 0) {X_Margins_BtnA = Right_HUD_Margin;};
|
||||||
PosX_BtnA = OTRGetDimensionFromRightEdge(CVar_GetS32("gABtnPosX", 0)+X_Margins_BtnA);
|
PosX_BtnA = OTRGetDimensionFromRightEdge(CVar_GetS32("gABtnPosX", 0)+X_Margins_BtnA);
|
||||||
rAIconX= OTRGetDimensionFromRightEdge(CVar_GetS32("gABtnPosX", 0)+X_Margins_BtnA);
|
rAIconX= OTRGetDimensionFromRightEdge(CVar_GetS32("gABtnPosX", 0)+X_Margins_BtnA);
|
||||||
} else if (CVar_GetS32("gABtnPosType", 0) == 3) {//Anchor None
|
} else if (CVar_GetS32("gABtnPosType", 0) == 3) {//Anchor None
|
||||||
|
@ -402,6 +402,12 @@ BgImage* func_80096A74(PolygonType1* polygon1, GlobalContext* globalCtx) {
|
|||||||
|
|
||||||
camera = GET_ACTIVE_CAM(globalCtx);
|
camera = GET_ACTIVE_CAM(globalCtx);
|
||||||
camId = camera->camDataIdx;
|
camId = camera->camDataIdx;
|
||||||
|
if (camId == -1 && CVar_GetS32("gNoRestrictItems", 0)) {
|
||||||
|
// This prevents a crash when using items that change the
|
||||||
|
// camera (such as din's fire) on scenes with prerendered backgrounds
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
// jfifid
|
// jfifid
|
||||||
camId2 = func_80041C10(&globalCtx->colCtx, camId, BGCHECK_SCENE)[2].y;
|
camId2 = func_80041C10(&globalCtx->colCtx, camId, BGCHECK_SCENE)[2].y;
|
||||||
if (camId2 >= 0) {
|
if (camId2 >= 0) {
|
||||||
|
@ -34,6 +34,7 @@ void BgHakaGate_Init(Actor* thisx, GlobalContext* globalCtx);
|
|||||||
void BgHakaGate_Destroy(Actor* thisx, GlobalContext* globalCtx);
|
void BgHakaGate_Destroy(Actor* thisx, GlobalContext* globalCtx);
|
||||||
void BgHakaGate_Update(Actor* thisx, GlobalContext* globalCtx);
|
void BgHakaGate_Update(Actor* thisx, GlobalContext* globalCtx);
|
||||||
void BgHakaGate_Draw(Actor* this, GlobalContext* globalCtx);
|
void BgHakaGate_Draw(Actor* this, GlobalContext* globalCtx);
|
||||||
|
void BgHakaGate_Reset(void);
|
||||||
|
|
||||||
void BgHakaGate_DoNothing(BgHakaGate* this, GlobalContext* globalCtx);
|
void BgHakaGate_DoNothing(BgHakaGate* this, GlobalContext* globalCtx);
|
||||||
void BgHakaGate_StatueInactive(BgHakaGate* this, GlobalContext* globalCtx);
|
void BgHakaGate_StatueInactive(BgHakaGate* this, GlobalContext* globalCtx);
|
||||||
@ -62,7 +63,7 @@ const ActorInit Bg_Haka_Gate_InitVars = {
|
|||||||
(ActorFunc)BgHakaGate_Destroy,
|
(ActorFunc)BgHakaGate_Destroy,
|
||||||
(ActorFunc)BgHakaGate_Update,
|
(ActorFunc)BgHakaGate_Update,
|
||||||
(ActorFunc)BgHakaGate_Draw,
|
(ActorFunc)BgHakaGate_Draw,
|
||||||
NULL,
|
(ActorResetFunc)BgHakaGate_Reset,
|
||||||
};
|
};
|
||||||
|
|
||||||
static InitChainEntry sInitChain[] = {
|
static InitChainEntry sInitChain[] = {
|
||||||
@ -378,3 +379,7 @@ void BgHakaGate_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
|||||||
BgHakaGate_DrawFlame(this, globalCtx);
|
BgHakaGate_DrawFlame(this, globalCtx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BgHakaGate_Reset(void) {
|
||||||
|
sStatueRotY = 0;
|
||||||
|
}
|
||||||
|
@ -228,8 +228,8 @@ void func_8087FFC0(BgHakaTrap* this, GlobalContext* globalCtx) {
|
|||||||
this->colliderCylinder.dim.pos.z = this->dyna.actor.world.pos.z + sp28.x * sine + sp28.z * cosine;
|
this->colliderCylinder.dim.pos.z = this->dyna.actor.world.pos.z + sp28.x * sine + sp28.z * cosine;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static UNK_TYPE D_80881018 = 0;
|
||||||
void func_808801B8(BgHakaTrap* this, GlobalContext* globalCtx) {
|
void func_808801B8(BgHakaTrap* this, GlobalContext* globalCtx) {
|
||||||
static UNK_TYPE D_80881018 = 0;
|
|
||||||
Player* player = GET_PLAYER(globalCtx);
|
Player* player = GET_PLAYER(globalCtx);
|
||||||
|
|
||||||
if ((D_80880F30 == 0) && (!Player_InCsMode(globalCtx))) {
|
if ((D_80880F30 == 0) && (!Player_InCsMode(globalCtx))) {
|
||||||
@ -553,4 +553,5 @@ void BgHakaTrap_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
|||||||
void BgHakaTrap_Reset(void) {
|
void BgHakaTrap_Reset(void) {
|
||||||
D_80880F30 = 0;
|
D_80880F30 = 0;
|
||||||
D_80881014 = 0;
|
D_80881014 = 0;
|
||||||
|
D_80881018 = 0;
|
||||||
}
|
}
|
@ -929,7 +929,7 @@ void BossMo_Tentacle(BossMo* this, GlobalContext* globalCtx) {
|
|||||||
this->actor.flags &= ~ACTOR_FLAG_0;
|
this->actor.flags &= ~ACTOR_FLAG_0;
|
||||||
Math_ApproachF(&this->baseAlpha, 0.0, 1.0f, 5.0f);
|
Math_ApproachF(&this->baseAlpha, 0.0, 1.0f, 5.0f);
|
||||||
for (indS1 = 0; indS1 < 40; indS1++) {
|
for (indS1 = 0; indS1 < 40; indS1++) {
|
||||||
if (sMorphaTent2->tentSpawnPos) {}
|
if (sMorphaTent2 && sMorphaTent2->tentSpawnPos) {}
|
||||||
indT5 = Rand_ZeroFloat(20.9f);
|
indT5 = Rand_ZeroFloat(20.9f);
|
||||||
indS0 = sTentSpawnIndex[indT5];
|
indS0 = sTentSpawnIndex[indT5];
|
||||||
spFC.x = 0;
|
spFC.x = 0;
|
||||||
@ -3604,4 +3604,4 @@ void BossMo_Reset(void) {
|
|||||||
sBossGanonSeed1 = 0;
|
sBossGanonSeed1 = 0;
|
||||||
sBossGanonSeed2 = 0;
|
sBossGanonSeed2 = 0;
|
||||||
sBossGanonSeed3 = 0;
|
sBossGanonSeed3 = 0;
|
||||||
}
|
}
|
||||||
|
@ -290,7 +290,8 @@ void EnMa1_Init(Actor* thisx, GlobalContext* globalCtx) {
|
|||||||
this->actor.targetMode = 6;
|
this->actor.targetMode = 6;
|
||||||
this->unk_1E8.unk_00 = 0;
|
this->unk_1E8.unk_00 = 0;
|
||||||
|
|
||||||
if (!(gSaveContext.eventChkInf[1] & 0x10) || (CHECK_QUEST_ITEM(QUEST_SONG_EPONA) && !gSaveContext.n64ddFlag)) {
|
if (!(gSaveContext.eventChkInf[1] & 0x10) || (CHECK_QUEST_ITEM(QUEST_SONG_EPONA) && !gSaveContext.n64ddFlag) ||
|
||||||
|
(gSaveContext.n64ddFlag && Flags_GetTreasure(globalCtx, 0x1F))) {
|
||||||
this->actionFunc = func_80AA0D88;
|
this->actionFunc = func_80AA0D88;
|
||||||
EnMa1_ChangeAnim(this, ENMA1_ANIM_2);
|
EnMa1_ChangeAnim(this, ENMA1_ANIM_2);
|
||||||
} else {
|
} else {
|
||||||
|
@ -5183,7 +5183,7 @@ s32 func_8083B644(Player* this, GlobalContext* globalCtx) {
|
|||||||
this->stateFlags2 |= PLAYER_STATE2_21;
|
this->stateFlags2 |= PLAYER_STATE2_21;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!CHECK_BTN_ALL(sControlInput->press.button, BTN_CUP) && !sp28) {
|
if (!CHECK_BTN_ALL(sControlInput->press.button, CVar_GetS32("gNaviOnL", 0) ? BTN_L : BTN_CUP) && !sp28) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5239,7 +5239,8 @@ s32 func_8083B998(Player* this, GlobalContext* globalCtx) {
|
|||||||
(CHECK_FLAG_ALL(this->unk_664->flags, ACTOR_FLAG_0 | ACTOR_FLAG_18) || (this->unk_664->naviEnemyId != 0xFF))) {
|
(CHECK_FLAG_ALL(this->unk_664->flags, ACTOR_FLAG_0 | ACTOR_FLAG_18) || (this->unk_664->naviEnemyId != 0xFF))) {
|
||||||
this->stateFlags2 |= PLAYER_STATE2_21;
|
this->stateFlags2 |= PLAYER_STATE2_21;
|
||||||
}
|
}
|
||||||
else if ((this->naviTextId == 0) && !func_8008E9C4(this) && CHECK_BTN_ALL(sControlInput->press.button, BTN_CUP) &&
|
else if ((this->naviTextId == 0 || CVar_GetS32("gNaviOnL", 0)) &&
|
||||||
|
!func_8008E9C4(this) && CHECK_BTN_ALL(sControlInput->press.button, BTN_CUP) &&
|
||||||
(YREG(15) != 0x10) && (YREG(15) != 0x20) && !func_8083B8F4(this, globalCtx)) {
|
(YREG(15) != 0x10) && (YREG(15) != 0x20) && !func_8083B8F4(this, globalCtx)) {
|
||||||
func_80078884(NA_SE_SY_ERROR);
|
func_80078884(NA_SE_SY_ERROR);
|
||||||
}
|
}
|
||||||
@ -7838,15 +7839,35 @@ s32 func_8084285C(Player* this, f32 arg1, f32 arg2, f32 arg3) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
s32 func_808428D8(Player* this, GlobalContext* globalCtx) {
|
s32 func_808428D8(Player* this, GlobalContext* globalCtx) {
|
||||||
if (!Player_IsChildWithHylianShield(this) && Player_GetSwordHeld(this) && D_80853614) {
|
if (Player_IsChildWithHylianShield(this) || !Player_GetSwordHeld(this) || !D_80853614) {
|
||||||
func_80832264(globalCtx, this, &gPlayerAnim_002EC8);
|
return 0;
|
||||||
this->unk_84F = 1;
|
}
|
||||||
this->swordAnimation = 0xC;
|
|
||||||
this->currentYaw = this->actor.shape.rot.y + this->unk_6BE;
|
func_80832264(globalCtx, this, &gPlayerAnim_002EC8);
|
||||||
|
this->unk_84F = 1;
|
||||||
|
this->swordAnimation = 0xC;
|
||||||
|
this->currentYaw = this->actor.shape.rot.y + this->unk_6BE;
|
||||||
|
|
||||||
|
if (!CVar_GetS32("gCrouchStabHammerFix", 0)) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
u32 swordId;
|
||||||
|
if (Player_HoldsBrokenKnife(this)) {
|
||||||
|
swordId = 1;
|
||||||
|
} else {
|
||||||
|
swordId = Player_GetSwordHeld(this) - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (swordId != 4 && !CVar_GetS32("gCrouchStabFix", 0)) { // 4 = Megaton Hammer
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 flags = D_80854488[swordId][0];
|
||||||
|
func_80837918(this, 0, flags);
|
||||||
|
func_80837918(this, 1, flags);
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 func_80842964(Player* this, GlobalContext* globalCtx) {
|
s32 func_80842964(Player* this, GlobalContext* globalCtx) {
|
||||||
@ -9876,8 +9897,15 @@ void func_808473D4(GlobalContext* globalCtx, Player* this) {
|
|||||||
this->unk_837 = 20;
|
this->unk_837 = 20;
|
||||||
}
|
}
|
||||||
else if (this->unk_837 != 0) {
|
else if (this->unk_837 != 0) {
|
||||||
doAction = DO_ACTION_NONE;
|
if (CVar_GetS32("gInstantPutaway", 0) != 0)
|
||||||
this->unk_837--;
|
{
|
||||||
|
this->unk_837 = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
doAction = DO_ACTION_NONE;
|
||||||
|
this->unk_837--;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Interface_SetDoAction(globalCtx, doAction);
|
Interface_SetDoAction(globalCtx, doAction);
|
||||||
|
@ -11,9 +11,9 @@
|
|||||||
#include "textures/nintendo_rogo_static/nintendo_rogo_static.h"
|
#include "textures/nintendo_rogo_static/nintendo_rogo_static.h"
|
||||||
#include <soh/Enhancements/bootcommands.h>
|
#include <soh/Enhancements/bootcommands.h>
|
||||||
#include "GameVersions.h"
|
#include "GameVersions.h"
|
||||||
|
#include <soh/SaveManager.h>
|
||||||
|
|
||||||
const char* GetGameVersionString();
|
const char* GetGameVersionString();
|
||||||
|
|
||||||
char* quote;
|
char* quote;
|
||||||
|
|
||||||
void Title_PrintBuildInfo(Gfx** gfxp) {
|
void Title_PrintBuildInfo(Gfx** gfxp) {
|
||||||
@ -224,72 +224,6 @@ void Title_Draw(TitleContext* this) {
|
|||||||
void Title_Main(GameState* thisx) {
|
void Title_Main(GameState* thisx) {
|
||||||
TitleContext* this = (TitleContext*)thisx;
|
TitleContext* this = (TitleContext*)thisx;
|
||||||
|
|
||||||
if (CVar_GetS32("gSkipLogoTitle",0)!=0) {
|
|
||||||
gSaveContext.language = CVar_GetS32("gLanguages", 0);
|
|
||||||
Sram_InitSram(&this->state);
|
|
||||||
s16 selectedfile = CVar_GetS32("gSaveFileID", 0);
|
|
||||||
if (selectedfile == 4) {
|
|
||||||
selectedfile = 0xFF;
|
|
||||||
} else if(selectedfile == 0){
|
|
||||||
gSaveContext.fileNum = selectedfile;
|
|
||||||
gSaveContext.gameMode = 0;
|
|
||||||
this->state.running = false;
|
|
||||||
SET_NEXT_GAMESTATE(&this->state, FileChoose_Init, SelectContext);
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
selectedfile--;
|
|
||||||
if (selectedfile < 0) {
|
|
||||||
selectedfile = 0xFF;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (selectedfile == 0xFF) {
|
|
||||||
gSaveContext.fileNum = selectedfile;
|
|
||||||
Sram_OpenSave();
|
|
||||||
gSaveContext.gameMode = 0;
|
|
||||||
this->state.running = false;
|
|
||||||
SET_NEXT_GAMESTATE(&this->state, Select_Init, SelectContext);
|
|
||||||
} else {
|
|
||||||
gSaveContext.fileNum = selectedfile;
|
|
||||||
Sram_OpenSave();
|
|
||||||
gSaveContext.gameMode = 0;
|
|
||||||
this->state.running = false;
|
|
||||||
//return;
|
|
||||||
SET_NEXT_GAMESTATE(&this->state, Gameplay_Init, GlobalContext);
|
|
||||||
}
|
|
||||||
gSaveContext.respawn[0].entranceIndex = -1;
|
|
||||||
gSaveContext.respawnFlag = 0;
|
|
||||||
gSaveContext.seqId = (u8)NA_BGM_DISABLED;
|
|
||||||
gSaveContext.natureAmbienceId = 0xFF;
|
|
||||||
gSaveContext.showTitleCard = true;
|
|
||||||
gSaveContext.dogParams = 0;
|
|
||||||
gSaveContext.timer1State = 0;
|
|
||||||
gSaveContext.timer2State = 0;
|
|
||||||
gSaveContext.eventInf[0] = 0;
|
|
||||||
gSaveContext.eventInf[1] = 0;
|
|
||||||
gSaveContext.eventInf[2] = 0;
|
|
||||||
gSaveContext.eventInf[3] = 0;
|
|
||||||
gSaveContext.unk_13EE = 0x32;
|
|
||||||
gSaveContext.nayrusLoveTimer = 0;
|
|
||||||
gSaveContext.healthAccumulator = 0;
|
|
||||||
gSaveContext.unk_13F0 = 0;
|
|
||||||
gSaveContext.unk_13F2 = 0;
|
|
||||||
gSaveContext.forcedSeqId = NA_BGM_GENERAL_SFX;
|
|
||||||
gSaveContext.skyboxTime = 0;
|
|
||||||
gSaveContext.nextTransition = 0xFF;
|
|
||||||
gSaveContext.nextCutsceneIndex = 0xFFEF;
|
|
||||||
gSaveContext.cutsceneTrigger = 0;
|
|
||||||
gSaveContext.chamberCutsceneNum = 0;
|
|
||||||
gSaveContext.nextDayTime = 0xFFFF;
|
|
||||||
gSaveContext.unk_13C3 = 0;
|
|
||||||
gSaveContext.buttonStatus[0] = gSaveContext.buttonStatus[1] = gSaveContext.buttonStatus[2] = gSaveContext.buttonStatus[3] = gSaveContext.buttonStatus[4] = BTN_ENABLED;
|
|
||||||
gSaveContext.unk_13E7 = gSaveContext.unk_13E8 = gSaveContext.unk_13EA = gSaveContext.unk_13EC = gSaveContext.unk_13F4 = 0;
|
|
||||||
gSaveContext.unk_13F6 = gSaveContext.magic;
|
|
||||||
gSaveContext.magic = 0;
|
|
||||||
gSaveContext.magicLevel = gSaveContext.magic;
|
|
||||||
gSaveContext.naviTimer = 0;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
OPEN_DISPS(this->state.gfxCtx);
|
OPEN_DISPS(this->state.gfxCtx);
|
||||||
|
|
||||||
gSPSegment(POLY_OPA_DISP++, 0, NULL);
|
gSPSegment(POLY_OPA_DISP++, 0, NULL);
|
||||||
@ -330,27 +264,94 @@ void Title_Destroy(GameState* thisx) {
|
|||||||
void Title_Init(GameState* thisx) {
|
void Title_Init(GameState* thisx) {
|
||||||
//u32 size = 0;
|
//u32 size = 0;
|
||||||
TitleContext* this = (TitleContext*)thisx;
|
TitleContext* this = (TitleContext*)thisx;
|
||||||
|
FileChooseContext* FileChooseCtx = (FileChooseContext*)thisx;
|
||||||
|
|
||||||
quote = SetQuote();
|
if (CVar_GetS32("gSkipLogoTitle",0)) {
|
||||||
|
bool saveloading = false;
|
||||||
|
Sram_InitSram(&this->state.init);
|
||||||
|
gSaveContext.language = CVar_GetS32("gLanguages", 0);
|
||||||
|
s32 selectedfile = CVar_GetS32("gSaveFileID", 0);
|
||||||
|
if (selectedfile == 4) {
|
||||||
|
if (CVar_GetS32("gDebugEnabled",0)) {
|
||||||
|
selectedfile = 0xFF;
|
||||||
|
} else {
|
||||||
|
selectedfile = 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (selectedfile < 0) {
|
||||||
|
selectedfile = 3; //If somehow the save file number under 0 revert back to 3 to prevent boot error
|
||||||
|
}
|
||||||
|
if(selectedfile == 3){
|
||||||
|
saveloading = true;
|
||||||
|
gSaveContext.seqId = (u8)NA_BGM_DISABLED;
|
||||||
|
gSaveContext.natureAmbienceId = 0xFF;
|
||||||
|
gSaveContext.gameMode = 1;
|
||||||
|
SET_NEXT_GAMESTATE(&this->state, FileChoose_Init, FileChooseContext);
|
||||||
|
this->state.running = false;
|
||||||
|
return;
|
||||||
|
} else if (selectedfile == 0xFF || selectedfile > 3) {
|
||||||
|
saveloading = true;
|
||||||
|
Sram_InitDebugSave();
|
||||||
|
gSaveContext.fileNum = selectedfile;
|
||||||
|
SET_NEXT_GAMESTATE(&this->state, Select_Init, SelectContext);
|
||||||
|
this->state.running = false;
|
||||||
|
return;
|
||||||
|
} else if (selectedfile >= 0 && selectedfile <= 2) {
|
||||||
|
if (Save_Exist(selectedfile) == true) { //The file exist load it
|
||||||
|
saveloading = true;
|
||||||
|
gSaveContext.fileNum = selectedfile;
|
||||||
|
Sram_OpenSave();
|
||||||
|
gSaveContext.gameMode = 0;
|
||||||
|
gSaveContext.magic = gSaveContext.magic;
|
||||||
|
SET_NEXT_GAMESTATE(&this->state, Gameplay_Init, GlobalContext);
|
||||||
|
this->state.running = false;
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
if (CVar_GetS32("gCreateNewSave",0)) {
|
||||||
|
//File do not exist create a new save file
|
||||||
|
saveloading = true;
|
||||||
|
Sram_InitSram(&FileChooseCtx->state.init);
|
||||||
|
gSaveContext.fileNum = selectedfile;
|
||||||
|
Sram_InitSave(FileChooseCtx);
|
||||||
|
Sram_OpenSave();
|
||||||
|
gSaveContext.gameMode = 0;
|
||||||
|
SET_NEXT_GAMESTATE(&this->state, Gameplay_Init, GlobalContext);
|
||||||
|
this->state.running = false;
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
//File do not exist but user do not wish to auto create a save file with blank name
|
||||||
|
saveloading = true;
|
||||||
|
gSaveContext.seqId = (u8)NA_BGM_DISABLED;
|
||||||
|
gSaveContext.natureAmbienceId = 0xFF;
|
||||||
|
gSaveContext.gameMode = 1;
|
||||||
|
SET_NEXT_GAMESTATE(&this->state, FileChoose_Init, FileChooseContext);
|
||||||
|
this->state.running = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
quote = SetQuote();
|
||||||
|
|
||||||
//this->staticSegment = GAMESTATE_ALLOC_MC(&this->state, size);
|
//this->staticSegment = GAMESTATE_ALLOC_MC(&this->state, size);
|
||||||
osSyncPrintf("z_title.c\n");
|
osSyncPrintf("z_title.c\n");
|
||||||
//ASSERT(this->staticSegment != NULL);
|
//ASSERT(this->staticSegment != NULL);
|
||||||
|
|
||||||
//ResourceMgr_CacheDirectory("nintendo_rogo_static*");
|
//ResourceMgr_CacheDirectory("nintendo_rogo_static*");
|
||||||
|
|
||||||
// Disable vismono
|
// Disable vismono
|
||||||
D_801614B0.a = 0;
|
D_801614B0.a = 0;
|
||||||
R_UPDATE_RATE = 1;
|
R_UPDATE_RATE = 1;
|
||||||
Matrix_Init(&this->state);
|
Matrix_Init(&this->state);
|
||||||
View_Init(&this->view, this->state.gfxCtx);
|
View_Init(&this->view, this->state.gfxCtx);
|
||||||
this->state.main = Title_Main;
|
this->state.main = Title_Main;
|
||||||
this->state.destroy = Title_Destroy;
|
this->state.destroy = Title_Destroy;
|
||||||
this->exit = false;
|
this->exit = false;
|
||||||
gSaveContext.fileNum = 0xFF;
|
gSaveContext.fileNum = 0xFF;
|
||||||
this->ult = 0;
|
this->ult = 0;
|
||||||
this->unk_1D4 = 0x14;
|
this->unk_1D4 = 0x14;
|
||||||
this->coverAlpha = 255;
|
this->coverAlpha = 255;
|
||||||
this->addAlpha = -3;
|
this->addAlpha = -3;
|
||||||
this->visibleDuration = 0x3C;
|
this->visibleDuration = 0x3C;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -637,24 +637,23 @@ void KaleidoScope_DrawEquipment(GlobalContext* globalCtx) {
|
|||||||
gItemIcons[sAdultUpgradeItemBases[i] + CUR_UPG_VALUE(sAdultUpgrades[i]) - 1], 32, 32, 0);
|
gItemIcons[sAdultUpgradeItemBases[i] + CUR_UPG_VALUE(sAdultUpgrades[i]) - 1], 32, 32, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Draw inventory screen icons
|
||||||
for (k = 0, bit = rowStart, point = 4; k < 3; k++, point += 4, temp++, bit++) {
|
for (k = 0, bit = rowStart, point = 4; k < 3; k++, point += 4, temp++, bit++) {
|
||||||
|
|
||||||
|
int itemId = ITEM_SWORD_KOKIRI + temp;
|
||||||
|
bool age_restricted = (gItemAgeReqs[itemId] != 9) && (gItemAgeReqs[itemId] != gSaveContext.linkAge);
|
||||||
|
if (age_restricted) {
|
||||||
|
gsDPSetGrayscaleColor(POLY_KAL_DISP++, 109, 109, 109, 255);
|
||||||
|
gsSPGrayscale(POLY_KAL_DISP++, true);
|
||||||
|
}
|
||||||
if (((u32)i == 0) && (k == 2) && (gSaveContext.bgsFlag != 0)) {
|
if (((u32)i == 0) && (k == 2) && (gSaveContext.bgsFlag != 0)) {
|
||||||
KaleidoScope_DrawQuadTextureRGBA32(globalCtx->state.gfxCtx, gBiggoronSwordIconTex, 32, 32, point);
|
KaleidoScope_DrawQuadTextureRGBA32(globalCtx->state.gfxCtx, gBiggoronSwordIconTex, 32, 32, point);
|
||||||
} else if ((i == 0) && (k == 2) && (gBitFlags[bit + 1] & gSaveContext.inventory.equipment)) {
|
} else if ((i == 0) && (k == 2) && (gBitFlags[bit + 1] & gSaveContext.inventory.equipment)) {
|
||||||
KaleidoScope_DrawQuadTextureRGBA32(globalCtx->state.gfxCtx, gBrokenGiantsKnifeIconTex, 32, 32, point);
|
KaleidoScope_DrawQuadTextureRGBA32(globalCtx->state.gfxCtx, gBrokenGiantsKnifeIconTex, 32, 32, point);
|
||||||
}
|
} else if (gBitFlags[bit] & gSaveContext.inventory.equipment) {
|
||||||
if (gBitFlags[bit] & gSaveContext.inventory.equipment) {
|
|
||||||
int itemId = ITEM_SWORD_KOKIRI + temp;
|
|
||||||
bool not_acquired = (gItemAgeReqs[itemId] != 9) && (gItemAgeReqs[itemId] != gSaveContext.linkAge);
|
|
||||||
if (not_acquired) {
|
|
||||||
gsDPSetGrayscaleColor(POLY_KAL_DISP++, 109, 109, 109, 255);
|
|
||||||
gsSPGrayscale(POLY_KAL_DISP++, true);
|
|
||||||
}
|
|
||||||
KaleidoScope_DrawQuadTextureRGBA32(globalCtx->state.gfxCtx, gItemIcons[itemId], 32, 32, point);
|
KaleidoScope_DrawQuadTextureRGBA32(globalCtx->state.gfxCtx, gItemIcons[itemId], 32, 32, point);
|
||||||
gsSPGrayscale(POLY_KAL_DISP++, false);
|
|
||||||
}
|
}
|
||||||
|
gsSPGrayscale(POLY_KAL_DISP++, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user