Adds Game Jam Ready Templates & ReiLua API Updates

(Most of the code is Copilot Generated LOL)
This commit is contained in:
2025-11-05 01:50:32 +05:30
parent 2d565e5bcb
commit 10c22d3567
13 changed files with 2396 additions and 1 deletions

View File

@@ -0,0 +1,225 @@
# Window Configuration - Quick Summary
## ✅ What Was Added
Created comprehensive window configuration documentation and improved template.
### Files Created/Modified
1. **`template/WINDOW_CONFIG.md`** (12+ KB) - Complete guide covering:
- Window size configuration
- Fullscreen modes (true fullscreen, borderless, toggle)
- Window flags (VSync, resizable, transparent, etc.)
- Window states (maximize, minimize, focus)
- Monitor information
- 5 complete working examples
- Quick reference guide
- Best practices
2. **`template/main.lua`** - Updated with:
- Better default window size (1280x720 instead of 800x600)
- Window resizable flag
- Minimum window size constraint
- START_FULLSCREEN configuration option
- Borderless fullscreen toggle (F1/F11)
- Window resize detection
- Better console output
3. **`template/README.md`** - Updated with:
- Reference to WINDOW_CONFIG.md
- New window configuration options
## 🎮 Quick Usage
### Set Window Size
```lua
-- In main.lua configuration
local WINDOW_WIDTH = 1920
local WINDOW_HEIGHT = 1080
-- Or at runtime
RL.SetWindowSize({1920, 1080})
```
### Enable Fullscreen
```lua
-- Toggle with F1 or F11 (already in template)
-- Or start in fullscreen
local START_FULLSCREEN = true -- In main.lua
-- Or manually
RL.ToggleBorderlessWindowed() -- Borderless (recommended)
RL.ToggleFullscreen() -- True fullscreen
```
### Make Window Resizable
```lua
-- Already enabled in template!
RL.SetWindowState(RL.FLAG_WINDOW_RESIZABLE)
RL.SetWindowMinSize({800, 600}) -- Optional min size
```
### Common Resolutions
```lua
RL.SetWindowSize({1280, 720}) -- HD (720p)
RL.SetWindowSize({1920, 1080}) -- Full HD (1080p)
RL.SetWindowSize({2560, 1440}) -- QHD (1440p)
RL.SetWindowSize({3840, 2160}) -- 4K (2160p)
```
### Window Flags
```lua
RL.SetWindowState(RL.FLAG_VSYNC_HINT) -- VSync (in template)
RL.SetWindowState(RL.FLAG_WINDOW_RESIZABLE) -- Resizable (in template)
RL.SetWindowState(RL.FLAG_FULLSCREEN_MODE) -- Fullscreen
RL.SetWindowState(RL.FLAG_WINDOW_TOPMOST) -- Always on top
RL.SetWindowState(RL.FLAG_MSAA_4X_HINT) -- Antialiasing
```
## 📚 All Available Functions
### Size
- `RL.SetWindowSize({width, height})` - Set window size
- `RL.GetScreenSize()` - Get current size
- `RL.SetWindowMinSize({w, h})` - Set minimum size
- `RL.SetWindowMaxSize({w, h})` - Set maximum size
### Fullscreen
- `RL.ToggleBorderlessWindowed()` - Borderless fullscreen (recommended)
- `RL.ToggleFullscreen()` - True fullscreen
- `RL.IsWindowFullscreen()` - Check if fullscreen
### Window State
- `RL.MaximizeWindow()` - Maximize
- `RL.MinimizeWindow()` - Minimize
- `RL.RestoreWindow()` - Restore
- `RL.IsWindowMaximized()` - Check maximized
- `RL.IsWindowMinimized()` - Check minimized
- `RL.IsWindowFocused()` - Check focused
- `RL.IsWindowResized()` - Check if resized this frame
### Flags
- `RL.SetWindowState(flag)` - Enable flag
- `RL.ClearWindowState(flag)` - Disable flag
- `RL.IsWindowState(flag)` - Check flag
### Position
- `RL.SetWindowPosition({x, y})` - Set position
- `RL.GetWindowPosition()` - Get position
### Monitor
- `RL.GetMonitorCount()` - Number of monitors
- `RL.GetMonitorWidth(index)` - Monitor width
- `RL.GetMonitorHeight(index)` - Monitor height
- `RL.GetMonitorName(index)` - Monitor name
- `RL.GetCurrentMonitor()` - Current monitor index
## 💡 Best Practices
### Recommended Settings
```lua
function RL.init()
-- Good default settings
RL.SetWindowSize({1280, 720})
RL.SetWindowState(RL.FLAG_VSYNC_HINT)
RL.SetWindowState(RL.FLAG_WINDOW_RESIZABLE)
RL.SetWindowMinSize({800, 600})
end
```
### Fullscreen Toggle
```lua
-- Use borderless windowed (faster alt-tab, no resolution change)
if RL.IsKeyPressed(RL.KEY_F11) then
RL.ToggleBorderlessWindowed()
end
```
### Responsive Design
```lua
function RL.update(dt)
if RL.IsWindowResized() then
local size = RL.GetScreenSize()
-- Update your UI/camera to new size
updateViewport(size[1], size[2])
end
end
```
### Adaptive Resolution
```lua
-- Auto-size to 80% of monitor
local monitorW = RL.GetMonitorWidth(0)
local monitorH = RL.GetMonitorHeight(0)
RL.SetWindowSize({
math.floor(monitorW * 0.8),
math.floor(monitorH * 0.8)
})
-- Center window
local size = RL.GetScreenSize()
RL.SetWindowPosition({
(monitorW - size[1]) / 2,
(monitorH - size[2]) / 2
})
```
## 🎯 Common Use Cases
### 1. Options Menu
```lua
-- Store in config
config.resolution = {1920, 1080}
config.fullscreen = false
-- Apply settings
if config.fullscreen then
RL.ToggleBorderlessWindowed()
else
RL.SetWindowSize(config.resolution)
end
```
### 2. Multiple Resolution Presets
```lua
local resolutions = {
{1280, 720}, -- HD
{1920, 1080}, -- Full HD
{2560, 1440} -- QHD
}
function changeResolution(index)
RL.SetWindowSize(resolutions[index])
end
```
### 3. Game Jam Quick Setup
```lua
-- Fast setup for prototyping
RL.SetWindowSize({1280, 720})
RL.SetWindowState(RL.FLAG_VSYNC_HINT)
RL.SetExitKey(0) -- Disable ESC exit
```
## 📖 Documentation
For complete documentation with examples, see:
- **[WINDOW_CONFIG.md](WINDOW_CONFIG.md)** - Full guide with 5 complete examples
- **[COMMON_ISSUES.md](COMMON_ISSUES.md)** - Troubleshooting
## 🎮 Template Changes
The template now:
- ✅ Starts with 1280x720 (better than 800x600)
- ✅ Window is resizable
- ✅ Has minimum size constraint (800x600)
- ✅ Uses borderless fullscreen (better than true fullscreen)
- ✅ Detects window resize events
- ✅ Provides START_FULLSCREEN configuration option
- ✅ Works with F1 and F11 for fullscreen toggle
---
**Updated**: 2025-11-05
**Template Version**: 1.0