# Customizing Your ReiLua Executable

This guide explains how to customize the ReiLua executable with your own branding.

## Overview

You can customize:
- Executable name
- Window icon
- File properties (company name, version, description, etc.)
- Splash screen text and logos
- Loading screen appearance

## Quick Customization Checklist

- [ ] Change executable name in CMakeLists.txt
- [ ] Replace icon.ico with your game icon
- [ ] Edit resources.rc with your game information
- [ ] Customize splash screens in src/splash.c
- [ ] Replace logo images in logo/ folder
- [ ] Rebuild the project

## 1. Changing the Executable Name

The easiest customization - change "ReiLua.exe" to "YourGame.exe".

### Steps

1. Open `CMakeLists.txt`
2. Find line 6 (near the top):
   ```cmake
   project( ReiLua )
   ```
3. Change to your game name:
   ```cmake
   project( MyAwesomeGame )
   ```
4. Rebuild:
   ```bash
   cd build
   cmake ..
   cmake --build . --config Release
   ```

Result: Executable is now named `MyAwesomeGame.exe`

## 2. Adding a Custom Icon

Replace the default icon with your game's icon.

### Requirements

- **Format**: .ico file (Windows icon format)
- **Recommended sizes**: 16x16, 32x32, 48x48, 256x256
- **Tools**: Use online converters or tools like IcoFX, GIMP, or Photoshop

### Steps

1. Create or convert your image to .ico format
2. Replace `icon.ico` in the ReiLua root folder with your icon
3. Keep the same filename (`icon.ico`) or update `resources.rc`:
   ```rc
   IDI_ICON1 ICON "your_icon.ico"
   ```
4. Rebuild the project

**Tip**: Many online tools can convert PNG to ICO:
- https://convertio.co/png-ico/
- https://www.icoconverter.com/

## 3. Customizing Executable Properties

When users right-click your .exe and select "Properties", they see file information. Customize this to show your game details.

### Steps

1. Open `resources.rc`
2. Find the `VERSIONINFO` section
3. Modify these values:

```rc
1 VERSIONINFO
FILEVERSION     1,0,0,0      // Change version numbers
PRODUCTVERSION  1,0,0,0      // Change product version
FILEFLAGSMASK   0x3fL
FILEFLAGS       0x0L
FILEOS          VOS_NT_WINDOWS32
FILETYPE        VFT_APP
FILESUBTYPE     VFT2_UNKNOWN
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "CompanyName",      "Your Studio Name"           // Your company/studio
            VALUE "FileDescription",  "Your Game - An awesome game"  // Game description
            VALUE "FileVersion",      "1.0.0.0"                    // File version string
            VALUE "InternalName",     "YourGame"                   // Internal name
            VALUE "LegalCopyright",   "Copyright (C) 2025 Your Name"  // Copyright notice
            VALUE "OriginalFilename", "YourGame.exe"               // Original filename
            VALUE "ProductName",      "Your Game"                  // Product name
            VALUE "ProductVersion",   "1.0.0.0"                    // Product version string
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END
```

### Common Values

**FileVersion / ProductVersion Format**: Major, Minor, Patch, Build
- Example: `1,0,0,0` for version 1.0.0.0
- Example: `2,3,1,5` for version 2.3.1.5

**CompanyName Examples**:
- "Your Studio Name"
- "Independent Developer"
- "Your Name Games"

**FileDescription**:
- Short description users see in file properties
- Example: "Space Adventure Game"
- Example: "Puzzle Game with Physics"

**LegalCopyright**:
- Standard format: "Copyright (C) Year Your Name"
- Example: "Copyright (C) 2025 Indie Studios"

4. Rebuild the project

## 4. Customizing Splash Screens

Change the text and logos that appear when your game starts.

### Changing Splash Screen Text

1. Open `src/splash.c`
2. Find the splash drawing function (around line 150)
3. Change this line:
   ```c
   const char* text = "YOUR STUDIO NAME";
   ```

**Style Tips**:
- Use ALL CAPS for bold impact
- Keep it short (under 30 characters)
- Examples: "INDIE STUDIO GAMES", "MADE BY YOUR NAME", "GAME JAM 2025"

### Changing Splash Screen Logos

1. Create or find your logos:
   - **Recommended size**: 256x256 pixels or smaller
   - **Format**: PNG with transparency
   - **Style**: Simple, recognizable logos work best

2. Replace these files:
   ```
   logo/raylib_logo.png  → Your game logo
   logo/reilua_logo.png  → Your studio logo (or keep ReiLua logo as credit)
   ```

3. Logo sizing:
   - Logos are automatically scaled to max 200px
   - They display side-by-side on second splash screen
   - Maintain aspect ratio

4. Rebuild the project - logos are automatically embedded

### Changing Splash Screen Timing

1. Open `src/splash.c`
2. Modify these constants at the top:
   ```c
   #define FADE_IN_TIME 0.8f    // Seconds to fade in (default: 0.8)
   #define DISPLAY_TIME 2.5f    // Seconds fully visible (default: 2.5)
   #define FADE_OUT_TIME 0.8f   // Seconds to fade out (default: 0.8)
   ```

**Recommendations**:
- Keep fade times between 0.5 - 1.5 seconds
- Display time between 1.5 - 3.5 seconds
- Total splash time ideally under 10 seconds

### Changing Splash Screen Colors

1. Open `src/splash.c`
2. Find color definitions:
   ```c
   // First splash screen background (Raylib red)
   Color bgColor = (Color){ 230, 41, 55, 255 };  // Change these RGB values
   
   // Second splash screen background (Black)
   Color bg = BLACK;  // Change to any color
   ```

**Color Examples**:
- White: `(Color){ 255, 255, 255, 255 }`
- Blue: `(Color){ 0, 120, 215, 255 }`
- Dark Gray: `(Color){ 32, 32, 32, 255 }`
- Your brand color: `(Color){ R, G, B, 255 }`

## 5. Customizing the Loading Screen

Change the appearance of the asset loading screen.

### Steps

1. Open `src/lua_core.c`
2. Find the `drawLoadingScreen()` function
3. Modify colors and style:

```c
// Background color
Color bgColor = BLACK;  // Change background

// Text color
Color textColor = WHITE;  // Change text color

// Progress bar fill color
Color fillColor = WHITE;  // Change bar fill

// Border color
Color borderColor = WHITE;  // Change borders
```

### Customizing Loading Text

```c
// In drawLoadingScreen() function
const char* loadingText = "LOADING";  // Change to "LOADING GAME", etc.
```

### Changing Progress Bar Size

```c
int barWidth = 200;   // Default 200px, change as needed
int barHeight = 16;   // Default 16px, change as needed
int borderThick = 2;  // Border thickness
```

## 6. Complete Rebranding Example

Here's a complete example of rebranding ReiLua as "Space Quest":

### 1. CMakeLists.txt
```cmake
project( SpaceQuest )
```

### 2. resources.rc
```rc
VALUE "CompanyName",      "Cosmic Games Studio"
VALUE "FileDescription",  "Space Quest - Explore the Galaxy"
VALUE "FileVersion",      "1.0.0.0"
VALUE "InternalName",     "SpaceQuest"
VALUE "LegalCopyright",   "Copyright (C) 2025 Cosmic Games"
VALUE "OriginalFilename", "SpaceQuest.exe"
VALUE "ProductName",      "Space Quest"
VALUE "ProductVersion",   "1.0.0.0"
```

### 3. icon.ico
Replace with your space-themed icon

### 4. src/splash.c
```c
const char* text = "COSMIC GAMES STUDIO";
```

### 5. logo/ folder
```
logo/raylib_logo.png  → Your game logo (space ship, planet, etc.)
logo/reilua_logo.png  → Studio logo (keep ReiLua logo for credit)
```

### 6. Build
```bash
cd build
cmake ..
cmake --build . --config Release
```

Result: `SpaceQuest.exe` with all your custom branding!

## 7. Advanced: Removing ReiLua Branding

If you want to completely remove ReiLua references:

### Remove "Made with ReiLua" Logo

1. Open `src/splash.c`
2. Find `drawMadeWithSplash()` function
3. Comment out or modify the function to only show your logo

### Remove Second Splash Screen

1. Open `src/main.c`
2. Find the splash screen loop
3. Modify to only call your custom splash

**Note**: Please keep attribution to Raylib and ReiLua in your game's credits or about screen as a courtesy!

## 8. Build and Test

After making any customizations:

```bash
# Clean build (recommended after customizations)
cd build
rm -rf *  # Or: rmdir /s /q * on Windows
cmake ..
cmake --build . --config Release

# Test with console
YourGame.exe --log

# Test production mode
YourGame.exe
```

Verify:
-  Executable has correct name
-  Icon appears in file explorer
-  Right-click → Properties shows correct info
-  Splash screens display correctly
-  Loading screen appears as expected

## Checklist: Release-Ready Customization

Before releasing your game:

- [ ] Executable name matches your game
- [ ] Custom icon is recognizable at small sizes
- [ ] File properties are complete and accurate
- [ ] Splash screens show correct studio name
- [ ] Logos are high quality and appropriate size
- [ ] Loading screen matches your game's aesthetic
- [ ] Copyright and legal information is correct
- [ ] Version numbers are accurate
- [ ] Tested on target platforms
- [ ] Credits mention Raylib and ReiLua

## Tips for Polish

1. **Consistent Branding**: Use the same colors, fonts, and style across splash screens, loading screen, and in-game UI

2. **Icon Quality**: Invest time in a good icon - it's the first thing users see

3. **Version Management**: Update version numbers for each release

4. **Legal Info**: Always include proper copyright and attribution

5. **Test Everything**: Test your branded executable on a clean system

6. **Keep Credits**: Mention Raylib and ReiLua in your game's credits screen

## Troubleshooting

Icon doesn't change:
- Ensure .ico file is valid
- Rebuild completely (clean build)
- Clear icon cache (Windows): Delete `IconCache.db`

Properties don't update:
- Verify `resources.rc` syntax is correct
- Rebuild completely
- Check that resource compiler ran (check build output)

Splash screens don't show changes:
- Rebuild with clean build
- Check `scripts/embed_logo.py` ran successfully
- Verify logo files exist in `logo/` folder

Executable name unchanged:
- Check `CMakeLists.txt` project name
- Do a clean rebuild
- Verify cmake configuration step succeeded

## Additional Resources

### Icon Creation Tools
- **IcoFX**: Icon editor (paid)
- **GIMP**: Free, supports ICO export
- **Online**: convertio.co, icoconverter.com

### Image Editing
- **GIMP**: Free, powerful image editor
- **Paint.NET**: Simple, free Windows editor
- **Photoshop**: Industry standard (paid)

### Color Picking
- **ColorPicker**: Use system color picker
- **HTML Color Codes**: htmlcolorcodes.com
- **Adobe Color**: color.adobe.com

---

Now your ReiLua executable is fully branded and ready to represent your game!
