love-loader/readme.md

92 lines
2.7 KiB
Markdown

# Love Loader
Custom menu for selecting game from multiple for Love2D.
![PSP Style](./scr/psp.png)
[Other screenshots](./scr)
# How it works?
Just place games into `games` folder! (like `this_folder/games/game/main.lua`)
Technically, this creates the loop until game wasn't selected or user wants to exit
with custom event handling and redrawing.
# LibLL
Love Loader from v2.0 includes library to simplify creating custom interfaces.
It is like a backend for Love Loader.
It have not so many functions and fields:
- `ll.games` - field for games, which have this structure:
```lua
{
name = 'string', -- Friendly name for game or placeholder
desc = 'string', -- Description for game or placeholder
base = 'string', -- base directory used in game mounting, must end with `/`
dir = 'string', -- directory name, used if no name was defined
main = 'string', -- main file to execute or `main.lua`
screens = {'array of', 'path to screenshots'},
scrcur = 1, --[[number]] -- current index from screenshots
scrprv = 1, --[[number]] -- previous index from screenshots
dat = nil, --[[any]] -- maybe platform-dependent data to reduce operations
}
```
- `ll.mdir` - string or nil, contains full mounted directory.
- `ll.mgme` - game or nil, contains mounted game.
- `ll.gameNew(configuration --[[string]], fileName --[[string, not used]], base --[[string]], directory --[[string]])`
Creates game object (defined above) and returns it.
- `ll.gameAdd(conf, file, base, dir)` - same as `ll.gameNew`, but inserts game into `ll.games`.
- `ll.mount(game)` - mounts game.
Can throw an error.
Sets `ll.mdir` and `ll.mgme`.
- `ll.umount()` - unmounts game if can.
Unsets `ll.mdir` and `ll.mgme`.
- `ll.home()` - calls `llHome`
# API
To simplify task to the game developers, this loader creates some global variables to use.
You can also use it without Love Loader by including `ll-min.lua` file.
`W` and `H`: width and height of the screen which controls by custom love.resize function.
`love.resize` and optional `resize` payload: functions called when screen size was changed and on booting.
`love.event.quit`: function to exit to main screen.
`llHome`: function called by `love.event.quit` (broken for now).
`llUsed`: is Love Loader (not minimal API) used.
`COLDIV`: color divider (1 or 255) to `love.graphics.setColor` function.
# Fill game information
To fill game information in game folder need to create `info.ll` file.
Syntax is `k = v` with `# comments`
```
# are there needed any comments?
name = New awesome game using Love Loader
desc = Some descripion about the game.
# main = optional main file instead of `main.lua`
pic = screen.png
pics = [ screen.png; screen2.png ] # wow arrays
```