aboutsummaryrefslogtreecommitdiff
path: root/mwe/events/src/inputSystem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mwe/events/src/inputSystem.cpp')
-rw-r--r--mwe/events/src/inputSystem.cpp62
1 files changed, 61 insertions, 1 deletions
diff --git a/mwe/events/src/inputSystem.cpp b/mwe/events/src/inputSystem.cpp
index ffab84b..bb26e8b 100644
--- a/mwe/events/src/inputSystem.cpp
+++ b/mwe/events/src/inputSystem.cpp
@@ -5,9 +5,14 @@ InputSystem::InputSystem() {}
void InputSystem::registerButton(Button* button) {
buttons.push_back(button);
}
+void InputSystem::registerTextInput(TextInput* input) {
+ textInputs.push_back(input);
+}
+void InputSystem::registerText(Text* label) {
+ texts.push_back(label);
+}
void InputSystem::processInput() {
-
SDL_Event event;
while (SDL_PollEvent(&event)) {
switch (event.type) {
@@ -16,6 +21,11 @@ void InputSystem::processInput() {
break;
case SDL_KEYDOWN:
triggerEvent(KeyPressedEvent(getCustomKey(event.key.keysym.sym)));
+ processKeyPress(event.key.keysym.sym);
+ break;
+ case SDL_TEXTINPUT:
+ // Process typed characters
+ processTextInput(event.text.text);
break;
case SDL_MOUSEBUTTONDOWN: {
int mouseX, mouseY;
@@ -28,6 +38,7 @@ void InputSystem::processInput() {
}
}
+
void InputSystem::processMouseClick(int mouseX, int mouseY) {
for (auto* button : buttons) {
if (mouseX >= button->x && mouseX <= (button->x + button->width) &&
@@ -35,5 +46,54 @@ void InputSystem::processMouseClick(int mouseX, int mouseY) {
button->onClick();
}
}
+ for(auto* textInput : textInputs){
+ if (mouseX >= textInput->x && mouseX <= textInput->x + textInput->width &&
+ mouseY >= textInput->y && mouseY <= textInput->y + textInput->height) {
+ textInput->isActive = true;
+ } else {
+ textInput->isActive = false;
+ }
+ }
+}
+void InputSystem::processKeyPress(Keycode key) {
+ // for (auto* textInput : textInputs) {
+ // if (textInput->isActive) {
+ // if (key == SDLK_RETURN || key == SDLK_KP_ENTER) {
+ // // Submit the text
+ // if (textInput->onSubmit) {
+ // textInput->onSubmit();
+ // }
+ // }
+ // else if (key == SDLK_BACKSPACE) {
+ // // Handle backspace
+ // if (!textInput->textBuffer.empty() && textInput->caretPosition > 0) {
+ // textInput->textBuffer.erase(textInput->caretPosition - 1, 1);
+ // textInput->caretPosition--;
+ // }
+ // }
+ // else if (key == SDLK_LEFT) {
+ // // Move caret left
+ // if (textInput->caretPosition > 0) {
+ // textInput->caretPosition--;
+ // }
+ // }
+ // else if (key == SDLK_RIGHT) {
+ // // Move caret right
+ // if (textInput->caretPosition < textInput->textBuffer.size()) {
+ // textInput->caretPosition++;
+ // }
+ // }
+ // }
+ // }
+}
+
+void InputSystem::processTextInput(const std::string& text) {
+ // for (auto* textInput : textInputs) {
+ // if (textInput->isActive) {
+ // // Insert text at caret position
+ // textInput->textBuffer.insert(textInput->caretPosition, text);
+ // textInput->caretPosition += text.length();
+ // }
+ // }
}