diff --git a/soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp b/soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp index 9804d6c69..64281ddd5 100644 --- a/soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp +++ b/soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp @@ -1,6 +1,7 @@ #include "CosmeticsEditor.h" #include "../../util.h" #include "../libultraship/ImGuiImpl.h" +#include "GameSettings.h" #include #include @@ -97,6 +98,50 @@ const char* RainbowColorCvarList[] = { "gCCFileChoosePrim", "gCCFileChooseTextPrim", "gCCEquipmentsPrim", "gCCItemsPrim", "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) { u8 arrayLength = sizeof(RainbowColorCvarList) / sizeof(*RainbowColorCvarList); for (u8 s = 0; s < arrayLength; s++) { @@ -140,6 +185,7 @@ void LoadRainbowColor(bool& open) { } } } + void Table_InitHeader(bool has_header = true) { if (has_header) { ImGui::TableHeadersRow(); @@ -147,6 +193,7 @@ void Table_InitHeader(bool has_header = true) { ImGui::TableNextRow(); ImGui::TableNextColumn(); 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); } void Table_NextCol() { @@ -160,8 +207,10 @@ void Table_NextLine() { ImGui::AlignTextToFramePadding(); ImGui::PushItemWidth(ImGui::GetContentRegionAvail().x); } + 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. + ImGui::PushItemWidth(ImGui::GetContentRegionAvail().x-60); ImGui::SetCursorPosX(ImGui::GetCursorPosX() + ImGui::GetContentRegionAvail().x - 15); ImGui::SmallButton("?"); 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. ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 22); } + ImGui::PushItemWidth(ImGui::GetContentRegionAvail().x); } void Draw_Npcs(){ SohImGui::EnhancementCheckbox("Custom colors for Navi", "gUseNaviCol"); @@ -376,10 +426,18 @@ void Draw_Placements(){ if (ImGui::BeginTable("tableMargins", 1, ImGuiTableFlags_BordersH | ImGuiTableFlags_BordersV)) { ImGui::TableSetupColumn("General margins settings", ImGuiTableColumnFlags_WidthStretch | ImGuiTableColumnFlags_IndentEnable | ImGuiTableColumnFlags_NoSort, TablesCellsWidth); Table_InitHeader(); - SohImGui::EnhancementSliderInt("Top : %dx", "##UIMARGINT", "gHUDMargin_T", (ImGui::GetWindowViewport()->Size.y/2)*-1, 25, ""); - SohImGui::EnhancementSliderInt("Left: %dx", "##UIMARGINL", "gHUDMargin_L", -25, ImGui::GetWindowViewport()->Size.x, ""); - SohImGui::EnhancementSliderInt("Right: %dx", "##UIMARGINR", "gHUDMargin_R", (ImGui::GetWindowViewport()->Size.x)*-1, 25, ""); - SohImGui::EnhancementSliderInt("Bottom: %dx", "##UIMARGINB", "gHUDMargin_B", (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, "", 0, true); + 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, "", 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::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::EnhancementRadioButton("Hidden", "gHeartsCountPosType", 4); 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::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."); ImGui::NewLine(); 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::EnhancementRadioButton("Hidden", "gMagicBarPosType", 4); 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::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."); ImGui::NewLine(); 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::EnhancementRadioButton("Hidden", "gVSOAPosType", 4); //in case you want only SFX 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."); s16 Min_X_Dpad = 0; s16 Max_X_Dpad = ImGui::GetWindowViewport()->Size.x/2; @@ -456,7 +514,7 @@ void Draw_Placements(){ } else if(CVar_GetS32("gVSOAPosType",0) == 4){ 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."); ImGui::NewLine(); 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::EnhancementRadioButton("Hidden", "gBBtnPosType", 4); 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::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."); ImGui::NewLine(); 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::EnhancementRadioButton("Hidden", "gABtnPosType", 4); 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::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."); ImGui::NewLine(); 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::EnhancementRadioButton("Hidden", "gStartBtnPosType", 4); 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::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."); ImGui::NewLine(); 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::EnhancementRadioButton("Hidden", "gCBtnUPosType", 4); 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."); s16 Min_X_CU = 0; s16 Max_X_CU = ImGui::GetWindowViewport()->Size.x/2; @@ -561,7 +619,7 @@ void Draw_Placements(){ } else if(CVar_GetS32("gCBtnUPosType",0) == 4){ 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."); ImGui::NewLine(); 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::EnhancementRadioButton("Hidden", "gCBtnDPosType", 4); 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."); s16 Min_X_CD = 0; s16 Max_X_CD = ImGui::GetWindowViewport()->Size.x/2; @@ -594,7 +652,7 @@ void Draw_Placements(){ } else if(CVar_GetS32("gCBtnDPosType",0) == 4){ 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."); ImGui::NewLine(); 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::EnhancementRadioButton("Hidden", "gCBtnLPosType", 4); 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."); s16 Min_X_CL = 0; s16 Max_X_CL = ImGui::GetWindowViewport()->Size.x/2; @@ -627,7 +685,7 @@ void Draw_Placements(){ } else if(CVar_GetS32("gCBtnDPosType",0) == 4){ 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."); ImGui::NewLine(); 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::EnhancementRadioButton("Hidden", "gCBtnRPosType", 4); 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."); s16 Min_X_CR = 0; s16 Max_X_CR = ImGui::GetWindowViewport()->Size.x/2; @@ -660,7 +718,7 @@ void Draw_Placements(){ } else if(CVar_GetS32("gCBtnRPosType",0) == 4){ 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."); ImGui::NewLine(); 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::EnhancementRadioButton("Hidden", "gDPadPosType", 4); 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."); s16 Min_X_Dpad = 0; s16 Max_X_Dpad = ImGui::GetWindowViewport()->Size.x/2; @@ -691,7 +749,7 @@ void Draw_Placements(){ } else if(CVar_GetS32("gDPadPosType",0) == 4){ 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."); ImGui::NewLine(); 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::EnhancementRadioButton("Hidden", "gMinimapPosType", 4); 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::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."); ImGui::NewLine(); 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::EnhancementRadioButton("Hidden", "gSKCPosType", 4); 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::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."); ImGui::NewLine(); 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::EnhancementRadioButton("Hidden", "gRCPosType", 4); 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::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."); ImGui::NewLine(); 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::EnhancementRadioButton("Hidden", "gCarrotsPosType", 4); 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::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."); ImGui::NewLine(); 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::EnhancementRadioButton("Hidden", "gTimersPosType", 4); 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::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."); ImGui::NewLine(); 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::EnhancementRadioButton("Hidden", "gASPosType", 4); 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::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."); ImGui::NewLine(); 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::EnhancementRadioButton("Hidden", "gTCMPosType", 4); 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::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."); ImGui::NewLine(); 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::EnhancementRadioButton("Hidden", "gTCBPosType", 4); 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::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."); ImGui::NewLine(); ImGui::EndTable(); diff --git a/soh/soh/Enhancements/cosmetics/CosmeticsEditor.h b/soh/soh/Enhancements/cosmetics/CosmeticsEditor.h index 0db9e6522..9bfeee91d 100644 --- a/soh/soh/Enhancements/cosmetics/CosmeticsEditor.h +++ b/soh/soh/Enhancements/cosmetics/CosmeticsEditor.h @@ -1,4 +1,5 @@ #pragma once void InitCosmeticsEditor();//Init the menu itself -void LoadRainbowColor(); \ No newline at end of file +void LoadRainbowColor(); +void NewSliderInt(const char* text, const char* id, const char* cvarName, int min, int max, const char* format, int defaultValue = 0); \ No newline at end of file diff --git a/soh/src/code/z_en_item00.c b/soh/src/code/z_en_item00.c index a2447ac4c..6ca5d81b5 100644 --- a/soh/src/code/z_en_item00.c +++ b/soh/src/code/z_en_item00.c @@ -1036,15 +1036,9 @@ void EnItem00_Draw(Actor* thisx, GlobalContext* globalCtx) { Matrix_Scale(mtxScale, mtxScale, mtxScale, MTXMODE_APPLY); break; } 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 == -1) { s8 bankIndex = Object_GetIndex(&globalCtx->objectCtx, OBJECT_GI_HEART); - if (Object_IsLoaded(&globalCtx->objectCtx, bankIndex)) { this->actor.objBankIndex = bankIndex; Actor_SetObjectDependency(globalCtx, &this->actor); @@ -1057,7 +1051,16 @@ void EnItem00_Draw(Actor* thisx, GlobalContext* globalCtx) { } 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: if (CVar_GetS32("gNewDrops", 0)) { Actor_SetScale(&this->actor, 0.2f); diff --git a/soh/src/code/z_message_PAL.c b/soh/src/code/z_message_PAL.c index af6a149c9..e711e8abe 100644 --- a/soh/src/code/z_message_PAL.c +++ b/soh/src/code/z_message_PAL.c @@ -520,12 +520,12 @@ void Message_DrawTextboxIcon(GlobalContext* globalCtx, Gfx** p, s16 x, s16 y) { sIconEnvColors[1][1] = 255; sIconEnvColors[1][2] = 130; } else if (CVar_GetS32("gHudColors", 1) == 2) { - sIconPrimColors[0][0] = (CVar_GetS32("gCCABtnPrimR", 50)/255)*95; - sIconPrimColors[0][1] = (CVar_GetS32("gCCABtnPrimG", 255)/255)*95; - sIconPrimColors[0][2] = (CVar_GetS32("gCCABtnPrimB", 130)/255)*95; - sIconPrimColors[1][0] = CVar_GetS32("gCCABtnPrimR", 50); - sIconPrimColors[1][1] = CVar_GetS32("gCCABtnPrimG", 255); - sIconPrimColors[1][2] = CVar_GetS32("gCCABtnPrimB", 130); + sIconPrimColors[0][0] = (CVar_GetS32("gCCABtnPrimR", 0)/255)*95; + sIconPrimColors[0][1] = (CVar_GetS32("gCCABtnPrimG", 200)/255)*95; + sIconPrimColors[0][2] = (CVar_GetS32("gCCABtnPrimB", 80)/255)*95; + sIconPrimColors[1][0] = CVar_GetS32("gCCABtnPrimR", 0); + sIconPrimColors[1][1] = CVar_GetS32("gCCABtnPrimG", 200); + sIconPrimColors[1][2] = CVar_GetS32("gCCABtnPrimB", 80); sIconEnvColors[0][0] = 0; sIconEnvColors[0][1] = 0; sIconEnvColors[0][2] = 0; diff --git a/soh/src/code/z_parameter.c b/soh/src/code/z_parameter.c index 4c7443f9f..2a4921d7f 100644 --- a/soh/src/code/z_parameter.c +++ b/soh/src/code/z_parameter.c @@ -4798,10 +4798,11 @@ void Interface_Draw(GlobalContext* globalCtx) { PosY_BtnA = CVar_GetS32("gABtnPosY", 0)+Y_Margins_BtnA; rAIconY = 98.0f - PosY_BtnA; 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); rAIconX = OTRGetDimensionFromLeftEdge(CVar_GetS32("gABtnPosX", 0)+X_Margins_BtnA); } 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); rAIconX= OTRGetDimensionFromRightEdge(CVar_GetS32("gABtnPosX", 0)+X_Margins_BtnA); } else if (CVar_GetS32("gABtnPosType", 0) == 3) {//Anchor None