From 077b2759ad23870fd0598975bee2143814284ed6 Mon Sep 17 00:00:00 2001 From: Patrick Schwarzer Date: Mon, 28 Apr 2025 03:28:25 +0200 Subject: [PATCH] Fix cmake files and add input file --- .vscode/launch.json | 2 +- CMakeLists.txt | 2 +- engine/CMakeLists.txt | 14 ++++++++------ engine/input.cpp | 35 +++++++++++++++++++++++++++++++++++ engine/input.h | 4 ++++ engine/main.cpp | 26 ++++++++++++++------------ engine/main.h | 6 +----- test.lua | 2 +- 8 files changed, 65 insertions(+), 26 deletions(-) create mode 100644 engine/input.cpp create mode 100644 engine/input.h diff --git a/.vscode/launch.json b/.vscode/launch.json index 02d1f13..45d610c 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -30,7 +30,7 @@ "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], - "externalConsole": true, + "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb", "setupCommands": [ diff --git a/CMakeLists.txt b/CMakeLists.txt index 9af29cd..35eb7ad 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@  -cmake_minimum_required (VERSION 3.8) +cmake_minimum_required(VERSION 4.0) if (POLICY CMP0141) cmake_policy(SET CMP0141 NEW) diff --git a/engine/CMakeLists.txt b/engine/CMakeLists.txt index 9cdf8a7..110d882 100644 --- a/engine/CMakeLists.txt +++ b/engine/CMakeLists.txt @@ -9,6 +9,8 @@ set(CMAKE_CXX_STANDARD 20) set(SOURCES main.cpp main.h + input.cpp + input.h ${CMAKE_SOURCE_DIR}/include/glad.c ) @@ -26,15 +28,15 @@ if(WIN32) ${CMAKE_SOURCE_DIR}/lib/luajit.lib ) elseif(UNIX) - include_directories(${SDL2_INCLUDE_DIRS} ${LUAJIT_INCLUDE_DIRS}) - link_directories(${SDL2_LIBRARY_DIRS} ${LUAJIT_LIBRARY_DIRS}) + find_package(SDL2 REQUIRED) + + include_directories(${SDL2_INCLUDE_DIRS}) target_link_libraries(engine - ${SDL2_LIBRARIES} - ${LUAJIT_LIBRARIES} + SDL2::SDL2 luajit - dl # just in case LuaJIT needs dynamic linking - m # math lib, commonly needed + dl + m ) endif() diff --git a/engine/input.cpp b/engine/input.cpp new file mode 100644 index 0000000..6356338 --- /dev/null +++ b/engine/input.cpp @@ -0,0 +1,35 @@ + +#include "input.h" + +void process_input(SDL_Keysym keysym) { + + + + + + + + // Call engine.keypressed(key) + lua_getglobal(luaState, "engine"); + if (lua_istable(luaState, -1)) { + lua_getfield(luaState, -1, "KeyPressed"); + if (lua_isfunction(luaState, -1)) { + lua_pushinteger(luaState, keysym.scancode); + + if (lua_pcall(luaState, 1, 0, 0) != LUA_OK) { + const char* error = lua_tostring(luaState, -1); + std::cerr << "Lua error in engine.keypressed: " << error << std::endl; + } + } + } + + switch (keysym.scancode) { + case SDL_SCANCODE_ESCAPE: + isRunning = false; + + std::cout << "Closing game\n"; + break; + default: + break; + } +} diff --git a/engine/input.h b/engine/input.h new file mode 100644 index 0000000..312421b --- /dev/null +++ b/engine/input.h @@ -0,0 +1,4 @@ + +#pragma once + +void process_input(); \ No newline at end of file diff --git a/engine/main.cpp b/engine/main.cpp index 3939dd2..db3baa0 100644 --- a/engine/main.cpp +++ b/engine/main.cpp @@ -9,6 +9,8 @@ extern "C" { #include } +#include "input.h" + bool isRunning = false; lua_State* luaState; @@ -95,22 +97,22 @@ int main(int argc, char* argv[]) { while (isRunning) { while (SDL_PollEvent(&event)) { switch (event.type) { - case SDL_QUIT: - isRunning = false; - break; + case SDL_QUIT: + isRunning = false; + break; - case SDL_KEYUP: - SDL_KeyboardEvent* key; - key = &event.key; - SDL_Keysym* keysym; - keysym = &key->keysym; + case SDL_KEYUP: + SDL_KeyboardEvent* key; + key = &event.key; + SDL_Keysym* keysym; + keysym = &key->keysym; - process_input(*keysym); + process_input(*keysym); - break; + break; - default: - break; + default: + break; } } diff --git a/engine/main.h b/engine/main.h index 1cd63a2..9181bd7 100644 --- a/engine/main.h +++ b/engine/main.h @@ -1,8 +1,4 @@ -// Game-Engine.h : Include file for standard system include files, -// or project specific include files. - + #pragma once #include - -// TODO: Reference additional headers your program requires here. diff --git a/test.lua b/test.lua index 0bff363..235365a 100644 --- a/test.lua +++ b/test.lua @@ -1,4 +1,4 @@ function engine.KeyPressed(key) - print("Pressed key:" .. key) + print("Pressed key: " .. key) end