Adds Game Jam Ready Templates & ReiLua API Updates
(Most of the code is Copilot Generated LOL)
This commit is contained in:
108
template/main.lua
Normal file
108
template/main.lua
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user