diff --git a/CMakeLists.txt b/CMakeLists.txt index 967e195..8dd20e1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,20 +8,12 @@ if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif() -# --------------------------------------------------------------------------- -# Dependencies -# -# Native build: raylib + RmlUi come from nixpkgs / the `rmlui` derivation, -# found on the default system paths set up by the dev shell. -# -# Wasm build: raylib + RmlUi come from the `raylibWasm` / `rmluiWasm` -# derivations, located via -DCMAKE_PREFIX_PATH set by devShells.wasm. -# --------------------------------------------------------------------------- find_package(raylib REQUIRED) find_package(RmlUi REQUIRED) add_executable(gamejam src/main.cpp + src/Game.cpp src/Application.cpp src/backend/RaylibSystemInterface.cpp src/backend/RaylibRenderInterface.cpp @@ -39,9 +31,6 @@ target_include_directories(gamejam PRIVATE ${CMAKE_SOURCE_DIR}/src) set(ASSET_DIR ${CMAKE_SOURCE_DIR}/assets) if(EMSCRIPTEN) - # ----------------------------------------------------------------------- - # Wasm-specific settings - # ----------------------------------------------------------------------- set(CMAKE_EXECUTABLE_SUFFIX ".html") target_link_options(gamejam PRIVATE @@ -51,8 +40,7 @@ if(EMSCRIPTEN) "-sFORCE_FILESYSTEM=1" "--preload-file=${ASSET_DIR}@assets" # "--shell-file=${CMAKE_SOURCE_DIR}/shell.html" - ) - +) else() add_custom_command(TARGET gamejam POST_BUILD diff --git a/assets/main.rcss b/assets/main.rcss index 8cc2cf6..f194327 100644 --- a/assets/main.rcss +++ b/assets/main.rcss @@ -2,6 +2,8 @@ body { font-family: rmlui-debugger-font; font-size: 16px; color: white; + width: 100vw; + height: 100vh; } #panel { @@ -24,7 +26,11 @@ p { margin-bottom: 15px; } -#start-btn { +.hidden { + display: none; +} + +.menu-btn { display: block; width: 100px; padding: 8px; @@ -34,6 +40,6 @@ p { border: 1px #5a8ec5; } -#start-btn:hover { +.menu-btn:hover { background-color: #4a7eb5; } diff --git a/assets/main.rml b/assets/main.rml index 3a8102c..c959486 100644 --- a/assets/main.rml +++ b/assets/main.rml @@ -4,7 +4,7 @@ -
+

gamejam

RmlUi + raylib scaffold is alive.

diff --git a/flake.nix b/flake.nix index 32fdea5..949af12 100644 --- a/flake.nix +++ b/flake.nix @@ -25,11 +25,6 @@ "-DBUILD_TESTING=OFF" ]; - # Emscripten's toolchain file restricts find_library/find_path/find_package - # to CMAKE_FIND_ROOT_PATH (its own sysroot) by default. Our externally-built - # wasm deps (freetypeWasm, raylibWasm, rmluiWasm) live in the Nix store, - # outside that sysroot, so CMAKE_PREFIX_PATH alone is silently ignored - # unless we relax these three modes to BOTH. wasmFindOverrides = [ "-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH" "-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=BOTH" diff --git a/gdd.md b/gdd.md new file mode 100644 index 0000000..1879e13 --- /dev/null +++ b/gdd.md @@ -0,0 +1,4 @@ +# Game design doc + +*Jam theme:* TRUST NO ONE + diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..8261c6f --- /dev/null +++ b/readme.md @@ -0,0 +1 @@ +A Brackeys Game Jam 2026.2 game \ No newline at end of file diff --git a/src/Application.cpp b/src/Application.cpp index e2efddd..4d05aaf 100644 --- a/src/Application.cpp +++ b/src/Application.cpp @@ -1,10 +1,13 @@ #include "Application.h" +#include "Game.h" #include "backend/RaylibInput.h" #include #include #include +Game game; + bool Application::Init(int width, int height, const char* title, const char* documentPath) { InitWindow(width, height, title); SetTargetFPS(60); @@ -24,6 +27,8 @@ bool Application::Init(int width, int height, const char* title, const char* doc TraceLog(LOG_WARNING, "Failed to load %s", documentPath); } + game.Init(context); + return true; } @@ -36,10 +41,12 @@ void Application::Frame() { ForwardInputToRml(context); context->Update(); + game.Update(); + BeginDrawing(); ClearBackground(DARKGRAY); - // --- game world rendering goes here, before the UI --- + game.Draw2D(); context->Render(); EndDrawing(); diff --git a/src/Application.h b/src/Application.h index c12a923..9d96ff7 100644 --- a/src/Application.h +++ b/src/Application.h @@ -2,6 +2,7 @@ #include #include "backend/RaylibSystemInterface.h" #include "backend/RaylibRenderInterface.h" +#include "Game.h" class Application { public: diff --git a/src/Game.cpp b/src/Game.cpp new file mode 100644 index 0000000..affe5b0 --- /dev/null +++ b/src/Game.cpp @@ -0,0 +1,20 @@ +#include "Game.h" +#include +#include +#include +#include + +void Game::Draw2D() {return;} + +void Game::Update() { + // TODO: Remove this debug + std::cout << "Game update" << std::endl; + return; +} + +bool Game::Init(Rml::Context *context) { + if (!ctx) return false; + + ctx = context; + return true; +} \ No newline at end of file diff --git a/src/Game.h b/src/Game.h new file mode 100644 index 0000000..94f6552 --- /dev/null +++ b/src/Game.h @@ -0,0 +1,32 @@ +#pragma once + +#include +#include +enum GameState { + START_MENU, + PAUSE_MENU, + STATS_MENU, + OPTIONS_MENU, + IN_GAME +}; + +struct GameData { + GameState game_state = START_MENU; +}; + + + +class Game { +public: + GameData game_data; + + bool Init(Rml::Context *context); + + bool setup_rml_data_binding(Rml::Context *ctx, Rml::DataModelHandle &model_handle, GameData &game_data); + + void Update(); + void Draw2D(); + +private: + Rml::Context *ctx = nullptr; +}; \ No newline at end of file