Cosmetics editor - Feature requested (#841)

* Precise positionning, reset margin and pos

* Fix big hearts issues

* add + and - to the editor

* add const to the char*

* Fix labels issues
This commit is contained in:
Baoulettes 2022-07-22 01:33:39 +02:00 committed by GitHub
parent c7c16c39b0
commit df756b2ce0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 119 additions and 56 deletions

View File

@ -1,6 +1,7 @@
#include "CosmeticsEditor.h"
#include "../../util.h"
#include "../libultraship/ImGuiImpl.h"
#include "GameSettings.h"
#include <array>
#include <bit>
@ -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();

View File

@ -1,4 +1,5 @@
#pragma once
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);

View File

@ -1035,15 +1035,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);
@ -1056,7 +1050,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);

View File

@ -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;

View File

@ -4796,10 +4796,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