truegrf 2.1.0

TrueGRF YAML to GRF compiler
Documentation
# TrueGRF YAML to GRF compiler (CLI and NPM)

TrueGRF is a project to make it more accessible for anyone to create NewGRFs for [OpenTTD](https://www.openttd.org).
For more details on the project, please visit [here](https://github.com/TrueGRF/TrueGRF).

This repository is the Rust part of the project, which offers a YAML to GRF compiler, both for the stand-alone tool and as npm library (via WASM).

## Installation / usage

### CLI

```bash
cargo run --release -- --help
```

### WASM

Have latest rust installed, and install `wasm-pack` (with `cargo install wasm-pack`).

```bash
wasm-pack build --release --target web
```

This gives you the required WASM files in the `pkg` folder.
Check `wasm-pack` how to use it in your own project.

PS: in some cases you want to replace in `pkg/package.json` the `module` key with `main` and add `"type": "module"`.

```bash
sed -i 's/"module": "truegrf.js",/"main": "truegrf.js",\n  "type": "module",/' pkg/package.json
```

## Current support

Currently TrueGRF only supports a small selection of the [GRF specifications](https://newgrf-specs.tt-wiki.net/wiki/Main_Page):

- Cargoes
- Industries
- Industry tiles

All other features are not (yet) supported.

## Filesystem layout

In order for TrueGRF to compile the YAML to GRF, the YAML files need to be in a specific structure.

- `truegrf.yaml`: the main file, to indicate it is a TrueGRF project.
- `cargoes/<name>.yaml`: one cargo definition.
- `industries/<name>.yaml`: one industry definition.

Sprites can refer to PNG files based from the root-folder.

The specific structure of the YAML can be deduced from the [source files](src/grf/mod.rs).