commit 78b0343067fa925c25df0cbe9ba50631138d716f Author: MrLetsplay2003 Date: Sat Sep 9 16:57:42 2023 +0200 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6f31401 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +build/ +.vscode/ diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..c440048 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "dependencies/kekengine"] + path = dependencies/kekengine + url = https://github.com/MrLetsplay2003/KekEngineV2.git diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..2ea1585 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,68 @@ +cmake_minimum_required(VERSION 3.13) + +project(Kekrooms VERSION 1.0) + +option(KEKROOMS_DEBUG "Build with debug information" OFF) + +if(UNIX) + set(KEKROOMS_TARGET_PLATFORM Linux) +endif() +if(WIN32) + set(KEKROOMS_TARGET_PLATFORM Windows) +endif() + +message("Debug: ${KEKROOMS_DEBUG}") +message("Target platform: ${KEKROOMS_TARGET_PLATFORM}") + +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) + +set(KEKROOMS_RESOURCE_DIR "${PROJECT_SOURCE_DIR}/src/kekrooms/res") + +file(GLOB_RECURSE KEKROOMS_SOURCE_FILES "src/kekrooms/cpp/*.cpp") +file(GLOB_RECURSE KEKROOMS_RESOURCE_FILES "${KEKROOMS_RESOURCE_DIR}/*") +file(GLOB_RECURSE KEKROOMS_RELATIVE_RESOURCE_FILES RELATIVE ${KEKROOMS_RESOURCE_DIR} "${KEKROOMS_RESOURCE_DIR}/*") + +if(${KEKROOMS_DEBUG}) + add_compile_options(-Wall -g) +else() + add_compile_options(-Wall -O3) +endif() + +add_subdirectory(dependencies/kekengine) + +# kekrooms resources +add_custom_target(kekrooms_res ALL DEPENDS ${KEKENGINE_RESOURCE_FILES}) + +add_dependencies(kekrooms_res kekengine_static) + +get_target_property(KEKENGINE_BINARY_DIR kekengine "RUNTIME_OUTPUT_DIRECTORY") + +add_custom_command(TARGET kekrooms_res PRE_BUILD + BYPRODUCTS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/resources.tar + COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" + COMMAND ${CMAKE_COMMAND} -E + copy "${KEKENGINE_BINARY_DIR}/resources.tar" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/resources.tar" + COMMAND ${CMAKE_COMMAND} -E + chdir ${KEKROOMS_RESOURCE_DIR} + tar rf ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/resources.tar ${KEKROOMS_RELATIVE_RESOURCE_FILES}) + +# kekrooms +add_executable(kekrooms ${KEKROOMS_SOURCE_FILES}) +add_dependencies(kekrooms kekrooms_res) + + +find_package(PkgConfig REQUIRED) + +pkg_check_modules(FREETYPE REQUIRED freetype2) +target_include_directories(kekrooms PUBLIC ${FREETYPE_INCLUDE_DIRS}) + +pkg_check_modules(BULLET REQUIRED bullet) +target_include_directories(kekrooms PUBLIC ${BULLET_INCLUDE_DIRS}) + +if(WIN32) + target_link_options(kekrooms PUBLIC -static-libgcc -static-libstdc++ -static) +endif() + +target_link_libraries(kekrooms PUBLIC kekengine_static) diff --git a/dependencies/kekengine b/dependencies/kekengine new file mode 160000 index 0000000..3d9dd14 --- /dev/null +++ b/dependencies/kekengine @@ -0,0 +1 @@ +Subproject commit 3d9dd14fd00d978c49ae591110756a4100f1b307 diff --git a/src/kekrooms/cpp/kekrooms.cpp b/src/kekrooms/cpp/kekrooms.cpp new file mode 100644 index 0000000..9d88f18 --- /dev/null +++ b/src/kekrooms/cpp/kekrooms.cpp @@ -0,0 +1,34 @@ +#include +#include +#include + +using namespace kek; + +void buttonClicked(void *) { + std::cout << "Someone clicked me! :O" << std::endl; +} + +int main() { + if(Engine::init() != KEK_SUCCESS) return 1; + + Scene *scene = new Scene(); + Engine::setActiveScene(scene); + + ButtonElement *button = new ButtonElement(uiPx(10), uiPx(50), uiPx(300), uiPx(100)); + //button->origin = Origin::BOTTOM_LEFT; + button->color = Colors::CYAN; + button->hoverColor = Colors::WHITE; + //button->text->origin = Origin::BOTTOM_LEFT; + button->text->color = Colors::RED; + button->text->setText("Click me pls uwu!"); + button->onClick = Callable(buttonClicked, nullptr); + + //TextElement *element = new TextElement(uiPx(10), uiSh(1) - uiPx(10)); + //element->origin = Origin::BOTTOM_LEFT; + //element->setText("Hello World!"); + UI::addElement(button); + + if(Engine::start() != KEK_SUCCESS) return 1; + + Engine::exit(); +} diff --git a/src/kekrooms/res/file b/src/kekrooms/res/file new file mode 100644 index 0000000..e69de29