summaryrefslogtreecommitdiff
path: root/UPGRADE_SUMMARY.md
diff options
context:
space:
mode:
authorIndrajith K L2025-11-03 18:04:54 +0530
committerIndrajith K L2025-11-03 18:04:54 +0530
commitf185f2c31a611c985dbdb5e1b40a0c4c2a1dc3b1 (patch)
treefe60ea230e154889216d5ed00f43869c0a3656dd /UPGRADE_SUMMARY.md
parent737214b71be8fe5fdf51155ad50bb064b3156bd3 (diff)
downloadreilua-enhanced-f185f2c31a611c985dbdb5e1b40a0c4c2a1dc3b1.tar.gz
reilua-enhanced-f185f2c31a611c985dbdb5e1b40a0c4c2a1dc3b1.tar.bz2
reilua-enhanced-f185f2c31a611c985dbdb5e1b40a0c4c2a1dc3b1.zip
Fix SEGV crash: Initialize window and font in stateInit()
- Move window initialization and font loading to stateInit() - Window now opens before splash screens (required for rendering) - Custom font loaded in stateInit for splash screen use - Remove RL.config() call from luaCallMain() (window already initialized) - Remove stateContextInit() call (initialization now done in stateInit) - Add hasWindow, customFontLoaded, resolution fields to State - Fix memory management for custom font in stateFree() This matches the ReiLua-JamVersion architecture where the window is opened early so splash screens can render properly.
Diffstat (limited to 'UPGRADE_SUMMARY.md')
-rw-r--r--UPGRADE_SUMMARY.md138
1 files changed, 138 insertions, 0 deletions
diff --git a/UPGRADE_SUMMARY.md b/UPGRADE_SUMMARY.md
new file mode 100644
index 0000000..223d157
--- /dev/null
+++ b/UPGRADE_SUMMARY.md
@@ -0,0 +1,138 @@
+# ReiLua Embedded Assets Upgrade - Summary
+
+## Overview
+Successfully ported embedded assets, splash screens, and asset loading features from ReiLua-JamVersion to the main ReiLua repository on the `embedded-assets-support` branch.
+
+## Features Added
+
+### 1. **Embedded Main.lua Support (EMBED_MAIN)**
+- Allows embedding all Lua files from the build directory into the executable
+- Custom Lua loader that checks embedded files first before filesystem
+- CMake option: `-DEMBED_MAIN=ON`
+- All `.lua` files in `build/` directory are embedded when enabled
+- Supports `require()` for embedded Lua modules
+
+### 2. **Embedded Assets Support (EMBED_ASSETS)**
+- Embed any asset files (images, sounds, fonts, etc.) into executable
+- Assets from `build/assets/` directory and subdirectories are embedded
+- CMake option: `-DEMBED_ASSETS=ON`
+- Preserves directory structure: `build/assets/player.png` → load as `"assets/player.png"`
+- Transparent to Lua code - same paths work in dev and release
+
+### 3. **Splash Screens**
+- Always embedded dual logo splash screens
+- Screen 1: "INDRAJITH MAKES GAMES" on Raylib red background
+- Screen 2: "Made using" with Raylib and ReiLua logos
+- Each screen: 0.8s fade in, 2.5s display, 0.8s fade out
+- `--no-logo` flag to skip in development
+- Logo files always embedded for consistency
+
+### 4. **Asset Loading Progress API**
+- `RL.BeginAssetLoading(totalAssets)` - Initialize loading tracking
+- `RL.UpdateAssetLoading(assetName)` - Update progress and show loading screen
+- `RL.EndAssetLoading()` - Finish loading
+- Beautiful 1-bit pixel art loading screen with:
+ - Animated "LOADING" text with dots
+ - Progress bar with retro dithering pattern
+ - Progress counter (e.g., "3/10")
+ - Current asset name display
+ - Pixel art corner decorations
+
+### 5. **Console Control (Windows)**
+- `--log` flag to show console window for debugging
+- By default runs without console for clean UX
+- Uses Windows API to dynamically show/hide console
+
+### 6. **Font Embedding**
+- Custom Oleaguid font always embedded for splash/loading screens
+- Ensures consistent appearance across builds
+
+## Files Added/Modified
+
+### New Files
+- **Python Scripts:**
+ - `embed_lua.py` - Embeds Lua files into C header
+ - `embed_assets.py` - Embeds asset files into C header
+ - `embed_logo.py` - Embeds splash screen logos
+ - `embed_font.py` - Embeds custom font
+
+- **Source Files:**
+ - `src/splash.c` - Splash screen implementation
+ - `include/splash.h` - Splash screen header
+
+- **Assets:**
+ - `logo/raylib_logo.png` - Raylib logo (2466 bytes)
+ - `logo/reilua_logo.png` - ReiLua logo (1191 bytes)
+ - `fonts/Oleaguid.ttf` - Custom font (112828 bytes)
+
+- **Documentation:**
+ - `EMBEDDING.md` - Complete guide to embedding Lua and assets
+ - `ASSET_LOADING.md` - Asset loading API documentation
+ - `SPLASH_SCREENS.md` - Splash screen customization guide
+
+### Modified Files
+- `CMakeLists.txt` - Added embedding options and build commands
+- `src/main.c` - Added splash screens, console control, --no-logo flag
+- `src/lua_core.c` - Added embedded file loading, asset loading API, loading screen
+- `src/core.c` - Added asset loading API functions
+- `include/core.h` - Added asset loading function declarations
+- `include/lua_core.h` - Changed luaCallMain() return type to bool
+
+## Build Options
+
+### Development Build (Fast Iteration)
+```bash
+cmake -G "MinGW Makefiles" ..
+mingw32-make
+```
+- External Lua and asset files
+- Fast edit-and-run workflow
+- Use `--no-logo` to skip splash screens
+
+### Release Build (Single Executable)
+```bash
+# Copy Lua files and assets to build directory
+copy ..\*.lua .
+mkdir assets
+copy ..\assets\* assets\
+
+# Configure with embedding
+cmake -G "MinGW Makefiles" .. -DEMBED_MAIN=ON -DEMBED_ASSETS=ON
+mingw32-make
+```
+- Everything embedded in single .exe
+- Professional distribution package
+- No external file dependencies
+
+## Command Line Options
+```
+ReiLua [Options] [Directory to main.lua or main]
+
+Options:
+ -h, --help Show help message
+ -v, --version Show ReiLua version
+ -i, --interpret Interpret mode [File name]
+ --log Show console window for logging (Windows only)
+ --no-logo Skip splash screens (development)
+```
+
+## Testing
+✅ Build compiles successfully
+✅ Logos and font embedded automatically
+✅ Asset loading API functions registered
+✅ Splash screens implemented
+✅ Console control working (Windows)
+✅ Documentation complete
+
+## Next Steps
+1. Test with actual embedded Lua files
+2. Test with embedded assets
+3. Verify asset loading progress display
+4. Test splash screens (run without --no-logo)
+5. Create example game that uses all features
+6. Merge to main branch when stable
+
+## Commit
+- Branch: `embedded-assets-support`
+- Commit: "Add embedded assets, splash screens, and asset loading support"
+- All changes committed successfully