From 10c22d35678f96e722f25a12badca98febb2921e Mon Sep 17 00:00:00 2001 From: Indrajith K L Date: Wed, 5 Nov 2025 01:50:32 +0530 Subject: Adds Game Jam Ready Templates & ReiLua API Updates (Most of the code is Copilot Generated LOL) --- template/main.lua | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 template/main.lua (limited to 'template/main.lua') diff --git a/template/main.lua b/template/main.lua new file mode 100644 index 0000000..d3ec4ce --- /dev/null +++ b/template/main.lua @@ -0,0 +1,108 @@ +--[[ +ReiLua-Enhanced Game Template +Entry point for your game + +This template includes: +- Classic OOP library (class system) +- GameState management (scene/state switching) +- Animation system (sprite sheet animations) +- Example menu and game states + +Quick Start: +1. Edit states/menu.lua for your main menu +2. Edit states/game.lua for your gameplay +3. Add assets to assets/ folder +4. Run with: ReiLua.exe --log --no-logo (for development) + +For production build: +1. Copy all files to ReiLua-Enhanced/build/ +2. Run: scripts\build_release.bat +]] + +-- Load libraries +local GameState = require("lib.gamestate") + +-- Load game states +local menu = require("states.menu")() +local game = require("states.game")() + +-- Game configuration +local GAME_TITLE = "My Game" +local WINDOW_WIDTH = 1280 +local WINDOW_HEIGHT = 720 +local TARGET_FPS = 60 +local START_FULLSCREEN = false + +function RL.init() + -- Window setup + RL.SetWindowTitle(GAME_TITLE) + RL.SetWindowSize({WINDOW_WIDTH, WINDOW_HEIGHT}) + RL.SetTargetFPS(TARGET_FPS) + + -- Window flags + RL.SetWindowState(RL.FLAG_VSYNC_HINT) + RL.SetWindowState(RL.FLAG_WINDOW_RESIZABLE) + + -- Set min window size for resizable window + RL.SetWindowMinSize({800, 600}) + + -- Start fullscreen if configured + if START_FULLSCREEN then + RL.ToggleBorderlessWindowed() + end + + -- Disable ESC key from closing the window (so we can use it for pause menu) + RL.SetExitKey(0) -- 0 = KEY_NULL (no exit key) + + -- Initialize audio + RL.InitAudioDevice() + + -- Register GameState callbacks + GameState.registerEvents() + + -- Start with menu state + GameState.switch(menu) + + print("Game initialized!") + print("Press F1 or F11 to toggle fullscreen") + print("Window size: " .. WINDOW_WIDTH .. "x" .. WINDOW_HEIGHT) +end + +function RL.update(delta) + -- Global hotkeys + if RL.IsKeyPressed(RL.KEY_F1) or RL.IsKeyPressed(RL.KEY_F11) then + RL.ToggleBorderlessWindowed() + end + + -- Handle window resize + if RL.IsWindowResized() then + local newSize = RL.GetScreenSize() + print("Window resized to: " .. newSize[1] .. "x" .. newSize[2]) + -- Update your camera/viewport here if needed + end + + -- GameState will handle update for current state +end + +function RL.draw() + -- GameState will handle drawing for current state +end + +function RL.exit() + -- Cleanup + RL.CloseAudioDevice() + print("Game closing...") +end + +-- Optional: Window configuration +-- Call this before InitWindow if you need custom window setup +function RL.config() + -- Example: Set custom window size before init + -- RL.SetConfigFlags(RL.FLAG_WINDOW_RESIZABLE) +end + +-- Optional: Handle window/input events +function RL.event(event) + -- Handle events here if needed + -- Example: event.type == RL.GLFW_KEY_EVENT +end -- cgit v1.2.3