Explorar o código

all input is done

meemknight %!s(int64=3) %!d(string=hai) anos
pai
achega
39ee36abd2

+ 0 - 2
Pika/core/pikaRuntime/containerManager/containerManager.cpp

@@ -421,8 +421,6 @@ void pika::ContainerManager::update(pika::LoadedDll &loadedDll, pika::PikaWindow
 					auto io = ImGui::GetIO();
 					
 					windowInput.hasFocus = viewPort->PlatformUserData && ImGui::GetPlatformIO().Platform_GetWindowFocus(viewPort) && !io.AppFocusLost;
-					
-					
 					//windowInput.hasFocus = windowInput.hasFocus && !io.AppFocusLost;
 				}
 				

+ 26 - 0
Pika/core/sharedRuntime/windowSystemm/callbacks.cpp

@@ -1,6 +1,27 @@
 #include "callbacks.h"
 #include "window.h"
+#include <string.h>
 
+void addTypedInput(pika::Input &input, unsigned int c)
+{
+	if (c < 127)
+	{
+		auto l = strlen(input.typedInput);
+		if (l < sizeof(input.typedInput) - 1)
+		{
+			input.typedInput[l++] = c;
+			input.typedInput[l] = 0;
+		}
+	}
+}
+
+void characterCallback(GLFWwindow *window, unsigned int codepoint)
+{
+	auto ptr = glfwGetWindowUserPointer(window);
+	pika::PikaWindow &pikaWindow = *(pika::PikaWindow *)ptr;
+
+	addTypedInput(pikaWindow.input, codepoint);
+}
 
 void windowFocusCallback(GLFWwindow *window, int focused)
 {
@@ -41,6 +62,11 @@ void keyCallback(GLFWwindow *window, int key, int scancode, int action, int mods
 	auto ptr = glfwGetWindowUserPointer(window);
 	pika::PikaWindow &pikaWindow = *(pika::PikaWindow *)ptr;
 
+	if ((action == GLFW_REPEAT || action == GLFW_PRESS) && key == GLFW_KEY_BACKSPACE)
+	{
+		addTypedInput(pikaWindow.input, 8);
+	}
+
 	if(key >= GLFW_KEY_A && key <= GLFW_KEY_Z)
 	{
 		int index = key - GLFW_KEY_A;

+ 2 - 1
Pika/core/sharedRuntime/windowSystemm/callbacks.h

@@ -5,4 +5,5 @@
 
 void mouseCallback(GLFWwindow *window, int key, int action, int mods);
 void windowFocusCallback(GLFWwindow *window, int focused);
-void keyCallback(GLFWwindow *window, int key, int scancode, int action, int mods);
+void keyCallback(GLFWwindow *window, int key, int scancode, int action, int mods);
+void characterCallback(GLFWwindow *window, unsigned int codepoint);

+ 2 - 0
Pika/core/sharedRuntime/windowSystemm/input.h

@@ -66,6 +66,8 @@ namespace pika
 
 		Button buttons[Button::BUTTONS_COUNT] = {};
 		
+		char typedInput[20] = {};
+
 		//focus is here because it makes sense for the replay
 		bool hasFocus = 0;
 

+ 5 - 0
Pika/core/sharedRuntime/windowSystemm/window.cpp

@@ -49,6 +49,7 @@ void pika::PikaWindow::create()
 
 	glfwSetMouseButtonCallback(context.wind, mouseCallback);
 	glfwSetWindowFocusCallback(context.wind, windowFocusCallback);
+	glfwSetCharCallback(context.wind, characterCallback);
 	glfwSetKeyCallback(context.wind, keyCallback);
 
 	//todo macro
@@ -123,11 +124,15 @@ void pika::PikaWindow::update()
 		processInputBefore(input.buttons[i]);
 	}
 
+	memset(input.typedInput, 0, sizeof(input.typedInput));
+
 #pragma endregion
 
+
 	glfwPollEvents();
 	glfwSwapBuffers(context.wind);
 
+
 #pragma region window state
 
 	{

BIN=BIN
Pika/engineResources/r.recording


BIN=BIN
Pika/engineResources/r.snapshot


BIN=BIN
Pika/engineResources/recording1.recording


BIN=BIN
Pika/engineResources/recording1.snapshot


BIN=BIN
Pika/engineResources/recordtest.recording


BIN=BIN
Pika/engineResources/recordtest.snapshot


BIN=BIN
Pika/engineResources/test1.recording


BIN=BIN
Pika/engineResources/test1.snapshot


BIN=BIN
Pika/engineResources/testR.recording


BIN=BIN
Pika/engineResources/testR.snapshot


+ 3 - 0
Pika/gameplay/containers/pikaGameplay.h

@@ -69,6 +69,8 @@ struct Gameplay : public Container
 			requestedInfo.consoleWrite("save\n");
 		}
 
+		requestedInfo.consoleWrite(input.typedInput);
+
 
 
 		if (input.buttons[pika::Button::P].held())
@@ -96,6 +98,7 @@ struct Gameplay : public Container
 			Colors_Red, {}, 0.f);
 
 
+
 		//requestedInfo.consoleWrite((std::string("Mouse: ") + std::to_string(input.mouseX) + " " +
 		//	std::to_string(input.mouseY) + "\n").c_str());
 

+ 2 - 2
Pika/resources/logs.txt

@@ -1,2 +1,2 @@
-#2022-12-07 10:07:57: Created container: Gameplay
-#2022-12-07 10:08:27: Destroyed continer: Gameplay #1
+#2022-12-18 15:29:35: Created container: Gameplay
+#2022-12-18 15:29:47: Destroyed continer: Gameplay #1