Tiny Export
Export tool for Tiny - Arduboy sprite and scene editor.
Install
mkdir thing
cd thing
npm init -f
npm intall tiny-export
Usage
Create config for your export:
// config.jsconst path = ;const root = __dirname;moduleexports =target: pathcache:payload: pathreadable: pathurl: 'https://...your-app-id.cloudfunctions.net/export-project'token: 'token for project you want to export';
Create fetch.js
which will fetch and cache locally your current project (sprites, scenes):
// fetch.jslet config = ;let run = ;;
Run fetch:
node ./fetch.js
Create generate.js
which will take cached json and generate C++ code:
// generate.jslet config = ;let run = ;let path = ;let path;;
For this example I'm generating tiny.cpp
and tiny.h
using tiny.cpp.ejs
and tiny.h.ejs
(which are identical for this example):
<%# templates/tiny.cpp.ejs %><%# templates/tiny.h.ejs %>
Run generate:
node ./generate.js
For more decent export example, see https://github.com/ampatspell/tiny/tree/master/player/tiny/generate
API
Project
let project = runtime;
project.title
→String
project.properties
→Properties
project.models
→Array<Sprite|Scene|Layer|Node>
project.sprites
→Array<Sprite>
project.scenes
→Array<Scene>
Entity
let project = runtime;projectmodels;
entity.id
→String
entity.type
→String
entity.identifier
→String
entity.classified
→String
entity.index
→Number
entity.properties
→Properties
Sprite
let project = runtime;projectsprites;
sprite.size
→{ width, height }
sprite.frames
→Array<Frame>
sprite.loops
→Array<Loop>
sprite.toPlusMaskString()
→String
Frame
let project = runtime;let sprite = projectsprites;spriteframes;
frame.bytes
→Bytes
Bytes
let project = runtime;let frame = projectspritesframes;let bytes = framebytes;
bytes.size
→{ width, height }
bytes.raw
→Array<Number>
bytes.toPlusMaskString()
→String
bytes.toBitmapString()
→String
Loop
let project = runtime;let sprite = projectsprites;spriteloops;
loop.frames
→Array<Frame>
loop.toFrameIndexes()
→Array<Number>
loop.toFrameIndexesString()
→String
Scene
let project = runtime;projectscenes;
scene.background
→black
,white
,transparent
scene.name
→String
scene.size
→{ width, height }
scene.layers
→Array<Layer>
Layer
let project = runtime;let scene = project;scenelayers;
layer.identifier
→String
layer.type
→pixel
,grid
layer.grid
→{ width, heigt }
if type isgrid
layer.nodes
→Array<Node>
Node
let project = runtime;let scene = projectscenes;let layer = scenelayers;
node.position
→{ x, y }
node.alignment
→{ horizontal: 'left', vertical: 'top' }
node.flip
→{ horizontal: false', vertical: false }
node.color
→String
(forfill
type)node.sprite
→Sprite
(forsprite/..
types)node.frame
→Frame
(forsprite/frame
type)node.loop
→Loop
(forsprite/loop
type)node.invert
→Boolean
(forsprite/..
type)node.omit
→String
(forsprite/..
type)
Properties
let project = runtime;let properties = projectproperties;
properties.all
→Object
properties.keys
→Array<String>
properties.get(key, defaultValue)
→any
Bytes
let width = 4;let bytes = 0 1 2 2 2 1 0 0 ;//// y// 0,0 | 0 1 2 3// x -- +---------+// 0 | 0 1 2 2 |// 1 | 2 1 0 0 |// +---------+//
const Pixel =transparent: 0white: 1black: 2;