Progress
This commit is contained in:
parent
79a40cb58b
commit
dddb556553
|
@ -5,6 +5,9 @@
|
||||||
|
|
||||||
namespace SHADE
|
namespace SHADE
|
||||||
{
|
{
|
||||||
|
static std::vector<std::string> bindingRenames;
|
||||||
|
static std::vector<bool> positiveKeyListening;
|
||||||
|
|
||||||
//Internal Helper function
|
//Internal Helper function
|
||||||
std::string labelConcat(char const* label, size_t entryNumber)
|
std::string labelConcat(char const* label, size_t entryNumber)
|
||||||
{
|
{
|
||||||
|
@ -30,6 +33,9 @@ namespace SHADE
|
||||||
{
|
{
|
||||||
std::string newBindingName = "Binding" + std::to_string(SHInputManager::CountBindings());
|
std::string newBindingName = "Binding" + std::to_string(SHInputManager::CountBindings());
|
||||||
SHInputManager::AddBinding(newBindingName);
|
SHInputManager::AddBinding(newBindingName);
|
||||||
|
bindingRenames.resize(SHInputManager::CountBindings());
|
||||||
|
for (auto& s : bindingRenames)
|
||||||
|
s.clear();
|
||||||
}
|
}
|
||||||
if (ImGui::IsItemHovered())
|
if (ImGui::IsItemHovered())
|
||||||
{
|
{
|
||||||
|
@ -45,29 +51,28 @@ namespace SHADE
|
||||||
for (auto& binding : SHInputManager::GetBindings())
|
for (auto& binding : SHInputManager::GetBindings())
|
||||||
{
|
{
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
std::string bindingName = binding.first; //Binding name to use as argument when modifying binding values
|
|
||||||
|
ImGui::Text("Entry Number %d", entryNumber);
|
||||||
|
|
||||||
//Non-modifiable binding name
|
//Non-modifiable binding name
|
||||||
ImGui::Text("Binding Name: %s", binding.first);
|
ImGui::Text("Binding Name: %s", binding.first);
|
||||||
std::string bindingModifiedName;
|
ImGui::InputText(labelConcat("##bindingModifyName", entryNumber).c_str(), &bindingRenames[entryNumber]);
|
||||||
//MAKE THE INPUTTEXT WORK
|
|
||||||
ImGui::InputText(labelConcat("##bindingModifyName", entryNumber).c_str(), &bindingModifiedName);
|
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
if (ImGui::Button(labelConcat("Rename##bindingRename", entryNumber).c_str()))
|
if (ImGui::Button(labelConcat("Rename##bindingRename", entryNumber).c_str()))
|
||||||
{
|
{
|
||||||
SHLOGV_CRITICAL("\"{0}\" > \"{1}\"", bindingName, bindingModifiedName);
|
SHInputManager::RenameBinding(binding.first, bindingRenames[entryNumber]);
|
||||||
SHInputManager::RenameBinding(bindingName, bindingModifiedName);
|
bindingRenames[entryNumber].clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Modifiable binding name
|
//Modifiable binding name
|
||||||
/*size_t constexpr maxLen = 256; //Maximum binding name length
|
/*size_t constexpr maxLen = 256; //Maximum binding name length
|
||||||
static char bindingNameCStr[maxLen];
|
static char bindingNameCStr[maxLen];
|
||||||
std::copy(bindingName.begin(),
|
std::copy(binding.first.begin(),
|
||||||
bindingName.length() >= maxLen ?
|
binding.first.length() >= maxLen ?
|
||||||
bindingName.begin() + maxLen :
|
binding.first.begin() + maxLen :
|
||||||
bindingName.end(), //Does not take into account null terminator
|
binding.first.end(), //Does not take into account null terminator
|
||||||
bindingNameCStr);
|
bindingNameCStr);
|
||||||
bindingNameCStr[bindingName.length()] = '\0'; //Null terminator
|
bindingNameCStr[binding.first.length()] = '\0'; //Null terminator
|
||||||
|
|
||||||
//First character
|
//First character
|
||||||
char firstChar = bindingNameCStr[0];
|
char firstChar = bindingNameCStr[0];
|
||||||
|
@ -78,8 +83,8 @@ namespace SHADE
|
||||||
if (std::strlen(bindingNameCStr) < 1)
|
if (std::strlen(bindingNameCStr) < 1)
|
||||||
bindingNameCStr[0] = firstChar;
|
bindingNameCStr[0] = firstChar;
|
||||||
//Rename binding in the input manager
|
//Rename binding in the input manager
|
||||||
SHInputManager::RenameBinding(bindingName, std::string{ bindingNameCStr });
|
SHInputManager::RenameBinding(binding.first, std::string{ bindingNameCStr });
|
||||||
bindingName = std::string{ bindingNameCStr };
|
binding.first = std::string{ bindingNameCStr };
|
||||||
}
|
}
|
||||||
if (ImGui::IsItemHovered())
|
if (ImGui::IsItemHovered())
|
||||||
{
|
{
|
||||||
|
@ -92,11 +97,10 @@ namespace SHADE
|
||||||
//TODO
|
//TODO
|
||||||
ImGui::Text("Value");
|
ImGui::Text("Value");
|
||||||
|
|
||||||
|
|
||||||
//Binding Type Combo Box
|
//Binding Type Combo Box
|
||||||
int bindingType = static_cast<int>(SHInputManager::GetBindingType(bindingName));
|
int bindingType = static_cast<int>(SHInputManager::GetBindingType(binding.first));
|
||||||
if (ImGui::Combo(labelConcat("Input Type##", entryNumber).c_str(), &bindingType, "Keyboard / Mouse Buttons / Controller\0Mouse Horizontal\0Mouse Vertical\0Mouse Scroll Wheel"))
|
if (ImGui::Combo(labelConcat("Input Type##", entryNumber).c_str(), &bindingType, "Keyboard / Mouse Buttons / Controller\0Mouse Horizontal\0Mouse Vertical\0Mouse Scroll Wheel"))
|
||||||
SHInputManager::SetBindingType(bindingName, static_cast<SHInputManager::SH_BINDINGTYPE>(bindingType));
|
SHInputManager::SetBindingType(binding.first, static_cast<SHInputManager::SH_BINDINGTYPE>(bindingType));
|
||||||
if (ImGui::IsItemHovered())
|
if (ImGui::IsItemHovered())
|
||||||
{
|
{
|
||||||
ImGui::BeginTooltip();
|
ImGui::BeginTooltip();
|
||||||
|
@ -109,9 +113,9 @@ namespace SHADE
|
||||||
}
|
}
|
||||||
|
|
||||||
//Inversion
|
//Inversion
|
||||||
bool bindingInvert = SHInputManager::GetBindingInverted(bindingName);
|
bool bindingInvert = SHInputManager::GetBindingInverted(binding.first);
|
||||||
if (ImGui::Checkbox(labelConcat("Inverted##", entryNumber).c_str(), &bindingInvert))
|
if (ImGui::Checkbox(labelConcat("Inverted##", entryNumber).c_str(), &bindingInvert))
|
||||||
SHInputManager::SetBindingInverted(bindingName, bindingInvert);
|
SHInputManager::SetBindingInverted(binding.first, bindingInvert);
|
||||||
if (ImGui::IsItemHovered())
|
if (ImGui::IsItemHovered())
|
||||||
{
|
{
|
||||||
ImGui::BeginTooltip();
|
ImGui::BeginTooltip();
|
||||||
|
@ -124,9 +128,9 @@ namespace SHADE
|
||||||
}
|
}
|
||||||
|
|
||||||
//Sensitivity
|
//Sensitivity
|
||||||
double bindingSensitivity = SHInputManager::GetBindingSensitivity(bindingName);
|
double bindingSensitivity = SHInputManager::GetBindingSensitivity(binding.first);
|
||||||
if (ImGui::InputDouble(labelConcat("Sensitivity##", entryNumber).c_str(), &bindingSensitivity))
|
if (ImGui::InputDouble(labelConcat("Sensitivity##", entryNumber).c_str(), &bindingSensitivity))
|
||||||
SHInputManager::SetBindingSensitivity(bindingName, bindingSensitivity);
|
SHInputManager::SetBindingSensitivity(binding.first, bindingSensitivity);
|
||||||
if (ImGui::IsItemHovered())
|
if (ImGui::IsItemHovered())
|
||||||
{
|
{
|
||||||
ImGui::BeginTooltip();
|
ImGui::BeginTooltip();
|
||||||
|
@ -138,12 +142,12 @@ namespace SHADE
|
||||||
|
|
||||||
//Below this section is only for KB/M type bindings
|
//Below this section is only for KB/M type bindings
|
||||||
//Not relevant for mouse movement and scrolling
|
//Not relevant for mouse movement and scrolling
|
||||||
if (SHInputManager::GetBindingType(bindingName) == SHInputManager::SH_BINDINGTYPE::KB_MB_CONTROLLER)
|
if (SHInputManager::GetBindingType(binding.first) == SHInputManager::SH_BINDINGTYPE::KB_MB_CONTROLLER)
|
||||||
{
|
{
|
||||||
//Dead
|
//Dead
|
||||||
float bindingDead = static_cast<float>(SHInputManager::GetBindingDead(bindingName));
|
float bindingDead = static_cast<float>(SHInputManager::GetBindingDead(binding.first));
|
||||||
if (ImGui::SliderFloat(labelConcat("Deadzone##", entryNumber).c_str(), &bindingDead, 0.0f, 1.0f))
|
if (ImGui::SliderFloat(labelConcat("Deadzone##", entryNumber).c_str(), &bindingDead, 0.0f, 1.0f))
|
||||||
SHInputManager::SetBindingDead(bindingName, static_cast<double>(bindingDead));
|
SHInputManager::SetBindingDead(binding.first, static_cast<double>(bindingDead));
|
||||||
if (ImGui::IsItemHovered())
|
if (ImGui::IsItemHovered())
|
||||||
{
|
{
|
||||||
ImGui::BeginTooltip();
|
ImGui::BeginTooltip();
|
||||||
|
@ -152,9 +156,9 @@ namespace SHADE
|
||||||
}
|
}
|
||||||
|
|
||||||
//Gravity
|
//Gravity
|
||||||
double bindingGravity = SHInputManager::GetBindingGravity(bindingName);
|
double bindingGravity = SHInputManager::GetBindingGravity(binding.first);
|
||||||
if (ImGui::InputDouble(labelConcat("Gravity##", entryNumber).c_str(), &bindingGravity))
|
if (ImGui::InputDouble(labelConcat("Gravity##", entryNumber).c_str(), &bindingGravity))
|
||||||
SHInputManager::SetBindingGravity(bindingName, static_cast<double>(bindingGravity));
|
SHInputManager::SetBindingGravity(binding.first, static_cast<double>(bindingGravity));
|
||||||
if (ImGui::IsItemHovered())
|
if (ImGui::IsItemHovered())
|
||||||
{
|
{
|
||||||
ImGui::BeginTooltip();
|
ImGui::BeginTooltip();
|
||||||
|
@ -164,9 +168,9 @@ namespace SHADE
|
||||||
}
|
}
|
||||||
|
|
||||||
//Snap
|
//Snap
|
||||||
bool bindingSnap = SHInputManager::GetBindingSnap(bindingName);
|
bool bindingSnap = SHInputManager::GetBindingSnap(binding.first);
|
||||||
if (ImGui::Checkbox(labelConcat("Snap##", entryNumber).c_str(), &bindingSnap))
|
if (ImGui::Checkbox(labelConcat("Snap##", entryNumber).c_str(), &bindingSnap))
|
||||||
SHInputManager::SetBindingSnap(bindingName, bindingSnap);
|
SHInputManager::SetBindingSnap(binding.first, bindingSnap);
|
||||||
if (ImGui::IsItemHovered())
|
if (ImGui::IsItemHovered())
|
||||||
{
|
{
|
||||||
ImGui::BeginTooltip();
|
ImGui::BeginTooltip();
|
||||||
|
|
|
@ -100,6 +100,187 @@ namespace SHADE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string SHInputManager::getKeycodeName(SH_KEYCODE k) noexcept
|
||||||
|
{
|
||||||
|
int kInt = static_cast<int>(k);
|
||||||
|
//Numbers
|
||||||
|
if (kInt >= static_cast<int>(SH_KEYCODE::NUMBER_0) && kInt <= static_cast<int>(SH_KEYCODE::NUMBER_9))
|
||||||
|
{
|
||||||
|
return std::to_string(kInt - 48);
|
||||||
|
}
|
||||||
|
//Letters
|
||||||
|
if (kInt >= static_cast<int>(SH_KEYCODE::A) && kInt <= static_cast<int>(SH_KEYCODE::Z))
|
||||||
|
{
|
||||||
|
return std::string(1, static_cast<char>(kInt));
|
||||||
|
}
|
||||||
|
//Numpads
|
||||||
|
if (kInt >= static_cast<int>(SH_KEYCODE::NUMPAD_0) && kInt <= static_cast<int>(SH_KEYCODE::NUMPAD_9))
|
||||||
|
{
|
||||||
|
return "Keypad " + std::to_string(kInt - 96);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Other keys
|
||||||
|
switch (k)
|
||||||
|
{
|
||||||
|
case SH_KEYCODE::LMB:
|
||||||
|
return "Left Mouse Button";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::RMB:
|
||||||
|
return "Right Mouse Button";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::CANCEL:
|
||||||
|
return "Cancel";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::MMB:
|
||||||
|
return "Middle Mouse Button";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::XMB1:
|
||||||
|
return "X1 Mouse Button";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::XMB2:
|
||||||
|
return "X2 Mouse Button";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::BACKSPACE:
|
||||||
|
return "Backspace";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::TAB:
|
||||||
|
return "Tab";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::CLEAR:
|
||||||
|
return "Clear";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::ENTER:
|
||||||
|
return "Enter";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::SHIFT:
|
||||||
|
return "Shift";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::CTRL:
|
||||||
|
return "Ctrl";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::ALT:
|
||||||
|
return "Alt";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::PAUSE:
|
||||||
|
return "Pause";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::CAPS_LOCK:
|
||||||
|
return "Caps Lock";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::IME_KANA:
|
||||||
|
return "IME Kana / Hangul Mode";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::IME_ON:
|
||||||
|
return "IME On";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::IME_JUNJA:
|
||||||
|
return "IME Junja Mode";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::IME_FINAL:
|
||||||
|
return "IME Final Mode";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::IME_HANJA:
|
||||||
|
return "IME Kanji / Hanja Mode";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::IME_OFF:
|
||||||
|
return "IME Off";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::ESCAPE:
|
||||||
|
return "Esc";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::IME_CONVERT:
|
||||||
|
return "IME Convert";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::IME_NONCONVERT:
|
||||||
|
return "IME Nonconvert";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::IME_ACCEPT:
|
||||||
|
return "IME Accept";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::IME_MODECHANGE:
|
||||||
|
return "IME Mode Change Request";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::SPACE:
|
||||||
|
return "Spacebar";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::PAGE_UP:
|
||||||
|
return "Page Up";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::PAGE_DOWN:
|
||||||
|
return "Page Down";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::END:
|
||||||
|
return "End";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::HOME:
|
||||||
|
return "Home";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::LEFT_ARROW:
|
||||||
|
return "Left Arrow";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::UP_ARROW:
|
||||||
|
return "Up Arrow";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::RIGHT_ARROW:
|
||||||
|
return "Right Arrow";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::DOWN_ARROW:
|
||||||
|
return "Down Arrow";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::SELECT:
|
||||||
|
return "Select";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::PRINT:
|
||||||
|
return "Print";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::EXECUTE:
|
||||||
|
return "Execute";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::PRINT_SCREEN:
|
||||||
|
return "Print Screen";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::INSERT:
|
||||||
|
return "Insert";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::DEL:
|
||||||
|
return "Delete";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::HELP:
|
||||||
|
return "Help";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::NUMBER_0:
|
||||||
|
return "0";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::NUMBER_1:
|
||||||
|
return "1";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::NUMBER_2:
|
||||||
|
return "2";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::NUMBER_3:
|
||||||
|
return "3";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::NUMBER_4:
|
||||||
|
return "4";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::NUMBER_5:
|
||||||
|
return "5";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::NUMBER_6:
|
||||||
|
return "6";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::NUMBER_7:
|
||||||
|
return "7";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::NUMBER_8:
|
||||||
|
return "8";
|
||||||
|
break;
|
||||||
|
case SH_KEYCODE::NUMBER_9:
|
||||||
|
return "9";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//The Binding File format presently goes as such:
|
//The Binding File format presently goes as such:
|
||||||
/*
|
/*
|
||||||
* Binding count
|
* Binding count
|
||||||
|
|
|
@ -415,6 +415,9 @@ namespace SHADE
|
||||||
return controllerInUse;
|
return controllerInUse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Get the name of keycode
|
||||||
|
static std::string getKeycodeName(SH_KEYCODE const keycode) noexcept;
|
||||||
|
|
||||||
//For testing purposes
|
//For testing purposes
|
||||||
//static void PrintCurrentState() noexcept;
|
//static void PrintCurrentState() noexcept;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue