summaryrefslogtreecommitdiff
path: root/template/COMMON_ISSUES.md
diff options
context:
space:
mode:
authorIndrajith K L2025-11-05 01:50:32 +0530
committerIndrajith K L2025-11-05 01:50:32 +0530
commit10c22d35678f96e722f25a12badca98febb2921e (patch)
treefe71581d11747f32ceebb31839034d61e7a55614 /template/COMMON_ISSUES.md
parent2d565e5bcb0e2eab93d9d1bab520bbbaf7457a07 (diff)
downloadreilua-enhanced-10c22d35678f96e722f25a12badca98febb2921e.tar.gz
reilua-enhanced-10c22d35678f96e722f25a12badca98febb2921e.tar.bz2
reilua-enhanced-10c22d35678f96e722f25a12badca98febb2921e.zip
Adds Game Jam Ready Templates & ReiLua API Updates
(Most of the code is Copilot Generated LOL)
Diffstat (limited to 'template/COMMON_ISSUES.md')
-rw-r--r--template/COMMON_ISSUES.md149
1 files changed, 149 insertions, 0 deletions
diff --git a/template/COMMON_ISSUES.md b/template/COMMON_ISSUES.md
new file mode 100644
index 0000000..4d3af26
--- /dev/null
+++ b/template/COMMON_ISSUES.md
@@ -0,0 +1,149 @@
+# Common Issues and Solutions
+
+## ESC Key Closes the Game
+
+### Problem
+By default, RayLib sets ESC as the exit key. When you press ESC, `WindowShouldClose()` returns true and the game closes immediately, even if you want to use ESC for pause menus or other game functionality.
+
+### Solution
+Disable the default ESC exit key behavior by calling `RL.SetExitKey(0)` in your `RL.init()` function:
+
+```lua
+function RL.init()
+ -- Window setup
+ RL.SetWindowTitle("My Game")
+
+ -- Disable ESC key from closing the window
+ RL.SetExitKey(0) -- 0 = KEY_NULL (no exit key)
+
+ -- OR set a different exit key
+ -- RL.SetExitKey(RL.KEY_F12) -- Use F12 instead
+
+ -- Rest of initialization...
+end
+```
+
+### Options
+
+**Option 1: No Exit Key (Recommended for Games)**
+```lua
+RL.SetExitKey(0) -- Disable exit key completely
+```
+Now ESC (and any key) won't close the game. Handle exit through:
+- Menu option (File → Exit)
+- Alt+F4 (Windows default)
+- Close window button (X)
+
+**Option 2: Different Exit Key**
+```lua
+RL.SetExitKey(RL.KEY_F12) -- Use F12 to exit
+```
+Now only F12 will close the game, ESC is free for pause menus.
+
+**Option 3: Custom Exit Handling**
+```lua
+-- In RL.update()
+if RL.IsKeyPressed(RL.KEY_ESCAPE) then
+ -- Show pause menu or confirmation dialog
+ GameState.push(pauseMenu)
+end
+
+if RL.IsKeyPressed(RL.KEY_F10) then
+ -- Exit game
+ RL.CloseWindow()
+end
+```
+
+### Technical Details
+
+**What happens by default:**
+1. RayLib sets ESC as the default exit key
+2. When ESC is pressed, `WindowShouldClose()` returns true
+3. Main loop in `src/main.c` checks this and exits
+
+**After calling `RL.SetExitKey(0)`:**
+1. No key triggers `WindowShouldClose()`
+2. ESC is now available for your game logic
+3. You control when the game exits
+
+### Example: Pause Menu with ESC
+
+```lua
+-- In your game state:
+function GameState:update(dt)
+ -- Pause with ESC
+ if RL.IsKeyPressed(RL.KEY_ESCAPE) then
+ if self.paused then
+ self.paused = false
+ else
+ self.paused = true
+ end
+ end
+
+ if not self.paused then
+ -- Update game logic
+ end
+end
+```
+
+### Template Fix
+
+The template's `main.lua` has been updated with:
+```lua
+RL.SetExitKey(0) -- Disable ESC exit key
+```
+
+This allows the game state to use ESC for pause functionality without closing the game.
+
+### Related Functions
+
+- `RL.SetExitKey(key)` - Set which key exits the game
+- `RL.WindowShouldClose()` - Check if game should close
+- `RL.CloseWindow()` - Manually close the window
+- `RL.IsKeyPressed(key)` - Check if key was pressed this frame
+
+### Development Tip
+
+During development, you might want quick exit. Consider:
+```lua
+function RL.init()
+ RL.SetExitKey(0) -- Disable ESC
+
+ -- But add debug exit key
+ if DEBUG_MODE then
+ RL.SetExitKey(RL.KEY_F12)
+ end
+end
+```
+
+Or handle it in update:
+```lua
+function RL.update(dt)
+ -- Debug: Quick exit with Shift+ESC
+ if RL.IsKeyDown(RL.KEY_LEFT_SHIFT) and RL.IsKeyPressed(RL.KEY_ESCAPE) then
+ RL.CloseWindow()
+ end
+end
+```
+
+## Other Common Issues
+
+### Window Closes When X Button Clicked
+This is normal behavior. If you want to show a confirmation dialog:
+```lua
+function RL.update(dt)
+ if RL.WindowShouldClose() then
+ -- Show "Are you sure?" dialog
+ -- If player cancels, need to prevent close somehow
+ end
+end
+```
+Note: Preventing X button close is tricky with RayLib's current API.
+
+### Alt+F4 Closes Game
+This is OS-level behavior and cannot be easily disabled. It's recommended to save game state frequently.
+
+---
+
+**Updated**: 2025-11-05
+**Template Version**: 1.0