");
+ case TColor:
+ var id = UID++;
+ '';
+ case TFile:
+ var ext = v?.path?.split(".").pop().toLowerCase() ?? "";
+ var data = "data:image/" + ext + ";base64," + new haxe.crypto.BaseCode(haxe.io.Bytes.ofString("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")).encodeBytes(v?.bytes ?? haxe.io.Bytes.alloc(0)).toString();
+ var html = v == "" ? '#MISSING' : '${v.path}';
+ if( v != "" && !quickExists(v.path) )
+ html = '' + html + '';
+ if( v != "" )
+ html += ' ';
+ html;
+ case TTilePos:
+ return tileHtml(v);
+ case TTileLayer:
+ var v : cdb.Types.TileLayer = v;
+ var path = getAbsPath(v.file);
+ if( !quickExists(path) )
+ '' + v.file + '';
+ else
+ '#DATA';
+ case TDynamic:
+ var str = Std.string(v).split("\n").join(" ").split("\t").join("");
+ if( str.length > 50 ) str = str.substr(0, 47) + "...";
+ str;
}
}
@@ -706,19 +712,8 @@ class Main extends Model {
J('.imagePreview').hide();
J('.previewContent > img').replaceWith('
');
}
-
- function popupLine( sheet : Sheet, index : Int ) {
- var n = new Menu();
- var nup = new MenuItem( { label : "Move Up" } );
- var ndown = new MenuItem( { label : "Move Down" } );
- var nins = new MenuItem( { label : "Insert" } );
- var ndel = new MenuItem( { label : "Delete" } );
- var nsep = new MenuItem( { label : "Separator", type : MenuItemType.checkbox } );
- var nref = new MenuItem( { label : "Show References" } );
- var ndup = new MenuItem( { label : "Duplicate" } );
- for( m in [nup, ndown, nins, ndel, nsep, nref, ndup] )
- n.append(m);
-
+
+ function getSepIndex(sheet: Sheet, index: Int) {
var sepIndex = -1;
for (i in 0...sheet.separators.length) {
var s = sheet.separators[i];
@@ -727,78 +722,79 @@ class Main extends Model {
break;
}
}
- nsep.checked = sepIndex >= 0;
- nins.click = function() {
- newLine(sheet, index);
- };
- nup.click = function() {
+ return sepIndex;
+ }
+
+ function initializeLine( sheet : Sheet, index : Int ) {
+ IpcRenderer.removeAllListeners("line-move-up");
+ IpcRenderer.on("line-move-up", function() {
moveLine(sheet, index, -1);
- };
- ndown.click = function() {
+ });
+
+ IpcRenderer.removeAllListeners("line-move-down");
+ IpcRenderer.on("line-move-down", function() {
moveLine(sheet, index, 1);
- };
- ndel.click = function() {
+ });
+
+ IpcRenderer.removeAllListeners("line-insert");
+ IpcRenderer.on("line-insert", function() {
+ newLine(sheet, index);
+ });
+
+ IpcRenderer.removeAllListeners("line-delete");
+ IpcRenderer.on("line-delete", function() {
sheet.deleteLine(index);
refresh();
save();
- };
- nsep.click = function() {
+ });
+
+ final sepIndex = getSepIndex(sheet, index);
+ IpcRenderer.removeAllListeners("line-separator");
+ IpcRenderer.on("line-separator", function() {
if (sepIndex >= 0) { // remove
sheet.separators.splice(sepIndex, 1);
} else
sheet.separators.push({index: index, id:Std.string(sepIndex), title:"unnamed separator"});
refresh();
save();
- };
- nref.click = function() {
+ });
+
+ IpcRenderer.removeAllListeners("line-references-show");
+ IpcRenderer.on("line-references-show", function() {
showReferences(sheet, index);
- };
- ndup.click = function() {
+ });
+
+ IpcRenderer.removeAllListeners("line-duplicate");
+ IpcRenderer.on("line-duplicate", function() {
sheet.copyLine(index, sheet.lines[index]);
refresh();
save();
+ });
- };
- if( sheet.props.hide )
- nsep.enabled = false;
- n.popup(mousePos.x, mousePos.y);
+ IpcRenderer.invoke("popupLine", !sheet.props.hide, sepIndex >= 0, {x : mousePos.x, y: mousePos.y});
}
function popupColumn( sheet : Sheet, c : Column, ?isProperties ) {
- var n = new Menu();
- var nedit = new MenuItem( { label : "Edit" } );
- var nins = new MenuItem( { label : "Add Column" } );
- var nleft = new MenuItem( { label : "Move Left" } );
- var nright = new MenuItem( { label : "Move Right" } );
- var ndel = new MenuItem( { label : "Delete" } );
- var ndisp = new MenuItem( { label : "Display Column", type : MenuItemType.checkbox } );
- var nicon = new MenuItem( { label : "Display Icon", type : MenuItemType.checkbox } );
- for( m in [nedit, nins, nleft, nright, ndel, ndisp, nicon] )
- n.append(m);
-
switch( c.type ) {
case TId, TString, TEnum(_), TFlags(_):
- var conv = new MenuItem( { label : "Convert" } );
- var cm = new Menu();
- for( k in [
- { n : "lowercase", f : function(s:String) return s.toLowerCase() },
- { n : "UPPERCASE", f : function(s:String) return s.toUpperCase() },
- { n : "UpperIdent", f : function(s:String) return s.substr(0,1).toUpperCase() + s.substr(1) },
- { n : "lowerIdent", f : function(s:String) return s.substr(0, 1).toLowerCase() + s.substr(1) },
- ] ) {
- var m = new MenuItem( { label : k.n } );
- m.click = function() {
-
- switch( c.type ) {
+ var caseConverts = [
+ "lowercase" => function(s:String) return s.toLowerCase(),
+ "UPPERCASE" => function(s:String) return s.toUpperCase(),
+ "UpperIdent" => function(s:String) return s.substr(0,1).toUpperCase() + s.substr(1),
+ "lowerIdent" => function(s:String) return s.substr(0, 1).toLowerCase() + s.substr(1),
+ ];
+ IpcRenderer.removeAllListeners("column-convert-casing");
+ IpcRenderer.on("column-convert-casing", function(event, caseLabel) {
+ switch( c.type ) {
case TEnum(values), TFlags(values):
for( i in 0...values.length )
- values[i] = k.f(values[i]);
+ values[i] = caseConverts[caseLabel](values[i]);
default:
var refMap = new Map();
for( obj in sheet.getLines() ) {
var t = Reflect.field(obj, c.name);
if( t != null && t != "" ) {
- var t2 = k.f(t);
+ var t2 = caseConverts[caseLabel](t);
if( t2 == null && !c.opt ) t2 = "";
if( t2 == null )
Reflect.deleteField(obj, c.name);
@@ -812,62 +808,57 @@ class Main extends Model {
if( c.type == TId )
base.updateRefs(sheet, refMap);
sheet.sync(); // might have changed ID or DISP
- }
-
+ }
- refresh();
- save();
- };
- cm.append(m);
- }
- conv.submenu = cm;
- n.append(conv);
+ refresh();
+ save();
+ });
case TInt, TFloat:
- var conv = new MenuItem( { label : "Convert" } );
- var cm = new Menu();
- for( k in [
- { n : "* 10", f : function(s:Float) return s * 10 },
- { n : "/ 10", f : function(s:Float) return s / 10 },
- { n : "+ 1", f : function(s:Float) return s + 1 },
- { n : "- 1", f : function(s:Float) return s - 1 },
- ] ) {
- var m = new MenuItem( { label : k.n } );
- m.click = function() {
- for( obj in sheet.getLines() ) {
- var t = Reflect.field(obj, c.name);
- if( t != null ) {
- var t2 = k.f(t);
- if( c.type == TInt ) t2 = Std.int(t2);
- Reflect.setField(obj, c.name, t2);
- }
+ var operations = [
+ "* 10" => function(s:Float) return s * 10,
+ "/ 10" => function(s:Float) return s / 10,
+ "+ 1" => function(s:Float) return s + 1,
+ "- 1" => function(s:Float) return s - 1,
+ ];
+ IpcRenderer.removeAllListeners("column-convert-number");
+ IpcRenderer.on("column-convert-number", function(event, operationLabel) {
+ for( obj in sheet.getLines() ) {
+ var t = Reflect.field(obj, c.name);
+ if( t != null ) {
+ var t2 = operations[operationLabel](t);
+ if( c.type == TInt ) t2 = Std.int(t2);
+ Reflect.setField(obj, c.name, t2);
}
- refresh();
- save();
- };
- cm.append(m);
- }
- conv.submenu = cm;
- n.append(conv);
+ }
+ refresh();
+ save();
+ });
default:
}
+
+ var ndispEnabled = false;
+ var niconEnabled = false;
- ndisp.checked = sheet.props.displayColumn == c.name;
- nicon.checked = sheet.props.displayIcon == c.name;
-
- ndisp.enabled = false;
- nicon.enabled = false;
switch( c.type ) {
case TString, TRef(_):
- ndisp.enabled = true;
+ ndispEnabled = true;
case TTilePos:
- nicon.enabled = true;
+ niconEnabled = true;
default:
}
- nedit.click = function() {
+ IpcRenderer.removeAllListeners("column-edit");
+ IpcRenderer.on("column-edit", function() {
newColumn(sheet.name, c);
- };
- nleft.click = function() {
+ });
+
+ IpcRenderer.removeAllListeners("column-add");
+ IpcRenderer.on("column-add", function() {
+ newColumn(sheet.name, Lambda.indexOf(sheet.columns,c) + 1);
+ });
+
+ IpcRenderer.removeAllListeners("column-move-left");
+ IpcRenderer.on("column-move-left", function() {
var index = Lambda.indexOf(sheet.columns, c);
if( index > 0 ) {
sheet.columns.remove(c);
@@ -875,8 +866,10 @@ class Main extends Model {
refresh();
save();
}
- };
- nright.click = function() {
+ });
+
+ IpcRenderer.removeAllListeners("column-move-right");
+ IpcRenderer.on("column-move-right", function() {
var index = Lambda.indexOf(sheet.columns, c);
if( index < sheet.columns.length - 1 ) {
sheet.columns.remove(c);
@@ -884,12 +877,16 @@ class Main extends Model {
refresh();
save();
}
- }
- ndel.click = function() {
+ });
+
+ IpcRenderer.removeAllListeners("column-delete");
+ IpcRenderer.on("column-delete", function() {
if( !isProperties || js.Browser.window.confirm("Do you really want to delete this property for all objects?") )
deleteColumn(sheet, c.name);
- };
- ndisp.click = function() {
+ });
+
+ IpcRenderer.removeAllListeners("column-display");
+ IpcRenderer.on("column-display", function() {
if( sheet.props.displayColumn == c.name ) {
sheet.props.displayColumn = null;
} else {
@@ -898,8 +895,10 @@ class Main extends Model {
sheet.sync();
refresh();
save();
- };
- nicon.click = function() {
+ });
+
+ IpcRenderer.removeAllListeners("column-display-icon");
+ IpcRenderer.on("column-display-icon", function() {
if( sheet.props.displayIcon == c.name ) {
sheet.props.displayIcon = null;
} else {
@@ -908,44 +907,20 @@ class Main extends Model {
sheet.sync();
refresh();
save();
- };
- nins.click = function() {
- newColumn(sheet.name, Lambda.indexOf(sheet.columns,c) + 1);
- };
- n.popup(mousePos.x, mousePos.y);
+ });
+
+ IpcRenderer.invoke("popupColumn", c.type.getName(), sheet.props.displayIcon == c.name, ndispEnabled, niconEnabled, {x : mousePos.x, y: mousePos.y});
}
function popupSheet( s : Sheet, li : JQuery ) {
- var n = new Menu();
- var nins = new MenuItem( { label : "Add Sheet" } );
- var nleft = new MenuItem( { label : "Move Left" } );
- var nright = new MenuItem( { label : "Move Right" } );
- var nren = new MenuItem( { label : "Rename" } );
- var ndel = new MenuItem( { label : "Delete" } );
- var nindex = new MenuItem( { label : "Add Index", type : MenuItemType.checkbox } );
- var ngroup = new MenuItem( { label : "Add Group", type : MenuItemType.checkbox } );
-
- var ncsv = new MenuItem( { label : "CSV..." } );
- var csv = new Menu();
- var importSheetCSV = new MenuItem( { label : "Import Sheet Data...", type : MenuItemType.checkbox } );
- var exportSheetCSV = new MenuItem( { label : "Export Sheet Data...", type : MenuItemType.checkbox } );
- csv.append(importSheetCSV);
- csv.append(exportSheetCSV);
- ncsv.submenu = csv;
-
- var njson = new MenuItem( { label : "JSON..." } );
- var json = new Menu();
- var importSheetJSON = new MenuItem( { label : "Import Sheet Data...", type : MenuItemType.checkbox } );
- var exportSheetJSON = new MenuItem( { label : "Export Sheet Data...", type : MenuItemType.checkbox } );
- json.append(importSheetJSON);
- json.append(exportSheetJSON);
- njson.submenu = json;
-
- for( m in [nins, nleft, nright, nren, ndel, nindex, ngroup, njson, ncsv] )
- n.append(m);
-
- nleft.click = function() {
+ IpcRenderer.removeAllListeners("sheet-add");
+ IpcRenderer.on("sheet-add", function() {
+ newSheet();
+ });
+
+ IpcRenderer.removeAllListeners("sheet-move-left");
+ IpcRenderer.on("sheet-move-left", function() {
var prev = -1;
for( i in 0...base.sheets.length ) {
var s2 = base.sheets[i];
@@ -959,8 +934,10 @@ class Main extends Model {
prefs.curSheet = prev;
initContent();
save();
- };
- nright.click = function() {
+ });
+
+ IpcRenderer.removeAllListeners("sheet-move-right");
+ IpcRenderer.on("sheet-move-right", function() {
var sheets = [for( s in base.sheets ) if( !s.props.hide ) s];
var index = sheets.indexOf(s);
var next = sheets[index+1];
@@ -986,17 +963,22 @@ class Main extends Model {
prefs.curSheet = base.sheets.indexOf(s);
initContent();
save();
- }
- ndel.click = function() {
+ });
+
+ IpcRenderer.removeAllListeners("sheet-rename");
+ IpcRenderer.on("sheet-rename", function() {
+ li.dblclick();
+ });
+
+ IpcRenderer.removeAllListeners("sheet-delete");
+ IpcRenderer.on("sheet-delete", function() {
base.deleteSheet(s);
initContent();
save();
- };
- nins.click = function() {
- newSheet();
- };
- nindex.checked = s.props.hasIndex;
- nindex.click = function() {
+ });
+
+ IpcRenderer.removeAllListeners("sheet-add-index");
+ IpcRenderer.on("sheet-add-index", function() {
if( s.props.hasIndex ) {
for( o in s.getLines() )
Reflect.deleteField(o, "index");
@@ -1010,9 +992,10 @@ class Main extends Model {
s.props.hasIndex = true;
}
save();
- };
- ngroup.checked = s.props.hasGroup;
- ngroup.click = function() {
+ });
+
+ IpcRenderer.removeAllListeners("sheet-add-group");
+ IpcRenderer.on("sheet-add-group", function() {
if( s.props.hasGroup ) {
for( o in s.getLines() )
Reflect.deleteField(o, "group");
@@ -1026,74 +1009,47 @@ class Main extends Model {
s.props.hasGroup = true;
}
save();
- };
- nren.click = function() {
- li.dblclick();
- };
+ });
- importSheetJSON.click = function() {
- var i = J("").attr("type", "file").css("display","none").change(function(e) {
- var j = JTHIS;
- this.importSheetJSON(s, j.val());
- initContent();
- j.remove();
- });
- i.appendTo(J("body"));
- i.click();
- };
- exportSheetJSON.click = function() {
- var i = J("").attr("type", "file").attr("nwsaveas",'${s.name}.json').css("display","none").change(function(e) {
- var j = JTHIS;
- this.exportSheetJSON(s, j.val());
- initContent();
- j.remove();
- });
- i.appendTo(J("body"));
- i.click();
- };
-
- importSheetCSV.click = function() {
- var i = J("").attr("type", "file").css("display","none").change(function(e) {
- var j = JTHIS;
- this.importSheetCSV(s, j.val());
- initContent();
- j.remove();
- });
- i.appendTo(J("body"));
- i.click();
- };
- exportSheetCSV.click = function() {
- var i = J("").attr("type", "file").attr("nwsaveas",'${s.name}.csv').css("display","none").change(function(e) {
- var j = JTHIS;
- this.exportSheetCSV(s, j.val());
- initContent();
- j.remove();
- });
- i.appendTo(J("body"));
- i.click();
- };
+ IpcRenderer.removeAllListeners("sheet-import-csv");
+ IpcRenderer.on("sheet-import-csv", function(event, file) {
+ this.importSheetCSV(s, file);
+ initContent();
+ });
+
+ IpcRenderer.removeAllListeners("sheet-export-csv");
+ IpcRenderer.on("sheet-export-csv", function() {
+ this.exportSheetCSV(s);
+ });
+
+ IpcRenderer.removeAllListeners("sheet-import-json");
+ IpcRenderer.on("sheet-import-json", function(event, file) {
+ this.importSheetJSON(s, file);
+ initContent();
+ });
+
+ IpcRenderer.removeAllListeners("sheet-export-json");
+ IpcRenderer.on("sheet-export-json", function() {
+ this.exportSheetJSON(s);
+ });
- if( s.isLevel() || (s.hasColumn("width", [TInt]) && s.hasColumn("height", [TInt]) && s.hasColumn("props",[TDynamic])) ) {
- var nlevel = new MenuItem( { label : "Level", type : MenuItemType.checkbox } );
- nlevel.checked = s.isLevel();
- n.append(nlevel);
- nlevel.click = function() {
- if( s.isLevel() )
- Reflect.deleteField(s.props, "level");
- else
- s.props.level = {
- tileSets : {},
- }
- save();
- refresh();
- };
- }
+ IpcRenderer.removeAllListeners("sheet-level");
+ IpcRenderer.on("sheet-level", function() {
+ if( s.isLevel() )
+ Reflect.deleteField(s.props, "level");
+ else
+ s.props.level = {
+ tileSets : {},
+ }
+ save();
+ refresh();
+ });
- n.popup(mousePos.x, mousePos.y);
+ final showLevelCheckbox = s.isLevel() || (s.hasColumn("width", [TInt]) && s.hasColumn("height", [TInt]) && s.hasColumn("props",[TDynamic]));
+ IpcRenderer.invoke("popupSheet", showLevelCheckbox, s.props.hasIndex, s.props.hasGroup, s.isLevel(), {x : mousePos.x, y: mousePos.y});
}
public function editCell( c : Column, v : JQuery, sheet : Sheet, index : Int ) {
- if( macEditMenu != null ) window.menu.append(macEditMenu);
var obj = sheet.lines[index];
var val : Dynamic = Reflect.field(obj, c.name);
var old = val;
@@ -1106,7 +1062,6 @@ class Main extends Model {
var html = getValue();
if( v.hasClass("edit") ) return;
function editDone() {
- if( macEditMenu != null ) window.menu.remove(macEditMenu);
v.html(html);
v.removeClass("edit");
setErrorMessage();
@@ -1306,14 +1261,13 @@ class Main extends Model {
v.html(getValue());
changed();
case TImage:
- inline function loadImage(file : String) {
- var ext = file.split(".").pop().toLowerCase();
+ inline function loadImage(fileName: String, bytes: Bytes) {
+ var ext = fileName.split(".").pop().toLowerCase();
if( ext == "jpeg" ) ext = "jpg";
if( ext != "png" && ext != "gif" && ext != "jpg" ) {
error("Unsupported image extension " + ext);
return;
}
- var bytes = sys.io.File.getBytes(file);
var md5 = haxe.crypto.Md5.make(bytes).toHex();
if( imageBank == null ) imageBank = { };
if( !Reflect.hasField(imageBank, md5) ) {
@@ -1325,17 +1279,16 @@ class Main extends Model {
v.html(getValue());
changed();
}
+ // TODO: Readd file drop support
+ /**
if ( untyped v.dropFile != null ) {
- loadImage(untyped v.dropFile);
- } else {
- var i = J("").attr("type", "file").css("display","none").change(function(e) {
- var j = JTHIS;
- loadImage(j.val());
- j.remove();
- });
- i.appendTo(J("body"));
- i.click();
- }
+ trace(untyped v.dropFile);
+ //loadImage(untyped v.dropFile);
+ } else {*/
+ chooseFile(function(f) {
+ loadImage(f.path, f.bytes);
+ }, true);
+ //}
case TFlags(values):
var div = J("").addClass("flagValues");
div.click(function(e) e.stopPropagation()).dblclick(function(e) e.stopPropagation());
@@ -1468,35 +1421,11 @@ class Main extends Model {
return parts.join("/");
}
- public function chooseFile( callb : String -> Void, ?cancel : Void -> Void ) {
-
- if( prefs.curFile == null ) {
- error("Please save CDB file first");
- if( cancel != null ) cancel();
- return;
- }
-
-
- var fs = J("#fileSelect");
- if( fs.attr("nwworkingdir") == null )
- fs.attr("nwworkingdir", new haxe.io.Path(prefs.curFile).dir);
- fs.off("change");
- fs.val("");
- fs.change(function(_) {
- fs.off("change");
- var path : String = fs.val();
- fs.val("");
- if( path == "" ) {
- if( cancel != null ) cancel();
- return;
- }
- fs.attr("nwworkingdir", ""); // keep path
-
- // make the path relative
- var relPath = makeRelativePath(path);
-
- callb(relPath);
- }).click();
+ public function chooseFile( callb : {path: String, bytes: Bytes} -> Void, ?images: Bool = false) {
+ IpcRenderer.invoke("chooseFileBytes", "fileChosen", images).then((response) -> {
+ if (response != null)
+ callb({path: untyped response.path, bytes: untyped response.bytes});
+ });
}
function fillProps( content : JQuery, sheet : Sheet, props : Dynamic ) {
@@ -1600,6 +1529,7 @@ class Main extends Model {
e.stopPropagation();
});
+
var lines = [for( i in 0...sheet.lines.length ) {
var l = J("
");
l.data("index", i);
@@ -1607,7 +1537,7 @@ class Main extends Model {
l.mousedown(function(e) {
if( e.which == 3 ) {
head.click();
- haxe.Timer.delay(popupLine.bind(sheet,i),1);
+ haxe.Timer.delay(initializeLine.bind(sheet, i), 1);
e.preventDefault();
return;
}
@@ -1895,8 +1825,8 @@ class Main extends Model {
}
if( file == null ) {
- chooseFile(function(path) {
- file = path;
+ chooseFile(function(f) {
+ file = f.path;
setVal();
v.dblclick();
});
@@ -1941,7 +1871,7 @@ class Main extends Model {
dialog.find("[name=cancel]").click(function(_) dialog.remove());
dialog.find("[name=file]").click(function(_) {
chooseFile(function(f) {
- file = f;
+ file = f.path;
dialog.remove();
setVal();
save();
@@ -1958,8 +1888,8 @@ class Main extends Model {
dialog.find(".tileView").height(i.height).width(i.width);
dialog.find(".tilePath").text(file+" (" + i.width + "x" + i.height + ")");
};
- i.src = "file://" + getAbsPath(file);
-
+ var ext = file.split(".").pop().toLowerCase();
+ i.src = "data:image/" + ext + ";base64," + new haxe.crypto.BaseCode(haxe.io.Bytes.ofString("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")).encodeBytes(sys.io.File.getBytes(getAbsPath(file))).toString();
});
@@ -2039,8 +1969,8 @@ class Main extends Model {
inTodo = false;
}
- @:keep function openFile( file : String ) {
- js.node.webkit.Shell.openItem(file);
+ function openFile( file : String ) {
+ electron.Shell.openPath(file);
}
function setCursor( ?s, ?x=0, ?y=0, ?sel, update = true ) {
@@ -2281,6 +2211,7 @@ class Main extends Model {
if( cursor.s != null ) newLine(cursor.s);
}
+ @:keep
function createSheet( name : String, level : Bool ) {
name = StringTools.trim(name);
if( !base.r_ident.match(name) ) {
@@ -2544,54 +2475,37 @@ class Main extends Model {
refresh();
}
- function initMenu() {
- var modifier = "ctrl";
- var menu = Menu.createWindowMenu();
- if(Sys.systemName().indexOf("Mac") != -1) {
- modifier = "cmd";
+function initMenu() {
+ IpcRenderer.on('open-recent', function(event, file) {
+ prefs.curFile = file;
+ load();
+ });
+
+ for( file in prefs.recent ) {
+ if( file == null ) continue;
+ IpcRenderer.invoke("add-recents-file", file);
}
- var mfile = new MenuItem({ label : "File" });
- var mfiles = new Menu();
- var mnew = new MenuItem( { label : "New", key : "N", modifiers : modifier } );
- var mopen = new MenuItem( { label : "Open...", key : "O", modifiers : modifier } );
- var mrecent = new MenuItem( { label : "Recent Files" } );
- var msave = new MenuItem( { label : "Save As...", key : "S", modifiers : "shift+" + modifier } );
- var mclean = new MenuItem( { label : "Clean Images" } );
- var mexport = new MenuItem( { label : "Export Localized texts" } );
- mcompress = new MenuItem( { label : "Enable Compression", type : MenuItemType.checkbox } );
- mcompress.click = function() {
- base.compress = mcompress.checked;
- save();
- };
- var mabout = new MenuItem( { label : "About" } );
- var mexit = new MenuItem( { label : "Exit", key : "Q", modifiers : modifier } );
- var mdebug = new MenuItem( { label : "Dev" } );
- mnew.click = function() {
+
+ IpcRenderer.on('click-new', function() {
prefs.curFile = null;
load(true);
- };
- mdebug.click = function() window.showDevTools();
- mopen.click = function() {
- var i = J("").attr("type", "file").css("display","none").change(function(e) {
- var j = JTHIS;
- prefs.curFile = j.val();
+ });
+
+ IpcRenderer.on('click-open', function() {
+ chooseFile((f) -> {
+ prefs.curFile = f.path;
load();
- j.remove();
});
- i.appendTo(J("body"));
- i.click();
- };
- msave.click = function() {
- var i = J("").attr("type", "file").attr("nwsaveas","new.cdb").css("display","none").change(function(e) {
- var j = JTHIS;
- prefs.curFile = j.val();
+ });
+
+ IpcRenderer.on('click-save', function() {
+ IpcRenderer.invoke("saveFile", "new.cdb", null).then((path) -> {
+ prefs.curFile = path;
save();
- j.remove();
});
- i.appendTo(J("body"));
- i.click();
- };
- mclean.click = function() {
+ });
+
+ IpcRenderer.on('click-clean', function() {
var lcount = @:privateAccess base.cleanLayers();
var icount = 0;
if( imageBank != null ) {
@@ -2602,109 +2516,63 @@ class Main extends Model {
if( count2 == 0 ) imageBank = null;
}
error([
- lcount + " tileset data removed",
- icount + " unused images removed"
+ lcount + " tileset data removed",
+ icount + " unused images removed"
].join("\n"));
refresh();
if( lcount > 0 ) save();
if( icount > 0 ) saveImages();
- };
- mexit.click = function() Sys.exit(0);
- mabout.click = function() {
- J("#about").show();
- };
-
- var mrecents = new Menu();
- for( file in prefs.recent ) {
- if( file == null ) continue;
- var m = new MenuItem( { label : file } );
- m.click = function() {
- prefs.curFile = file;
- load();
- };
- mrecents.append(m);
- }
- mrecent.submenu = mrecents;
-
- for( m in [mnew, mopen, mrecent, msave, mclean, mcompress, mexport, mabout, mexit] )
- mfiles.append(m);
- mfile.submenu = mfiles;
-
- mexport.click = function() {
+ });
+ IpcRenderer.on('click-export', function() {
var lang = new cdb.Lang(@:privateAccess base.data);
var xml = lang.buildXML();
- var i = J("").attr("type", "file").attr("nwsaveas","export.xml").css("display","none").change(function(e) {
- var j = JTHIS;
- var file = j.val();
- sys.io.File.saveContent(file, String.fromCharCode(0xFEFF)+xml); // prefix with BOM
- j.remove();
- });
- i.appendTo(J("body"));
- i.click();
+ IpcRenderer.invoke("saveFile", 'export.xml', String.fromCharCode(0xFEFF)+xml);
+ });
- };
+ IpcRenderer.on('click-compression', function(event, checked) {
+ base.compress = checked;
+ save();
+ });
- // create an edit menu
- modifier = "ctrl+shift";
- if(Sys.systemName().indexOf("Mac") != -1)
- modifier = "cmd+shift";
-
- var medit = new MenuItem({ label : "Database" });
- var medits = new Menu();
- var mnewsheet = new MenuItem( { label : "New Sheet", key : "N", modifiers : modifier } );
- var mnewcolumn = new MenuItem( { label : "Add Column", key : "C", modifiers : modifier } );
- var mnewline = new MenuItem( { label : "Add Line", key : "L", modifiers : modifier } );
- var medittypes = new MenuItem( { label : "Edit Types", key : "E", modifiers : modifier } );
- mnewcolumn.click = ()->newColumn();
- mnewsheet.click = ()->newSheet();
- medittypes.click = ()->editTypes();
- mnewline.click = ()->insertLine();
-
- for(m in [mnewsheet, mnewcolumn, mnewline, medittypes])
- medits.append(m);
- medit.submenu = medits;
+ IpcRenderer.on('click-about', function() {
+ J("#about").show();
+ });
- if(Sys.systemName().indexOf("Mac") != -1) {
- menu.createMacBuiltin("CastleDB", {hideEdit: false, hideWindow: true}); // needed so copy&paste inside INPUTs work
- menu.removeAt(0); // remove default menu
- macEditMenu = menu.items[0]; // save default edit menu
- menu.removeAt(0); // remove default edit menu
- menu.insert(mfile, 0); // put it before the default Edit menu
- mfiles.insert(mdebug, 7); // needs to go under File or it won't show
- mfiles.insert(medit, 7); // needs to go under File or it won't show
- }
- else {
- menu.append(mfile);
- menu.append(medit);
- menu.append(mdebug);
- }
+ IpcRenderer.on('click-new-sheet', function() newSheet());
+ IpcRenderer.on('click-add-column', function() newColumn());
+ IpcRenderer.on('click-add-line', function() insertLine());
+ IpcRenderer.on('click-edit-types', function() editTypes());
- window.menu = menu;
- if( prefs.windowPos.x > 0 && prefs.windowPos.y > 0 ) window.moveTo(prefs.windowPos.x, prefs.windowPos.y);
- if( prefs.windowPos.w > 50 && prefs.windowPos.h > 50 ) window.resizeTo(prefs.windowPos.w, prefs.windowPos.h);
- window.show();
- if( prefs.windowPos.max ) window.maximize();
- window.on('close', function() {
+ if( prefs.windowPos.x > 0 && prefs.windowPos.y > 0 ) IpcRenderer.invoke("setWindowPosition", prefs.windowPos.x, prefs.windowPos.y);
+ if( prefs.windowPos.w > 50 && prefs.windowPos.h > 50 ) IpcRenderer.invoke("setWindowSize", prefs.windowPos.w, prefs.windowPos.h);
+ if( prefs.windowPos.max ) IpcRenderer.invoke("maximize");
+
+ window.addEventListener('beforeunload', function() {
if( prefs.curFile == null && base.sheets.length > 0 ) {
if( !js.Browser.window.confirm("Do you want to exit without saving your changes?") )
return;
}
- if( !prefs.windowPos.max )
- prefs.windowPos = {
- x : window.x,
- y : window.y,
- w : window.width,
- h : window.height,
- max : false,
- };
- savePrefs();
- window.close(true);
+ if( !prefs.windowPos.max ) {
+ IpcRenderer.invoke('getWindowGeometry').then(cast((size : {width : Int, height : Int, x : Int, y : Int}) -> {
+ prefs.windowPos = {
+ x : size.x,
+ y : size.y,
+ w : size.width,
+ h : size.height,
+ max : false,
+ };
+ savePrefs();
+ window.close();
+ }));
+ }
});
- window.on('maximize', function() {
+
+ IpcRenderer.on('maximize', function() {
prefs.windowPos.max = true;
});
- window.on('unmaximize', function() {
+
+ IpcRenderer.on('unmaximize', function() {
prefs.windowPos.max = false;
});
}
@@ -2731,7 +2599,12 @@ class Main extends Model {
lastSave = getFileTime();
super.load(noError);
- window.title = "CastleDB Editor v1.6.2 - " + prefs.curFile;
+ trace(prefs.curFile);
+ js.Browser.document.title = if (prefs.curFile != null) {
+ "CastleDB Editor v1.6.2 - " + prefs.curFile;
+ } else {
+ "CastleDB Editor v1.6.2";
+ }
J('.imagePreview').hide();
initContent();
@@ -2739,7 +2612,7 @@ class Main extends Model {
if( prefs.curFile != null )
prefs.recent.unshift(prefs.curFile);
if( prefs.recent.length > 8 ) prefs.recent.pop();
- mcompress.checked = base.compress;
+ IpcRenderer.invoke("set-mcompress", base.compress);
}
override function save( history = true ) {
@@ -2750,6 +2623,7 @@ class Main extends Model {
public static var inst : Main;
static function main() {
untyped if( js.node.Fs.accessSync == null ) js.node.Fs.accessSync = function(path) if( !(js.node.Fs : Dynamic).existsSync(path) ) throw path + " does not exists";
+
inst = new Main();
Reflect.setField(js.Browser.window, "_", inst);
}
diff --git a/src/Model.hx b/src/renderer/Model.hx
similarity index 91%
rename from src/Model.hx
rename to src/renderer/Model.hx
index 796e84b3..cb4f6271 100644
--- a/src/Model.hx
+++ b/src/renderer/Model.hx
@@ -15,6 +15,7 @@
*/
import cdb.Data;
import thx.csv.*;
+import electron.renderer.IpcRenderer;
using StringTools;
@@ -52,6 +53,7 @@ class Model {
}
function quickExists(path) {
+ trace(path);
var c = existsCache.get(path);
if( c == null ) {
c = { t : -1e9, r : false };
@@ -62,6 +64,7 @@ class Model {
c.r = sys.FileSystem.exists(path);
c.t = t;
}
+ trace(c.r);
return c.r;
}
@@ -70,6 +73,7 @@ class Model {
}
public function getAbsPath( file : String ) {
+ if (file == null || file == "") return "";
return file.charAt(0) == "/" || file.charAt(1) == ":" ? file : new haxe.io.Path(prefs.curFile).dir.split("\\").join("/") + "/" + file;
}
@@ -193,7 +197,7 @@ class Model {
}
@:access(cdb.Sheet)
- function exportSheetJSON(_s:cdb.Sheet, _filePath:String) {
+ function exportSheetJSON(_s:cdb.Sheet) {
// export the main sheet and potential subsheets...
var name = _s.name;
@@ -202,15 +206,15 @@ class Model {
if (s.name.startsWith('${_s.name}@')) // gather all subsheets
toExport.push(s.sheet);
- sys.io.File.saveContent(_filePath, haxe.Json.stringify(toExport, null, " "));
+ IpcRenderer.invoke("saveFile", '${_s.name}.json', haxe.Json.stringify(toExport, null, " "));
}
@:access(cdb.Sheet)
@:access(cdb.Database)
- function importSheetJSON(_s:cdb.Sheet, _filePath:String) {
+ function importSheetJSON(_s:cdb.Sheet, _contents:String) {
// TODO: do import validation!!!
- var shs:Array = cast haxe.Json.parse(sys.io.File.getContent(_filePath));
+ var shs:Array = cast haxe.Json.parse(_contents);
for (s in shs) {
// rename the imported sheet to match the current selected sheet.
s.name = s.name.replace(s.name.split('@')[0], _s.name);
@@ -244,7 +248,7 @@ class Model {
this.save();
}
- function exportSheetCSV(_s:cdb.Sheet, _filePath:String) {
+ function exportSheetCSV(_s:cdb.Sheet) {
var lines = [[ for (c in _s.columns) c.name]];
for (l in _s.getLines()) {
@@ -259,13 +263,15 @@ class Model {
}
lines.push(ol);
}
- sys.io.File.saveContent(_filePath, Csv.encode(lines));
+
+ IpcRenderer.invoke("saveFile", '${_s.name}.csv', Csv.encode(lines));
}
@:access(cdb.Sheet)
- function importSheetCSV(_s:cdb.Sheet, _filePath:String) {
- var d = Csv.decode(sys.io.File.getContent(_filePath));
- var header = d.shift(); // get rid off first line
+ function importSheetCSV(_s:cdb.Sheet, _contents:String) {
+ var d = Csv.decode(_contents);
+ trace(d);
+ var header = d.shift(); // get rid of first line
var colMapSheet = new Map();
for (c in _s.columns)
@@ -297,4 +303,4 @@ class Model {
this.save();
}
-}
\ No newline at end of file
+}
diff --git a/src/Resolver.hx b/src/renderer/Resolver.hx
similarity index 100%
rename from src/Resolver.hx
rename to src/renderer/Resolver.hx
diff --git a/src/lvl/Image.hx b/src/renderer/lvl/Image.hx
similarity index 100%
rename from src/lvl/Image.hx
rename to src/renderer/lvl/Image.hx
diff --git a/src/lvl/Image3D.hx b/src/renderer/lvl/Image3D.hx
similarity index 100%
rename from src/lvl/Image3D.hx
rename to src/renderer/lvl/Image3D.hx
diff --git a/src/lvl/LayerData.hx b/src/renderer/lvl/LayerData.hx
similarity index 100%
rename from src/lvl/LayerData.hx
rename to src/renderer/lvl/LayerData.hx
diff --git a/src/lvl/LayerGfx.hx b/src/renderer/lvl/LayerGfx.hx
similarity index 100%
rename from src/lvl/LayerGfx.hx
rename to src/renderer/lvl/LayerGfx.hx
diff --git a/src/lvl/Palette.hx b/src/renderer/lvl/Palette.hx
similarity index 100%
rename from src/lvl/Palette.hx
rename to src/renderer/lvl/Palette.hx
diff --git a/src/test/Test.hx b/src/renderer/test/Test.hx
similarity index 100%
rename from src/test/Test.hx
rename to src/renderer/test/Test.hx
diff --git a/src/test/dat/Data.hx b/src/renderer/test/dat/Data.hx
similarity index 100%
rename from src/test/dat/Data.hx
rename to src/renderer/test/dat/Data.hx
diff --git a/src/test/test.cdb b/src/renderer/test/test.cdb
similarity index 100%
rename from src/test/test.cdb
rename to src/renderer/test/test.cdb
diff --git a/src/test/test.hxml b/src/renderer/test/test.hxml
similarity index 100%
rename from src/test/test.hxml
rename to src/renderer/test/test.hxml
diff --git a/src/test/test.hxproj b/src/renderer/test/test.hxproj
similarity index 100%
rename from src/test/test.hxproj
rename to src/renderer/test/test.hxproj
diff --git a/src/vdom/Answer.hx b/src/renderer/vdom/Answer.hx
similarity index 100%
rename from src/vdom/Answer.hx
rename to src/renderer/vdom/Answer.hx
diff --git a/src/vdom/Client.hx b/src/renderer/vdom/Client.hx
similarity index 100%
rename from src/vdom/Client.hx
rename to src/renderer/vdom/Client.hx
diff --git a/src/vdom/Dom.hx b/src/renderer/vdom/Dom.hx
similarity index 100%
rename from src/vdom/Dom.hx
rename to src/renderer/vdom/Dom.hx
diff --git a/src/vdom/Event.hx b/src/renderer/vdom/Event.hx
similarity index 100%
rename from src/vdom/Event.hx
rename to src/renderer/vdom/Event.hx
diff --git a/src/vdom/JQuery.hx b/src/renderer/vdom/JQuery.hx
similarity index 100%
rename from src/vdom/JQuery.hx
rename to src/renderer/vdom/JQuery.hx
diff --git a/src/vdom/Message.hx b/src/renderer/vdom/Message.hx
similarity index 100%
rename from src/vdom/Message.hx
rename to src/renderer/vdom/Message.hx
diff --git a/src/vdom/Query.hx b/src/renderer/vdom/Query.hx
similarity index 100%
rename from src/vdom/Query.hx
rename to src/renderer/vdom/Query.hx
diff --git a/src/vdom/README.md b/src/renderer/vdom/README.md
similarity index 100%
rename from src/vdom/README.md
rename to src/renderer/vdom/README.md
diff --git a/src/vdom/Server.hx b/src/renderer/vdom/Server.hx
similarity index 100%
rename from src/vdom/Server.hx
rename to src/renderer/vdom/Server.hx
diff --git a/www/sample.zip b/www/sample.zip
deleted file mode 100644
index 5058fb5c..00000000
Binary files a/www/sample.zip and /dev/null differ
diff --git a/www/sample/chars.png b/www/sample/chars.png
new file mode 100644
index 00000000..cdf03f21
Binary files /dev/null and b/www/sample/chars.png differ
diff --git a/www/sample/collide.png b/www/sample/collide.png
new file mode 100644
index 00000000..ae1f8ba9
Binary files /dev/null and b/www/sample/collide.png differ
diff --git a/www/sample/data.cdb b/www/sample/data.cdb
new file mode 100644
index 00000000..82e3343d
--- /dev/null
+++ b/www/sample/data.cdb
@@ -0,0 +1,3313 @@
+{
+ "sheets": [
+ {
+ "name": "collide",
+ "columns": [
+ {
+ "typeStr": "0",
+ "name": "id"
+ },
+ {
+ "typeStr": "14",
+ "name": "icon"
+ }
+ ],
+ "lines": [
+ {
+ "id": "No",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 7,
+ "y": 7
+ }
+ },
+ {
+ "id": "Full",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 0,
+ "y": 0
+ }
+ },
+ {
+ "id": "Over",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 1,
+ "y": 0
+ }
+ },
+ {
+ "id": "Under",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 2,
+ "y": 0
+ }
+ },
+ {
+ "id": "Small",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 3,
+ "y": 0
+ }
+ },
+ {
+ "id": "Top",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 4,
+ "y": 0
+ }
+ },
+ {
+ "id": "Left",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 5,
+ "y": 0
+ }
+ },
+ {
+ "id": "Right",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 7,
+ "y": 0
+ }
+ },
+ {
+ "id": "Bottom",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 6,
+ "y": 0
+ }
+ },
+ {
+ "id": "TopRight",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 0,
+ "y": 1
+ }
+ },
+ {
+ "id": "TopLeft",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 1,
+ "y": 1
+ }
+ },
+ {
+ "id": "BottomLeft",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 2,
+ "y": 1
+ }
+ },
+ {
+ "id": "BottomRight",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 3,
+ "y": 1
+ }
+ },
+ {
+ "id": "HalfTop",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 4,
+ "y": 1
+ }
+ },
+ {
+ "id": "HalfBottom",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 5,
+ "y": 1
+ }
+ },
+ {
+ "id": "HalfRight",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 6,
+ "y": 1
+ }
+ },
+ {
+ "id": "HalfLeft",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 7,
+ "y": 1
+ }
+ },
+ {
+ "id": "Shade",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 0,
+ "y": 2
+ }
+ },
+ {
+ "id": "Ladder",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 1,
+ "y": 2
+ }
+ },
+ {
+ "id": "Lift",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 2,
+ "y": 2
+ }
+ },
+ {
+ "id": "Pike",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 3,
+ "y": 2
+ }
+ },
+ {
+ "id": "MobOnly",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 4,
+ "y": 2
+ }
+ },
+ {
+ "id": "CanDown",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 5,
+ "y": 2
+ }
+ },
+ {
+ "id": "Horizontal",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 6,
+ "y": 2
+ }
+ },
+ {
+ "id": "Vertical",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 7,
+ "y": 2
+ }
+ },
+ {
+ "id": "Disable",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 0,
+ "y": 3
+ }
+ },
+ {
+ "id": "Kill",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 1,
+ "y": 3
+ }
+ },
+ {
+ "id": "CornerTR",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 2,
+ "y": 3
+ }
+ },
+ {
+ "id": "CornerBL",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 3,
+ "y": 3
+ }
+ },
+ {
+ "id": "CornerBR",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 4,
+ "y": 3
+ }
+ },
+ {
+ "id": "CornerTL",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 5,
+ "y": 3
+ }
+ },
+ {
+ "id": "HeroOnly",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 6,
+ "y": 3
+ }
+ },
+ {
+ "id": "SmallTR",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 7,
+ "y": 3
+ }
+ },
+ {
+ "id": "SmallBL",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 0,
+ "y": 4
+ }
+ },
+ {
+ "id": "SmallBR",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 1,
+ "y": 4
+ }
+ },
+ {
+ "id": "SmallTL",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 2,
+ "y": 4
+ }
+ },
+ {
+ "id": "Bridge",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 3,
+ "y": 4
+ }
+ },
+ {
+ "id": "UnderWater",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 4,
+ "y": 4
+ }
+ },
+ {
+ "id": "Custom",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 5,
+ "y": 4
+ }
+ },
+ {
+ "id": "VLadder",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 6,
+ "y": 4
+ }
+ },
+ {
+ "id": "Grid",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 7,
+ "y": 4
+ }
+ },
+ {
+ "id": "NonActiveOnly",
+ "icon": {
+ "file": "collide.png",
+ "size": 16,
+ "x": 0,
+ "y": 5
+ }
+ }
+ ],
+ "separators": [],
+ "props": {}
+ },
+ {
+ "name": "npc",
+ "columns": [
+ {
+ "typeStr": "0",
+ "name": "id"
+ },
+ {
+ "typeStr": "1",
+ "name": "name",
+ "display": null
+ },
+ {
+ "typeStr": "14",
+ "name": "image",
+ "display": null
+ },
+ {
+ "typeStr": "2",
+ "name": "hasPortrait"
+ },
+ {
+ "typeStr": "4",
+ "name": "animSpeed",
+ "opt": true
+ }
+ ],
+ "lines": [
+ {
+ "id": "Hero",
+ "name": "Kuro",
+ "image": {
+ "file": "chars.png",
+ "size": 16,
+ "x": 0,
+ "y": 0
+ },
+ "hasPortrait": true
+ },
+ {
+ "id": "Finrod",
+ "name": "Finrod",
+ "hasPortrait": false,
+ "image": {
+ "file": "chars.png",
+ "size": 16,
+ "x": 1,
+ "y": 0,
+ "width": 2,
+ "height": 2
+ },
+ "animSpeed": 0.2
+ }
+ ],
+ "separators": [
+ {
+ "index": 2,
+ "title": "Antik"
+ }
+ ],
+ "props": {
+ "displayIcon": "image"
+ }
+ },
+ {
+ "name": "item",
+ "columns": [
+ {
+ "typeStr": "0",
+ "name": "id"
+ },
+ {
+ "typeStr": "14",
+ "name": "tile",
+ "display": null
+ }
+ ],
+ "lines": [
+ {
+ "id": "Sword",
+ "tile": {
+ "file": "items.png",
+ "size": 16,
+ "x": 0,
+ "y": 0
+ }
+ },
+ {
+ "id": "Key",
+ "tile": {
+ "file": "items.png",
+ "size": 16,
+ "x": 1,
+ "y": 0
+ }
+ },
+ {
+ "id": "Apple",
+ "tile": {
+ "file": "items.png",
+ "size": 16,
+ "x": 2,
+ "y": 0
+ }
+ },
+ {
+ "id": "Book",
+ "tile": {
+ "file": "items.png",
+ "size": 16,
+ "x": 3,
+ "y": 0
+ }
+ }
+ ],
+ "separators": [],
+ "props": {
+ "displayIcon": "tile"
+ }
+ },
+ {
+ "name": "levelData",
+ "columns": [
+ {
+ "typeStr": "0",
+ "name": "level",
+ "opt": true
+ },
+ {
+ "typeStr": "3",
+ "name": "width"
+ },
+ {
+ "typeStr": "3",
+ "name": "height",
+ "display": null
+ },
+ {
+ "typeStr": "16",
+ "name": "props"
+ },
+ {
+ "typeStr": "8",
+ "name": "tileProps"
+ },
+ {
+ "typeStr": "8",
+ "name": "layers"
+ },
+ {
+ "typeStr": "8",
+ "name": "triggers"
+ },
+ {
+ "typeStr": "12:collide",
+ "name": "collide"
+ },
+ {
+ "typeStr": "8",
+ "name": "npcs",
+ "display": null
+ }
+ ],
+ "lines": [
+ {
+ "width": 50,
+ "height": 50,
+ "layers": [
+ {
+ "name": "ground",
+ "data": {
+ "file": "forest.png",
+ "size": 16,
+ "stride": 16,
+ "data": "//9QAAAAAABgAAAAAABwAAAAAACAAAAAAACQAAAAAACgAAAAAACwAAAAAADAAAAAAADQAAAAAADgAAAAAADwAAAAAAAAAQAAAAAQAQAAAAAgAQAAAAAwAQAAAABAAQAAAABQAQAAAABgAQAAAABwAQAAAACAAQAAAACQAQAACgCgAQAAAACwAQAAAADAAQAAAADQAQAAAADgAQAAAADwAQAAAAAAAgAAAgAQAgAAAwAgAgAABAAwAgAAAABAAgAAAABQAgAAAABgAgAAAABwAgAAAACAAgAAAACQAgAAAACgAgAAAACwAgAAAADAAgAAAADQAgAAAADgAgAAAADwAgAAAABQABAAAABgABAAAABwABAAAACAABAAAACQABAAAACgABAAAACwABAAAADAABAAAADQABAAAADgABAAAADwABAAAAAAARAAAAAQARAAAAAgARAAAAAwARAAAABAARAAAABQARAAAABgARAAAABwARAAAACAARAAAACQARAACACgARAAAACwARAAAADAARAAAADQARAAAADgARAAAADwARAAAAAAAhAAAgAQAhAABAAgAhAABAAwAhAAAABAAhAAAABQAhAAAABgAhAAAABwAhAAAACAAhAAAACQAhAAAACgAhAAAACwAhAAAADAAhAAAADQAhAAAADgAhAAAADwAhAAAABQACAAAABgACAAAABwACAAAACAACAAAACQACAAAACgACAAAACwACAAAADAACAAAADQACAAAADgACAAAADwACAAAAAAASAAAAAQASAAAAAgASAAAAAwASAAAABAASAAAABQASAAAABgASAAAABwASAAAACAASAAAACQASAACACgASAAAACwASAAAADAASAAAADQASAAAADgASAAAADwASAAAAAAAiAAAwAQAiAAAgAgAiAAAAAwAiAAAABAAiAAAABQAiAAAABgAiAAAABwAiAAAACAAiAAAACQAiAAAACgAiAAAACwAiAAAADAAiAAAADQAiAAAADgAiAAAADwAiAAAABQADAAAABgADAAAABwADAAAACAADAAAACQADAAAACgADAAAACwADAAAADAADAAAADQADAAAADgADAAAADwADAAAAAAATAAAAAQATAAAAAgATAAAAAwATAAAABAATAAAABQATAAAABgATAAAABwATAAAACAATAAAACQATAACACgATAAAACwATAAAADAATAAAADQATAAAADgATAAAADwATAAAAAAAjAAAgAQAjAAAgAgAjAAAAAwAjAAAABAAjAAAABQAjAAAABgAjAAAABwAjAAAACAAjAAAACQAjAAAACgAjAAAACwAjAAAADAAjAAAADQAjAAAADgAjAAAADwAjAAAABQAEAAAABgAEAAAABwAEAAAACAAEAAAACQAEAAAACgAEAAAACwAEAAAADAAEAAAADQAEAAAADgAEAAAADwAEAAAAAAAUAAAAAQAUAAAAAgAUAAAAAwAUAAAABAAUAAAABQAUAAAABgAUAAAABwAUAAAACAAUAAAACQAUAACACgAUAACACwAUAAAQDAAUAAAADQAUAAAADgAUAAAADwAUAAAAAAAkAAAgAQAkAAAwAgAkAAAAAwAkAAAABAAkAAAABQAkAAAABgAkAAAABwAkAAAACAAkAAAACQAkAAAACgAkAAAACwAkAAAADAAkAAAADQAkAAAADgAkAAAADwAkAAAABQAFAAAABgAFAAAABwAFAAAACAAFAAAACQAFAAAACgAFAAAACwAFAAAADAAFAAAADQAFAAAADgAFAAAADwAFAAAAAAAVAAAAAQAVAAAAAgAVAAAAAwAVAAAABAAVAAAABQAVAAAABgAVAAAABwAVAAAACAAVAAAACQAVAACgCgAVAACACwAVAAAQDAAVAAAQDQAVAAAQDgAVAAAADwAVAAAAAAAlAAAwAQAlAAAgAgAlAAAAAwAlAAAABAAlAAAABQAlAAAABgAlAAAABwAlAAAACAAlAAAACQAlAAAACgAlAAAACwAlAAAADAAlAAAADQAlAAAADgAlAAAADwAlAAAABQAGAAAABgAGAAAABwAGAAAACAAGAAAACQAGAAAACgAGAAAACwAGAAAADAAGAAAADQAGAAAADgAGAAAADwAGAAAAAAAWAAAAAQAWAAAAAgAWAAAAAwAWAAAABAAWAAAABQAWAAAABgAWAAAABwAWAAAACAAWAAAACQAWAACQCgAWAACACwAWAAAADAAWAAAQDQAWAAAADgAWAAAADwAWAAAAAAAmAAAgAQAmAABAAgAmAAAAAwAmAAAABAAmAAAABQAmAAAABgAmAAAABwAmAAAACAAmAAAACQAmAAAACgAmAAAACwAmAAAADAAmAAAADQAmAAAADgAmAAAADwAmAAAAAAA2AAAAAQA2AAAABQAHAAAABgAHAAAABwAHAAAACAAHAAAACQAHAAAACgAHAAAACwAHAAAADAAHAAAADQAHAAAADgAHAAAADwAHAAAAAAAXAAAAAQAXAAAAAgAXAAAAAwAXAAAABAAXAAAABQAXAAAABgAXAAAABwAXAAAACAAXAAAACQAXAACQCgAXAAAACwAXAAAADAAXAAAADQAXAABADgAXAABADwAXAAAgAAAnAAAwAQAnAAAwAgAnAAAAAwAnAAAABAAnAAAABQAnAAAABgAnAAAABwAnAAAACAAnAAAACQAnAAAACgAnAAAACwAnAAAADAAnAAAADQAnAAAADgAnAAAADwAnAAAAAAA3AAAAAQA3AAAAAgAIAAAAAwAIAAAABAAIAAAABQAIAAAABgAIAAAABwAIAAAACAAIAAAACQAIAAAACgAIAAAACwAIAAAADAAIAAAADQAIAAAADgAIAAAADwAIAAAAAAAYAAAQAQAYAAAQAgAYAAAAAwAYAAAABAAYAAAABQAYAAAABgAYAAAQBwAYAAAACAAYAAAACQAYAAAACgAYAAAACwAYAAAADAAYAAAwDQAYAABADgAYAAAADwAYAAAAAAAoAAAAAQAoAABAAgAoAAAAAwAoAAAABAAoAAAABQAoAAAABgAoAAAABwAoAAAACAAoAAAACQAoAAAACgAoAAAACwAoAAAADAAoAAAADQAoAAAADgAoAAAADwAoAAAAAAA4AAAAAQA4AAAAAQAJAAAAAgAJAAAAAwAJAAAABAAJAAAABQAJAAAABgAJAAAABwAJAAAACAAJAAAACQAJAAAACgAJAAAACwAJAAAADAAJAAAADQAJAAAADgAJAAAADwAJAAAAAAAZAAAQAQAZAAAAAgAZAAAAAwAZAAAABAAZAAAABQAZAAAQBgAZAAAABwAZAAAACAAZAAAACQAZAAAACgAZAAAACwAZAAAADAAZAAAgDQAZAAAgDgAZAAAADwAZAAAAAAApAAAAAQApAAAgAgApAAAAAwApAAAABAApAAAABQApAAAABgApAAAABwApAAAACAApAAAACQApAAAACgApAAAACwApAAAADAApAAAADQApAAAADgApAAAADwApAAAAAAA5AAAAAQA5AAAAAQAKAAAAAgAKAAAAAwAKAAAABAAKAAAABQAKAAAABgAKAAAABwAKAAAACAAKAAAACQAKAAAACgAKAAAACwAKAAAQDAAKAAAQDQAKAAAADgAKAAAADwAKAAAAAAAaAAAAAQAaAAAAAgAaAAAQAwAaAAAABAAaAAAABQAaAAAABgAaAAAABwAaAAAACAAaAAAACQAaAAAACgAaAAAACwAaAAAADAAaAAAADQAaAAAwDgAaAAAADwAaAAAAAAAqAAAgAQAqAAAgAgAqAAAAAwAqAAAABAAqAAAABQAqAAAABgAqAAAABwAqAAAACAAqAAAACQAqAAAQCgAqAAAACwAqAAAADAAqAAAADQAqAAAADgAqAAAADwAqAAAAAAA6AAAAAQA6AAAAAQALAAAAAgALAAAAAwALAAAABAALAAAABQALAAAABgALAAAABwALAAAACAALAAAACQALAAAQCgALAAAQCwALAAAQDAALAAAQDQALAAAADgALAAAQDwALAAAAAAAbAAAAAQAbAAAAAgAbAAAQAwAbAAAABAAbAAAABQAbAAAQBgAbAAAABwAbAAAACAAbAAAACQAbAACgCgAbAAAACwAbAAAADAAbAAAADQAbAAAwDgAbAABADwAbAAAwAAArAAAgAQArAAAAAgArAAAQAwArAAAABAArAAAABQArAAAABgArAAAABwArAAAACAArAAAACQArAAAQCgArAAAQCwArAAAADAArAAAADQArAAAADgArAAAADwArAAAAAAA7AAAAAQA7AAAAAAAMAAAAAQAMAAAAAgAMAAAAAwAMAAAABAAMAAAABQAMAAAABgAMAAAABwAMAAAACAAMAAAACQAMAAAQCgAMAAAACwAMAAAADAAMAAAQDQAMAAAQDgAMAAAQDwAMAAAAAAAcAAAAAQAcAAAAAgAcAAAAAwAcAAAQBAAcAAAQBQAcAAAQBgAcAAAABwAcAAAACAAcAAAACQAcAACgCgAcAAAACwAcAAAADAAcAAAADQAcAAAwDgAcAABADwAcAAAAAAAsAAAAAQAsAAAQAgAsAAAAAwAsAAAQBAAsAAAABQAsAAAABgAsAAAABwAsAAAQCAAsAAAQCQAsAAAACgAsAAAQCwAsAAAADAAsAAAADQAsAAAADgAsAAAADwAsAAAAAAA8AAAAAQA8AAAAAAANAAAAAQANAAAAAgANAAAAAwANAAAABAANAAAABQANAAAABgANAAAABwANAAAACAANAAAACQANAAAgCgANAAAgCwANAAAADAANAAAADQANAAAQDgANAAAADwANAAAAAAAdAAAAAQAdAAAAAgAdAAAAAwAdAAAQBAAdAAAABQAdAAAABgAdAAAABwAdAAAACAAdAACgCQAdAACACgAdAAAACwAdAAAADAAdAAAADQAdAAAgDgAdAAAADwAdAAAAAAAtAAAAAQAtAAAQAgAtAAAAAwAtAAAQBAAtAAAQBQAtAAAQBgAtAAAABwAtAAAQCAAtAAAACQAtAAAQCgAtAAAQCwAtAAAADAAtAAAADQAtAAAADgAtAAAADwAtAAAAAAA9AAAAAQA9AAAAAAAOAAAAAQAOAAAAAgAOAAAAAwAOAAAABAAOAAAABQAOAAAABgAOAAAABwAOAACACAAOAACACQAOAABACgAOAAAACwAOAAAADAAOAAAADQAOAAAADgAOAAAADwAOAAAAAAAeAAAAAQAeAAAAAgAeAAAQAwAeAAAABAAeAAAABQAeAAAABgAeAAAABwAeAAAACAAeAACgCQAeAAAACgAeAAAACwAeAAAADAAeAAAADQAeAABADgAeAAAADwAeAAAAAAAuAAAAAQAuAAAAAgAuAAAAAwAuAAAABAAuAAAABQAuAAAABgAuAAAABwAuAAAQCAAuAAAQCQAuAAAACgAuAAAQCwAuAAAADAAuAAAADQAuAAAADgAuAAAADwAuAAAAAAA+AAAAAQA+AAAAAAAPAAAAAQAPAAAAAgAPAAAAAwAPAAAABAAPAAAABQAPAAAABgAPAACgBwAPAACQCAAPAAAgCQAPAABACgAPAAAACwAPAAAADAAPAAAADQAPAAAADgAPAAAADwAPAAAAAAAfAAAAAQAfAAAAAgAfAAAQAwAfAAAABAAfAAAABQAfAAAABgAfAAAABwAfAAAACAAfAACACQAfAAAACgAfAAAACwAfAAAADAAfAAAgDQAfAAAwDgAfAAAADwAfAAAAAAAvAAAAAQAvAAAAAgAvAAAAAwAvAAAABAAvAAAABQAvAAAABgAvAAAABwAvAAAACAAvAAAQCQAvAAAACgAvAAAACwAvAAAQDAAvAAAQDQAvAAAADgAvAAAADwAvAAAAAAA/AAAAAQA/AAAAAAAAABAAAQAAABAAAgAAABAAAwAAABAABAAAABAABQAAABAABgAAABCABwAAABCgCAAAABAwCQAAABAACgAAABAACwAAABAADAAAABAADQAAABAADgAAABAADwAAABAAAAAQABAQAQAQABAQAgAQABAQAwAQABAABAAQABAABQAQABAABgAQABAABwAQABAACAAQABCACQAQABAACgAQABAACwAQABAADAAQABBADQAQABAwDgAQABAgDwAQABAAAAAgABAAAQAgABAAAgAgABAAAwAgABAABAAgABAABQAgABAABgAgABAABwAgABAQCAAgABAQCQAgABAACgAgABAACwAgABAADAAgABAADQAgABAADgAgABAADwAgABAAAAAwABAAAQAwABAAAAABABAAAQABABAAAgABABAAAwABABAABAABABAQBQABABAQBgABABAABwABABCQCAABABBACQABABAACgABABAACwABABAADAABABAADQABABAADgABABAADwABABAQAAARABAAAQARABAAAgARABAAAwARABAABAARABAABQARABAABgARABAABwARABAACAARABCQCQARABCgCgARABAACwARABAADAARABAwDQARABAADgARABAADwARABAAAAAhABAAAQAhABAAAgAhABAAAwAhABAABAAhABAABQAhABAABgAhABAABwAhABAQCAAhABAACQAhABAACgAhABAACwAhABAQDAAhABAADQAhABAADgAhABAADwAhABAAAAAxABAAAQAxABAAAAACABAAAQACABAAAgACABAAAwACABAQBAACABAABQACABAQBgACABAABwACABAACAACABAACQACABAACgACABAACwACABAADAACABAADQACABAADgACABAADwACABAAAAASABAAAQASABAAAgASABAQAwASABAABAASABAABQASABAABgASABAABwASABAACAASABAACQASABCQCgASABCACwASABAADAASABAgDQASABAADgASABAADwASABAAAAAiABAAAQAiABAAAgAiABAAAwAiABAABAAiABAABQAiABAABgAiABAABwAiABAACAAiABAACQAiABAACgAiABAACwAiABAQDAAiABAADQAiABAADgAiABAADwAiABAAAAAyABAAAQAyABAAAAADABAAAQADABAAAgADABAQAwADABAABAADABAABQADABAQBgADABAQBwADABAACAADABAACQADABAACgADABAACwADABAADAADABAADQADABAADgADABAADwADABAAAAATABAAAQATABAQAgATABAQAwATABAABAATABAABQATABAABgATABAABwATABAACAATABAACQATABAACgATABCACwATABAADAATABAgDQATABAADgATABAADwATABAAAAAjABAAAQAjABAAAgAjABAAAwAjABAABAAjABAABQAjABAABgAjABAABwAjABAACAAjABAACQAjABAACgAjABAACwAjABAQDAAjABAADQAjABAADgAjABAADwAjABAAAAAzABAAAQAzABAAAAAEABAAAQAEABAAAgAEABAAAwAEABAQBAAEABAABQAEABAABgAEABAQBwAEABAACAAEABAACQAEABAACgAEABAACwAEABAADAAEABAADQAEABAADgAEABCADwAEABAAAAAUABAAAQAUABAAAgAUABAAAwAUABAABAAUABAABQAUABAABgAUABAABwAUABAACAAUABAACQAUABAACgAUABCQCwAUABAADAAUABAgDQAUABAADgAUABAADwAUABAAAAAkABAAAQAkABAAAgAkABAAAwAkABAABAAkABCgBQAkABCgBgAkABCgBwAkABAACAAkABAACQAkABAACgAkABAACwAkABAQDAAkABAADQAkABAADgAkABAADwAkABAAAAA0ABAAAQA0ABAAAAAFABAAAQAFABAAAgAFABAAAwAFABAABAAFABAABQAFABAABgAFABAABwAFABAACAAFABAACQAFABAACgAFABAACwAFABAADAAFABAADQAFABAADgAFABCADwAFABAAAAAVABAAAQAVABAAAgAVABAAAwAVABAABAAVABAABQAVABAABgAVABAABwAVABAACAAVABAACQAVABAACgAVABCgCwAVABCQDAAVABAgDQAVABCgDgAVABCQDwAVABCgAAAlABCAAQAlABCAAgAlABCgAwAlABCABAAlABCgBQAlABCgBgAlABCgBwAlABAACAAlABAACQAlABAACgAlABAACwAlABAADAAlABAQDQAlABAQDgAlABAADwAlABAAAAA1ABAAAQA1ABAAAAAGABAAAQAGABAAAgAGABAAAwAGABAABAAGABAABQAGABAABgAGABAABwAGABAACAAGABAACQAGABAACgAGABAACwAGABAADAAGABCADQAGABCADgAGABCQDwAGABCAAAAWABCQAQAWABCgAgAWABAAAwAWABAABAAWABAABQAWABAABgAWABAABwAWABAACAAWABAACQAWABAACgAWABAACwAWABAADAAWABAgDQAWABAADgAWABAADwAWABAAAAAmABAAAQAmABAAAgAmABAAAwAmABAABAAmABCgBQAmABCQBgAmABCgBwAmABCgCAAmABCACQAmABCQCgAmABCQCwAmABCgDAAmABCgDQAmABCADgAmABCADwAmABCAAAA2ABCgAQA2ABCgAAAHABAAAQAHABAAAgAHABAAAwAHABAABAAHABAABQAHABAABgAHABAgBwAHABAgCAAHABAgCQAHABBACgAHABAACwAHABAADAAHABCADQAHABCADgAHABCADwAHABCAAAAXABCgAQAXABCAAgAXABAAAwAXABAABAAXABAABQAXABAABgAXABAABwAXABAACAAXABAACQAXABAACgAXABAACwAXABAADAAXABAgDQAXABAADgAXABAADwAXABAAAAAnABAAAQAnABAAAgAnABAAAwAnABAABAAnABAABQAnABAABgAnABAABwAnABAACAAnABAACQAnABAACgAnABAACwAnABAADAAnABAADQAnABAADgAnABAADwAnABAAAAA3ABAAAQA3ABAAAAAIABAAAQAIABAAAgAIABAAAwAIABAABAAIABAABQAIABAABgAIABAgBwAIABBACAAIABBACQAIABAACgAIABAACwAIABAADAAIABAADQAIABCADgAIABCQDwAIABCQAAAYABCQAQAYABAAAgAYABAAAwAYABAABAAYABAABQAYABAABgAYABAABwAYABAACAAYABAACQAYABAACgAYABAACwAYABAADAAYABAgDQAYABAADgAYABAADwAYABAAAAAoABAAAQAoABAAAgAoABBAAwAoABAwBAAoABAwBQAoABBABgAoABAABwAoABAACAAoABAACQAoABAACgAoABAACwAoABAADAAoABAADQAoABAADgAoABAADwAoABAAAAA4ABAAAQA4ABAAAAAJABAAAQAJABAAAgAJABAAAwAJABAABAAJABAABQAJABAABgAJABBABwAJABAgCAAJABAgCQAJABAACgAJABAACwAJABAADAAJABAADQAJABAADgAJABCADwAJABCQAAAZABAAAQAZABAAAgAZABAAAwAZABAABAAZABAABQAZABAABgAZABAABwAZABAACAAZABAACQAZABAACgAZABAACwAZABAADAAZABAgDQAZABAADgAZABAADwAZABAAAAApABAAAQApABAAAgApABAwAwApABAwBAApABBABQApABBABgApABAgBwApABAgCAApABAACQApABAACgApABAACwApABAADAApABAQDQApABAQDgApABAQDwApABAAAAA5ABAAAQA5ABAAAAAKABAAAQAKABAAAgAKABAAAwAKABAABAAKABAABQAKABAABgAKABAgBwAKABBACAAKABAACQAKABAACgAKABAACwAKABAADAAKABAADQAKABAADgAKABAADwAKABAAAAAaABAAAQAaABAAAgAaABAAAwAaABAABAAaABAABQAaABAABgAaABAABwAaABAACAAaABAACQAaABAACgAaABAACwAaABAADAAaABAgDQAaABAADgAaABAADwAaABAAAAAqABAAAQAqABAgAgAqABBAAwAqABBABAAqABBABQAqABBABgAqABAABwAqABAACAAqABAACQAqABAACgAqABAACwAqABAADAAqABAQDQAqABAADgAqABAADwAqABAAAAA6ABAAAQA6ABAAAAALABAAAQALABAAAgALABAAAwALABAABAALABAABQALABAABgALABAABwALABAACAALABAACQALABAACgALABAACwALABAADAALABAADQALABAADgALABAADwALABAAAAAbABAAAQAbABAAAgAbABAAAwAbABAABAAbABAABQAbABAABgAbABAABwAbABAACAAbABAACQAbABAACgAbABAACwAbABAADAAbABAgDQAbABAwDgAbABAADwAbABAAAAArABBAAQArABBAAgArABBAAwArABAwBAArABAgBQArABBABgArABAABwArABAACAArABAACQArABAACgArABAACwArABAADAArABAADQArABAADgArABAADwArABAAAAA7ABAAAQA7ABAAAAAMABAAAQAMABAAAgAMABAAAwAMABAABAAMABAABQAMABAABgAMABAABwAMABAACAAMABAACQAMABAACgAMABAACwAMABAADAAMABAADQAMABAQDgAMABAQDwAMABAQAAAcABAAAQAcABAAAgAcABAAAwAcABAABAAcABAABQAcABAABgAcABAABwAcABAACAAcABAACQAcABAACgAcABAACwAcABAADAAcABAgDQAcABBADgAcABAwDwAcABAgAAAsABAgAQAsABBAAgAsABAgAwAsABAwBAAsABAwBQAsABAwBgAsABAwBwAsABAACAAsABAACQAsABAACgAsABAACwAsABAADAAsABAADQAsABAADgAsABAADwAsABAAAAA8ABAAAQA8ABAAAAANABAAAQANABAAAgANABAAAwANABAABAANABAABQANABAABgANABAABwANABAACAANABAACQANABAACgANABAACwANABAADAANABAADQANABAQDgANABAADwANABAAAAAdABAQAQAdABAAAgAdABAAAwAdABAABAAdABAABQAdABAABgAdABAABwAdABAACAAdABAACQAdABAACgAdABAACwAdABAADAAdABAgDQAdABAgDgAdABAwDwAdABAwAAAtABBAAQAtABAwAgAtABAwAwAtABAgBAAtABAgBQAtABBABgAtABBABwAtABAACAAtABAACQAtABAACgAtABAACwAtABAADAAtABAADQAtABAADgAtABAADwAtABAAAAA9ABAAAQA9ABAAAAAOABAAAQAOABAAAgAOABAAAwAOABAABAAOABAABQAOABAABgAOABAABwAOABAACAAOABAACQAOABAACgAOABAACwAOABAADAAOABAADQAOABAADgAOABAADwAOABAAAAAeABAAAQAeABAAAgAeABAAAwAeABAABAAeABAABQAeABAABgAeABAABwAeABAACAAeABAACQAeABAACgAeABAACwAeABAADAAeABAgDQAeABAgDgAeABAgDwAeABBAAAAuABAgAQAuABAgAgAuABBAAwAuABAwBAAuABAwBQAuABAgBgAuABAgBwAuABAACAAuABAACQAuABAACgAuABAACwAuABAADAAuABAADQAuABAADgAuABAADwAuABAAAAA+ABAAAQA+ABAAAQAPABAAAgAPABAAAwAPABAABAAPABAABQAPABAABgAPABAABwAPABAACAAPABAACQAPABAACgAPABAACwAPABAQDAAPABAQDQAPABAADgAPABAQDwAPABAAAAAfABAAAQAfABAAAgAfABAAAwAfABAABAAfABAABQAfABAABgAfABAABwAfABAACAAfABAACQAfABAACgAfABAACwAfABAADAAfABAgDQAfABAgDgAfABAgDwAfABAwAAAvABAgAQAvABAwAgAvABAwAwAvABAwBAAvABAwBQAvABAwBgAvABAgBwAvABAgCAAvABBACQAvABBACgAvABAwCwAvABAwDAAvABAADQAvABAADgAvABAADwAvABAgAAA/ABAwAQA/ABAAAQAAACAAAgAAACAAAwAAACAABAAAACAABQAAACAABgAAACAABwAAACAACAAAACAACQAAACAACgAAACAQCwAAACAADAAAACAQDQAAACAADgAAACAADwAAACAAAAAQACAAAQAQACAAAgAQACAAAwAQACAABAAQACAABQAQACBABgAQACAgBwAQACAACAAQACAACQAQACAACgAQACAACwAQACAgDAAQACAgDQAQACAgDgAQACAgDwAQACAgAAAgACAgAQAgACBAAgAgACBAAwAgACAgBAAgACBABQAgACAgBgAgACAwBwAgACAgCAAgACBACQAgACAwCgAgACAgCwAgACBADAAgACAwDQAgACAwDgAgACBADwAgACAgAAAwACAwAQAwACAwAgABACAAAwABACAABAABACAABQABACAABgABACAABwABACAACAABACAACQABACAACgABACAACwABACAADAABACAADQABACAgDgABACBADwABACAgAAARACBAAQARACAgAgARACAgAwARACAwBAARACAgBQARACAgBgARACAwBwARACBACAARACAgCQARACAgCgARACAgCwARACAgDAARACAgDQARACBADgARACBADwARACAwAAAhACAgAQAhACBAAgAhACAwAwAhACAgBAAhACAgBQAhACBABgAhACAgBwAhACAwCAAhACAwCQAhACAwCgAhACBACwAhACAwDAAhACBADQAhACBADgAhACAgDwAhACAgAAAxACBAAQAxACBAAgACACAAAwACACAABAACACAABQACACAABgACACAABwACACAACAACACAACQACACAACgACACAwCwACACAwDAACACAgDQACACAgDgACACAADwACACAAAAASACAAAQASACAAAgASACAAAwASACAABAASACAABQASACAABgASACAgBwASACAgCAASACAgCQASACAACgASACAgCwASACAgDAASACBADQASACAgDgASACAgDwASACAwAAAiACAwAQAiACBAAgAiACBAAwAiACAwBAAiACAgBQAiACAgBgAiACAwBwAiACAgCAAiACAwCQAiACAwCgAiACBACwAiACBADAAiACAwDQAiACAwDgAiACAgDwAiACAgAAAyACAwAQAyACAwAgADACAAAwADACAABAADACAABQADACAABgADACAABwADACAACAADACAACQADACAgCgADACAgCwADACAADAADACAADQADACAADgADACAADwADACAAAAATACAAAQATACAAAgATACAAAwATACAABAATACAABQATACAABgATACAABwATACAACAATACAACQATACAgCgATACAwCwATACAgDAATACAgDQATACBADgATACAwDwATACAwAAAjACBAAQAjACAwAgAjACAwAwAjACAgBAAjACAgBQAjACAgBgAjACBABwAjACAgCAAjACBACQAjACAwCgAjACAgCwAjACAgDAAjACBADQAjACBADgAjACBABQAEACBABgAEACBABwAEACAwCAAEACBACQAEACBACgAEACAwCwAEACAADAAEACAADQAEACAADgAEACAADwAEACAAAAAUACAQAQAUACAAAgAUACAAAwAUACAABAAUACAABQAUACAABgAUACAABwAUACAACAAUACAACQAUACAgCgAUACAwCwAUACBADAAUACAgDQAUACAgDgAUACAgDwAUACBAAAAkACAwAQAkACAwAgAkACAgAwAkACAwBAAkACBABQAkACBABgAkACAgBwAkACAwCAAkACAwCQAkACAwCgAkACBACwAkACAwDAAkACAwDQAkACAwDgAkACAwDwAkACAwBQAFACAABgAFACAABwAFACAACAAFACAACQAFACAACgAFACAACwAFACAADAAFACAADQAFACAADgAFACAADwAFACAAAAAVACAAAQAVACAQAgAVACAQAwAVACAQBAAVACAABQAVACAABgAVACAQBwAVACAACAAVACAgCQAVACAgCgAVACAgCwAVACBADAAVACAgDQAVACAgDgAVACBADwAVACAgAAAlACAgAQAlACAgAgAlACBAAwAlACAwBAAlACAgBQAlACBABgAlACAwBwAlACAgCAAlACAgCQAlACAgCgAlACAgCwAlACAwDAAlACAwDQAlACAwDgAlACAwDwAlACAwBQAGACAABgAGACAABwAGACAACAAGACAACQAGACAACgAGACAACwAGACAADAAGACAADQAGACAADgAGACAADwAGACAAAAAWACAAAQAWACAAAgAWACAAAwAWACAQBAAWACAQBQAWACAQBgAWACAQBwAWACAACAAWACAgCQAWACBACgAWACAgCwAWACAwDAAWACAwDQAWACBADgAWACAgDwAWACAgAAAmACAgAQAmACAgAgAmACAwAwAmACBABAAmACAgBQAmACBABgAmACAwBwAmACBACAAmACBACQAmACAwCgAmACAwCwAmACAwDAAmACAwDQAmACAwDgAmACAwDwAmACAwBQAHACAABgAHACAABwAHACAACAAHACAACQAHACAACgAHACAACwAHACAADAAHACAADQAHACAADgAHACAADwAHACAAAAAXACAAAQAXACAAAgAXACAAAwAXACAABAAXACAABQAXACAABgAXACAQBwAXACAACAAXACAwCQAXACAwCgAXACAgCwAXACAgDAAXACAgDQAXACAwDgAXACAgDwAXACAwAAAnACAgAQAnACBAAgAnACAgAwAnACBABAAnACBABQAnACBABgAnACBABwAnACAwCAAnACAwCQAnACAwCgAnACAwCwAnACAwDAAnACAwDQAnACAwDgAnACAwDwAnACAwBQAIACAABgAIACAABwAIACAACAAIACAACQAIACAACgAIACAACwAIACAADAAIACAADQAIACAADgAIACAADwAIACAAAAAYACAAAQAYACAQAgAYACAQAwAYACAABAAYACAABQAYACAABgAYACAABwAYACAACAAYACBACQAYACBACgAYACAgCwAYACBADAAYACAwDQAYACAgDgAYACAgDwAYACAwAAAoACAgAQAoACAwAgAoACAwAwAoACAwBAAoACAwBQAoACAwBgAoACAwBwAoACAwCAAoACAwCQAoACAwCgAoACAwCwAoACAwDAAoACAwDQAoACAwDgAoACAwDwAoACAwBQAJACBABgAJACBABwAJACAwCAAJACBACQAJACBACgAJACAACwAJACAADAAJACAADQAJACAADgAJACAADwAJACAAAAAZACAAAQAZACAAAgAZACAQAwAZACAQBAAZACAABQAZACAABgAZACAABwAZACAACAAZACAwCQAZACAwCgAZACAgCwAZACAwDAAZACAgDQAZACAgDgAZACAgDwAZACAwAAApACAwAQApACAwAgApACAwAwApACAwBAApACAwBQApACAwBgApACAwBwApACAwCAApACAwCQApACAwCgApACAwCwApACAwDAApACAwDQApACAwDgApACAwDwApACAwBQAKACAwBgAKACBABwAKACBACAAKACAgCQAKACBACgAKACAgCwAKACAADAAKACAADQAKACAADgAKACAADwAKACAAAAAaACAAAQAaACAAAgAaACAAAwAaACAABAAaACAABQAaACAABgAaACAABwAaACAACAAaACAwCQAaACAwCgAaACAwCwAaACBADAAaACAgDQAaACAgDgAaACAgDwAaACBACAALACBACQALACBACgALACBACwALACBADAALACAADQALACAADgALACAADwALACAAAAAbACAAAQAbACAAAgAbACAAAwAbACAABAAbACAABQAbACAABgAbACAABwAbACAACAAbACAgCQAbACBACgAbACAwCwAbACBADAAbACAwA="
+ }
+ },
+ {
+ "name": "objects",
+ "data": {
+ "file": "forest.png",
+ "size": 16,
+ "stride": 16,
+ "data": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIAAAAmACEAAAAmACMAIgAAACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAiAAAAAAAjACEAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEAAAAhACIAIgAAACUAIgAhACMAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMgAAACYAJwAiACMAAAAAACMAIwAAACIAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgAAAC0AIwAAACIAIwAiAAAAAAAhACEAIwAjACIAAAAAACMAAAAAAMIAwgDCAMIAwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEAAAAhAAAAIQAhACYAIgAAAAAALQAiACMAAAAAAAAAAAAhAC0AIgAmAAAAAAAAAAAAAAAeAB4AHgAeAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIAJgAjADIAAAAtAAAAJgAjACEAIwAjAAAAAAAnAAAAIgAAAAAAAAAAAAAAIQAjACYAAAAjAAAAAAAAACEAAAAhACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjACYAIgAAAAAALQAAACIAIQAjACEAIwAhACIAAAAAAAAAAAAAAAAAAAAAAAAAIgAAAAAAIwAiAAAAAAAjAAAAAAAAAAAAAAAiACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAyACEAAAAiACMAIgAtACEAAAAhAC0AAAAiACEAIgAiAAAAJgAAAAAAIwAAAAAAMQAAAAAAAAAhAC0AIwAhAAAAAAAmAAAAAAAjACMAAAAiACEAAAAAAAAAAAAAAAAAAAAAACIAAAAhAAAAIQAhACIAIgAiACEAIQAAACEAAAAiACIAMQAAAAAAAAAAACEAKgAAAAAAJwAAAAAAMQAAACEAIQAmACIAAAAhAAAAAAAiACEAAAAjAAAAAAAAAAAAIwAjAAAAIwAAACMAIQAtACIAIQAiACEAIQAAACEAIQAhACoAIQAjAAAAAAAAAAAAAAAAACEAAAAAAAAAKgAjACEAAAAAACMAIQAAACkAIgAAACYAAAAiAAAAIwAAAAAAAAAAAAAAIQAAACYAIQAjACMAIgAiACIAIQAhACEAAAAnAEcAAAAjACEAJwAAAAAAMgAAAAAAAAAnAAAAAAAhACMAIgAAACEAAAAAACIAIgAmAAAAAAAAAAAAIQAjAAAAIwAAAAAAAAAAACkAIQAhACEAIQAhAAAAAAAhAAAAIQAAAAAAAAAAACMAIQAjAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgAiACEAJAAiACIAIgAAACEAAAAiACEAIgAAACEAIQAAACMAAAAAAAAAIwAAAC0AIgAiAAAAAAAAACEAAAAAAAAAAAAAAAAAAAAjACEAswAAADMAAAAAAC0AAAAAADEAAAAiACIAIwAkAAAAAAAkAAAAIgAjACMAAAAjAAAAJgAAACIAAAAjAAAAAAAjAAAAIQAAACIAKAA1AAAAAAA0AAAAIwAjACcAYQBiACMAIQAiALMAAAAAAAAAAAAoAAAAAAAAAAAAIgAjACQAAAAAACQAAAAkACQAAAAjAAAAJgAhACEAAAAAAAAAAAAAAAAAAAAiACYAIQAiAAAACAEJAQoBAAAhACEAIwAjACIAIQAhAAAAIgCzAAAAAAAAAAAAJgAAAEcAAAA2AAAAIwAkAAAAAAAAAPQAJAAkACMAIwAAACEAAAAtAAAAIQAAACMAAAAAACIAIQAAAAAAIQAjAAAAAAAlACIAIgAAAAAAIgAhAAAAAAAAAAAAswAAAAAAAAAAAAAAAAAAAAAAAAAjACQAAAAAAAAAAAAEAS0AAAAiACIAAAAAACIAAAAAACIALQAAAAAAJgAAAAAAIwAAACEAIgAAADQAIQAjACEAAAAAAAAAAAAAAAAAIgAAALMAAAAAAC0AAAAAAAAAAAAAAAAAJwAAAAAAAAAAAAAA8QDyAPMAJAAjACYAJgAiACEAJgAyAAAAIQAAAAAAAAAjACIAIQAmACMAAAAnACMAIwAAAAAAAAAAAAAARwAjACMAKQCzAAAAAABhAGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEDAXUAAAAjAAAAAAAAACMALQAAAAAAAAAAAAAAAAAmAAAAIwAhAAAAAADCAMIAAAAiAAAANQAAAAAAAAAAAAAAswA3AAAAAABjAGQAAAAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAIgAAACMAIwAAACEAAAArACMAAAAAACIAAAAiAAAAIwAiACIAHAAeAMEAwgDDADUAwQDCAMIAwgDCAMMAAAAnAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAFAQAAkQByAJIAAAAAACIAIwAAACIAIwAAAAAAAAAAACEAMgAhAAAAJgAhACEAAAAcABoAGwAAABkAGgAaAB0AHgAeAAAAAAAAACYAAAAAAC0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALQAAAAAAAAAAAAAAAAAAAAAAAAA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAtAAAAAAAAAAAAAAA3AAAAAAAAAAAAAAAhAAAAAAAjAAAAAAAmAC0AAAAiACIAAAAAAAAAIQAAAAAAAAA1AAAAAAAAAAAAKAAAACYAAAAAADIAAAAAAAAAKQAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAACYAKAAlACEAIwAtACIAAAAhAAAAAAAAACEAKQAAAAAAAAAAACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAAC4AAAAAADQAAAAAACUAAAAAAAAAAAAAAAAAAAAlAAAAAAAjACMAIwAAADIAAAAAAAAAAAAAAC0AJgAAAAAAIQAjAAAAAAAiACEALQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAuAAAAAAAAAAAAAAAAAAAAJgAAAAAAKAAmACIAIQAiACMAJgAAAAAAAAAAAAAAIQAmAC0AIwAAAC0AIwAAAAAAAAAiAAAAAAAAAAAAAAAAAAAAAAAAADcAAAAAAAAANAAAAAAAAAAuAAAAAAAAADYAAAAAACkAAAAAAAAAJQAiAAAAJgAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgAjACMAAAAmAAAAIgAhACEAAAAxAAAAJgBhAGIAAAAAAAAAAAAmAC4AAAAAAAAAAAAAAAAAAAAAADYAAAAAAAAAKAAlACYAJwAjAAAAAAAAAAAAAAAAAAAAAAAAACIAAAAjAAAAIgAjAAAAAAAjACMAIgA3ACEAIwAjACIAIwAhAGEAYgAhAAAAAAAuAAAAAAAAADYAAAAAAAAAAAAAAAAAAAAhACMAJQAAACYAAAAAACIAAAAAAAAAAAAAAAAAAAAAACEAAAAyAAAAIwAjAAAAAAAAAAAAAAAAACEAAAAAAAAAAAAAACMAIgAiACkANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgAlAAAAAAAAAAAAJgAAAAAAAAAAAAAAAAAAAAAAJgAAAAAAIwAhACMAIwAjACMAAAAjACIAAAAAAGEAYgAAACYAAAAAAAAAAAAAAC4AAAAAADYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAAAAIQAmACIAAAAiACIAIQAAACIAAAAAAAAAAAAAAAAAAABhAGIALgAAADYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgAhAAAAAAAAAAAAIwAAAAAAAAAAAAAAAAAAAAAAAAA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMgAAACIALQBjAGQAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEALgAmADEAIgAiAAAAAAAAAAAAAAAAACgANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAAAAAAC0AIgAtAAAAAAAjACIAIQAAAAAAAAAjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIAAAAjAAAALgAiACMAJgAAACEAIwAjACEAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgAAAAAAIgAAAC0AAAAjACMAAAAyADEAIgAtAAAAIwAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALgAhACYAAAAuACIAAAAjACMAAAAmACEAAAAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEAAAAtAC4AAAAxACIAAAAjACMALQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALgAAACMAAAAjACYAAAAtAAAAAAAjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIAAAAiACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
+ }
+ },
+ {
+ "name": "over",
+ "data": {
+ "file": "forest.png",
+ "size": 16,
+ "stride": 16,
+ "data": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWABYAFgAWABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRAFIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFEAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFMAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFEAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUQBSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUQBSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFEAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFMAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
+ }
+ }
+ ],
+ "triggers": [
+ {
+ "x": 4,
+ "y": 0,
+ "width": 1,
+ "height": 45,
+ "action": [
+ 2
+ ]
+ },
+ {
+ "x": 24,
+ "y": 3,
+ "width": 3,
+ "height": 1,
+ "action": [
+ 1,
+ "WorldMap",
+ "firstVillageNorth"
+ ]
+ },
+ {
+ "x": 15,
+ "y": 3,
+ "width": 23,
+ "height": 1,
+ "action": [
+ 2
+ ]
+ },
+ {
+ "x": 25,
+ "y": 4,
+ "width": 1,
+ "height": 1,
+ "action": [
+ 0,
+ "forest"
+ ]
+ },
+ {
+ "x": 45,
+ "y": 5,
+ "width": 1,
+ "height": 31,
+ "action": [
+ 2
+ ]
+ },
+ {
+ "x": 27,
+ "y": 21,
+ "width": 1,
+ "height": 1
+ },
+ {
+ "x": 45,
+ "y": 21,
+ "width": 1,
+ "height": 3,
+ "action": [
+ 1,
+ "WorldMap",
+ "firstVillageSouth"
+ ]
+ },
+ {
+ "x": 44,
+ "y": 22,
+ "width": 1,
+ "height": 1,
+ "action": [
+ 0,
+ "south"
+ ]
+ },
+ {
+ "x": 5,
+ "y": 42,
+ "width": 43,
+ "height": 1,
+ "action": [
+ 2
+ ]
+ }
+ ],
+ "collide": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUVFRUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRUVFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+ "npcs": [
+ {
+ "x": 25,
+ "y": 9,
+ "kind": "Hero"
+ },
+ {
+ "x": 38,
+ "y": 24,
+ "kind": "Finrod",
+ "item": "Book"
+ }
+ ],
+ "props": {
+ "tileSize": 16,
+ "layers": [
+ {
+ "l": "triggers",
+ "p": {
+ "alpha": 0.53,
+ "color": 5119
+ }
+ },
+ {
+ "l": "collide",
+ "p": {
+ "alpha": 0.27
+ }
+ },
+ {
+ "l": "npcs",
+ "p": {
+ "alpha": 1
+ }
+ },
+ {
+ "l": "ground",
+ "p": {
+ "alpha": 1,
+ "mode": "objects"
+ }
+ },
+ {
+ "l": "objects",
+ "p": {
+ "alpha": 1
+ }
+ },
+ {
+ "l": "over",
+ "p": {
+ "alpha": 1
+ }
+ }
+ ]
+ },
+ "tileProps": [],
+ "level": "FirstVillage"
+ }
+ ],
+ "separators": [
+ {
+ "index": 1,
+ "title": "Reboss"
+ },
+ {
+ "index": 1,
+ "title": "Test"
+ },
+ {
+ "index": 1,
+ "title": "Extra Content"
+ },
+ {
+ "index": 1,
+ "title": "Demonia Tactics"
+ },
+ {
+ "index": 1,
+ "title": "_Antik"
+ }
+ ],
+ "props": {
+ "level": {
+ "tileSets": {
+ "forest.png": {
+ "stride": 16,
+ "sets": [
+ {
+ "x": 0,
+ "y": 0,
+ "w": 1,
+ "h": 1,
+ "t": "ground",
+ "opts": {
+ "name": "herb",
+ "priority": 2
+ }
+ },
+ {
+ "x": 1,
+ "y": 0,
+ "w": 1,
+ "h": 1,
+ "t": "ground",
+ "opts": {
+ "name": "foam",
+ "priority": 3
+ }
+ },
+ {
+ "x": 6,
+ "y": 12,
+ "w": 3,
+ "h": 3,
+ "t": "border",
+ "opts": {
+ "borderIn": "herb",
+ "borderOut": "water"
+ }
+ },
+ {
+ "x": 5,
+ "y": 10,
+ "w": 2,
+ "h": 2,
+ "t": "border",
+ "opts": {
+ "borderIn": "water",
+ "borderOut": "herb",
+ "borderMode": "corner"
+ }
+ },
+ {
+ "x": 3,
+ "y": 12,
+ "w": 3,
+ "h": 3,
+ "t": "border",
+ "opts": {
+ "borderOut": "dirt"
+ }
+ },
+ {
+ "x": 9,
+ "y": 12,
+ "w": 3,
+ "h": 3,
+ "t": "border",
+ "opts": {
+ "borderIn": "foam"
+ }
+ },
+ {
+ "x": 7,
+ "y": 10,
+ "w": 2,
+ "h": 2,
+ "t": "border",
+ "opts": {
+ "borderOut": "foam",
+ "borderMode": "corner",
+ "borderIn": "lower"
+ }
+ },
+ {
+ "x": 3,
+ "y": 10,
+ "w": 2,
+ "h": 2,
+ "t": "border",
+ "opts": {
+ "borderOut": "upper",
+ "borderMode": "corner",
+ "borderIn": "dirt"
+ }
+ },
+ {
+ "x": 12,
+ "y": 12,
+ "w": 3,
+ "h": 3,
+ "t": "border",
+ "opts": {
+ "borderIn": "dirt",
+ "borderOut": "water"
+ }
+ },
+ {
+ "x": 9,
+ "y": 10,
+ "w": 2,
+ "h": 2,
+ "t": "border",
+ "opts": {
+ "borderIn": "water",
+ "borderOut": "dirt",
+ "borderMode": "corner"
+ }
+ },
+ {
+ "x": 11,
+ "y": 9,
+ "w": 3,
+ "h": 3,
+ "t": "border",
+ "opts": {
+ "borderOut": "water",
+ "borderMode": "u",
+ "borderIn": "herb"
+ }
+ },
+ {
+ "x": 2,
+ "y": 0,
+ "w": 6,
+ "h": 1,
+ "t": "ground",
+ "opts": {
+ "name": "water"
+ }
+ },
+ {
+ "x": 8,
+ "y": 0,
+ "w": 3,
+ "h": 1,
+ "t": "ground",
+ "opts": {
+ "name": "dirt",
+ "priority": 1
+ }
+ },
+ {
+ "x": 4,
+ "y": 0,
+ "w": 4,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "anim_water"
+ }
+ },
+ {
+ "x": 6,
+ "y": 4,
+ "w": 4,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "anim_flower"
+ }
+ },
+ {
+ "x": 6,
+ "y": 3,
+ "w": 4,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "anim_flower2"
+ }
+ },
+ {
+ "x": 4,
+ "y": 16,
+ "w": 3,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "anim_fire"
+ }
+ },
+ {
+ "x": 0,
+ "y": 15,
+ "w": 3,
+ "h": 2,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 3,
+ "y": 15,
+ "w": 1,
+ "h": 2,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 0,
+ "y": 2,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 1,
+ "y": 2,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 2,
+ "y": 2,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 3,
+ "y": 2,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 4,
+ "y": 2,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 5,
+ "y": 2,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 6,
+ "y": 2,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 7,
+ "y": 2,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 8,
+ "y": 2,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 9,
+ "y": 2,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 10,
+ "y": 2,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 11,
+ "y": 2,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 12,
+ "y": 2,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 6,
+ "y": 1,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 7,
+ "y": 1,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 8,
+ "y": 1,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 9,
+ "y": 1,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 10,
+ "y": 1,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 11,
+ "y": 1,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 12,
+ "y": 1,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 13,
+ "y": 1,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 0,
+ "y": 1,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 1,
+ "y": 1,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 2,
+ "y": 1,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 0,
+ "y": 3,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 1,
+ "y": 3,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 2,
+ "y": 3,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 3,
+ "y": 3,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 4,
+ "y": 3,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 5,
+ "y": 3,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 6,
+ "y": 3,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 7,
+ "y": 3,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 8,
+ "y": 3,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 9,
+ "y": 3,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 9,
+ "y": 4,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 8,
+ "y": 4,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 7,
+ "y": 4,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 6,
+ "y": 4,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 0,
+ "y": 5,
+ "w": 2,
+ "h": 2,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 2,
+ "y": 5,
+ "w": 2,
+ "h": 2,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 1,
+ "y": 9,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 0,
+ "y": 9,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 0,
+ "y": 7,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 0,
+ "y": 8,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 1,
+ "y": 7,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 2,
+ "y": 7,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 2,
+ "y": 8,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 1,
+ "y": 8,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 3,
+ "y": 7,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 4,
+ "y": 16,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 0,
+ "y": 10,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 1,
+ "y": 10,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 2,
+ "y": 10,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 2,
+ "y": 11,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 2,
+ "y": 12,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 1,
+ "y": 12,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 0,
+ "y": 12,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 0,
+ "y": 11,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 0,
+ "y": 17,
+ "w": 4,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "anim_fall"
+ }
+ },
+ {
+ "x": 0,
+ "y": 18,
+ "w": 4,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "anim_fall2"
+ }
+ },
+ {
+ "x": 0,
+ "y": 19,
+ "w": 4,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "anim_fall3"
+ }
+ },
+ {
+ "x": 0,
+ "y": 20,
+ "w": 4,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "anim_fall4"
+ }
+ },
+ {
+ "x": 13,
+ "y": 2,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 11,
+ "y": 17,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 15,
+ "y": 17,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 11,
+ "y": 21,
+ "w": 1,
+ "h": 2,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 15,
+ "y": 21,
+ "w": 1,
+ "h": 2,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 15,
+ "y": 18,
+ "w": 1,
+ "h": 3,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 11,
+ "y": 18,
+ "w": 1,
+ "h": 3,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 12,
+ "y": 18,
+ "w": 3,
+ "h": 3,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 12,
+ "y": 21,
+ "w": 3,
+ "h": 2,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 5,
+ "y": 17,
+ "w": 4,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "anim_waterfall2a",
+ "value": 2
+ }
+ },
+ {
+ "x": 5,
+ "y": 18,
+ "w": 4,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "anim_waterfall2b",
+ "value": 2
+ }
+ },
+ {
+ "x": 5,
+ "y": 19,
+ "w": 4,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "anim_waterfall2c",
+ "value": 2
+ }
+ },
+ {
+ "x": 5,
+ "y": 20,
+ "w": 4,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "anim_waterfall2d",
+ "value": 2
+ }
+ },
+ {
+ "x": 0,
+ "y": 22,
+ "w": 4,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "anim_waterfall3a",
+ "value": 2
+ }
+ },
+ {
+ "x": 0,
+ "y": 23,
+ "w": 4,
+ "h": 1,
+ "t": "group",
+ "opts": {}
+ },
+ {
+ "x": 0,
+ "y": 24,
+ "w": 4,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "anim_waterfall3c",
+ "value": 2
+ }
+ },
+ {
+ "x": 0,
+ "y": 25,
+ "w": 4,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "anim_waterfall3d",
+ "value": 2
+ }
+ },
+ {
+ "x": 5,
+ "y": 22,
+ "w": 4,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "anim_waterfall4a",
+ "value": 2
+ }
+ },
+ {
+ "x": 5,
+ "y": 23,
+ "w": 4,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "anim_waterfall4b",
+ "value": 2
+ }
+ },
+ {
+ "x": 5,
+ "y": 25,
+ "w": 4,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "anim_waterfall4d",
+ "value": 2
+ }
+ },
+ {
+ "x": 5,
+ "y": 24,
+ "w": 4,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "anim_waterfall4c",
+ "value": 2
+ }
+ },
+ {
+ "x": 8,
+ "y": 26,
+ "w": 2,
+ "h": 2,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 3,
+ "y": 26,
+ "w": 3,
+ "h": 2,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 0,
+ "y": 26,
+ "w": 3,
+ "h": 2,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 4,
+ "y": 28,
+ "w": 2,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 6,
+ "y": 28,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 7,
+ "y": 28,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 8,
+ "y": 28,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 7,
+ "y": 27,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 6,
+ "y": 27,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 3,
+ "y": 31,
+ "w": 2,
+ "h": 2,
+ "t": "border",
+ "opts": {
+ "borderIn": "dirt",
+ "borderOut": "herb2",
+ "borderMode": "corner"
+ }
+ },
+ {
+ "x": 5,
+ "y": 31,
+ "w": 2,
+ "h": 2,
+ "t": "border",
+ "opts": {
+ "borderIn": "water",
+ "borderOut": "herb2",
+ "borderMode": "corner"
+ }
+ },
+ {
+ "x": 3,
+ "y": 33,
+ "w": 3,
+ "h": 3,
+ "t": "border",
+ "opts": {
+ "borderOut": "dirt",
+ "borderIn": "herb2"
+ }
+ },
+ {
+ "x": 6,
+ "y": 33,
+ "w": 3,
+ "h": 3,
+ "t": "border",
+ "opts": {
+ "borderIn": "herb2",
+ "borderOut": "water"
+ }
+ },
+ {
+ "x": 0,
+ "y": 30,
+ "w": 1,
+ "h": 1,
+ "t": "ground",
+ "opts": {
+ "name": "herb2",
+ "priority": 3
+ }
+ },
+ {
+ "x": 0,
+ "y": 35,
+ "w": 3,
+ "h": 3,
+ "t": "border",
+ "opts": {
+ "borderIn": "herb2",
+ "borderOut": "water",
+ "borderMode": "u"
+ }
+ },
+ {
+ "x": 0,
+ "y": 31,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 1,
+ "y": 31,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 2,
+ "y": 31,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 2,
+ "y": 32,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 2,
+ "y": 33,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 1,
+ "y": 33,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 0,
+ "y": 33,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 0,
+ "y": 32,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 1,
+ "y": 30,
+ "w": 1,
+ "h": 1,
+ "t": "ground",
+ "opts": {
+ "name": "stone",
+ "priority": 2
+ }
+ },
+ {
+ "x": 7,
+ "y": 31,
+ "w": 2,
+ "h": 2,
+ "t": "border",
+ "opts": {
+ "borderIn": "stone",
+ "borderOut": "upper",
+ "borderMode": "corner"
+ }
+ },
+ {
+ "x": 4,
+ "y": 36,
+ "w": 3,
+ "h": 3,
+ "t": "border",
+ "opts": {
+ "borderOut": "stone"
+ }
+ },
+ {
+ "x": 0,
+ "y": 2,
+ "w": 1,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "tree"
+ }
+ },
+ {
+ "x": 8,
+ "y": 6,
+ "w": 1,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "tree_shade"
+ }
+ },
+ {
+ "x": 1,
+ "y": 2,
+ "w": 1,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "tree2"
+ }
+ },
+ {
+ "x": 2,
+ "y": 2,
+ "w": 1,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "tree3"
+ }
+ },
+ {
+ "x": 9,
+ "y": 6,
+ "w": 1,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "tree2_shade"
+ }
+ },
+ {
+ "x": 10,
+ "y": 6,
+ "w": 1,
+ "h": 1,
+ "t": "group",
+ "opts": {
+ "name": "tree3_shade"
+ }
+ },
+ {
+ "x": 0,
+ "y": 5,
+ "w": 2,
+ "h": 2,
+ "t": "group",
+ "opts": {
+ "name": "btree1"
+ }
+ },
+ {
+ "x": 4,
+ "y": 5,
+ "w": 2,
+ "h": 2,
+ "t": "group",
+ "opts": {
+ "name": "btree1_shade"
+ }
+ },
+ {
+ "x": 2,
+ "y": 5,
+ "w": 2,
+ "h": 2,
+ "t": "group",
+ "opts": {
+ "name": "btree2"
+ }
+ },
+ {
+ "x": 6,
+ "y": 5,
+ "w": 2,
+ "h": 2,
+ "t": "group",
+ "opts": {
+ "name": "btree2_shade"
+ }
+ },
+ {
+ "x": 2,
+ "y": 28,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 3,
+ "y": 28,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 14,
+ "y": 29,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 14,
+ "y": 24,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 10,
+ "y": 28,
+ "w": 1,
+ "h": 2,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 12,
+ "y": 28,
+ "w": 1,
+ "h": 2,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 13,
+ "y": 24,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 13,
+ "y": 25,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 13,
+ "y": 29,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 13,
+ "y": 30,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 11,
+ "y": 29,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 12,
+ "y": 30,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 10,
+ "y": 30,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 11,
+ "y": 32,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 10,
+ "y": 31,
+ "w": 1,
+ "h": 2,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 12,
+ "y": 31,
+ "w": 1,
+ "h": 2,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 0,
+ "y": 0,
+ "w": 1,
+ "h": 1,
+ "t": "object",
+ "opts": {}
+ },
+ {
+ "x": 10,
+ "y": 15,
+ "w": 3,
+ "h": 2,
+ "t": "object",
+ "opts": {}
+ }
+ ],
+ "props": [
+ null,
+ null,
+ {
+ "hideHero": 0,
+ "collide": "Full"
+ },
+ {
+ "hideHero": 0,
+ "collide": "Full"
+ },
+ {
+ "hideHero": 0,
+ "collide": "Full"
+ },
+ {
+ "hideHero": 0,
+ "collide": "Full"
+ },
+ {
+ "hideHero": 0,
+ "collide": "Full"
+ },
+ {
+ "hideHero": 0,
+ "collide": "Full"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 0,
+ "collide": "Ladder"
+ },
+ {
+ "hideHero": 0,
+ "collide": "No"
+ },
+ {
+ "hideHero": 0,
+ "collide": "No"
+ },
+ null,
+ null,
+ {
+ "hideHero": 0,
+ "collide": "Full"
+ },
+ {
+ "hideHero": 0,
+ "collide": "Full"
+ },
+ {
+ "hideHero": 0,
+ "collide": "Full"
+ },
+ {
+ "hideHero": 0,
+ "collide": "Full"
+ },
+ {
+ "hideHero": 0,
+ "collide": "Full"
+ },
+ {
+ "hideHero": 0,
+ "collide": "Full"
+ },
+ {
+ "hideHero": 0,
+ "collide": "Full"
+ },
+ {
+ "hideHero": 0,
+ "collide": "Full"
+ },
+ {
+ "hideHero": 0,
+ "collide": "Full"
+ },
+ null,
+ null,
+ {
+ "hideHero": 2,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 2,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 2,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 0
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 0
+ },
+ {
+ "hideHero": 0
+ },
+ {
+ "hideHero": 0,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 0,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 0
+ },
+ {
+ "hideHero": 0
+ },
+ null,
+ null,
+ {
+ "hideHero": 0
+ },
+ {
+ "hideHero": 0
+ },
+ {
+ "hideHero": 0
+ },
+ {
+ "hideHero": 0
+ },
+ {
+ "hideHero": 0
+ },
+ {
+ "hideHero": 0
+ },
+ {
+ "hideHero": 0
+ },
+ {
+ "hideHero": 0
+ },
+ {
+ "hideHero": 0
+ },
+ {
+ "hideHero": 0
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 2,
+ "collide": "Small"
+ },
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 0
+ },
+ {
+ "hideHero": 0
+ },
+ {
+ "hideHero": 0
+ },
+ {
+ "hideHero": 0
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 2,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 2,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 2,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 2,
+ "collide": "Bottom"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 2,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 2,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 2,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 2,
+ "collide": "Small"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "HalfTop"
+ },
+ {
+ "hideHero": 1,
+ "collide": "HalfBottom"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "HalfRight"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "HalfLeft"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 0,
+ "collide": "CornerTL"
+ },
+ {
+ "hideHero": 0,
+ "collide": "Top"
+ },
+ {
+ "hideHero": 0,
+ "collide": "CornerTR"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 0,
+ "collide": "Left"
+ },
+ null,
+ {
+ "hideHero": 0,
+ "collide": "Right"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 0,
+ "collide": "CornerBL"
+ },
+ {
+ "hideHero": 0,
+ "collide": "Bottom"
+ },
+ {
+ "hideHero": 0,
+ "collide": "CornerBR"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 1
+ },
+ {
+ "hideHero": 1
+ },
+ {
+ "hideHero": 1
+ },
+ {
+ "hideHero": 1
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 1,
+ "collide": "HalfRight"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "HalfLeft"
+ },
+ {
+ "hideHero": 1,
+ "collide": "HalfBottom"
+ },
+ {
+ "hideHero": 1,
+ "collide": "HalfBottom"
+ },
+ {
+ "hideHero": 1,
+ "collide": "HalfBottom"
+ },
+ {
+ "hideHero": 1,
+ "collide": "HalfBottom"
+ },
+ null,
+ {
+ "hideHero": 0,
+ "collide": "Bottom"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 1
+ },
+ null,
+ null,
+ null,
+ {
+ "hideHero": 1
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 0,
+ "collide": "HalfRight"
+ },
+ null,
+ null,
+ null,
+ {
+ "hideHero": 0,
+ "collide": "HalfLeft"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 0,
+ "collide": "HalfRight"
+ },
+ null,
+ null,
+ null,
+ {
+ "hideHero": 0,
+ "collide": "HalfLeft"
+ },
+ {
+ "hideHero": 0,
+ "collide": "Full"
+ },
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 0,
+ "collide": "Full"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 0,
+ "collide": "HalfRight"
+ },
+ null,
+ null,
+ null,
+ {
+ "hideHero": 0,
+ "collide": "HalfLeft"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 0,
+ "collide": "HalfRight"
+ },
+ null,
+ null,
+ null,
+ {
+ "hideHero": 0,
+ "collide": "HalfLeft"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 2
+ },
+ null,
+ {
+ "hideHero": 2
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 2,
+ "collide": "Full"
+ },
+ {
+ "hideHero": 2,
+ "collide": "Full"
+ },
+ {
+ "hideHero": 2,
+ "collide": "Full"
+ },
+ {
+ "hideHero": 1,
+ "collide": "SmallBL"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ null,
+ {
+ "hideHero": 0,
+ "collide": "Full"
+ },
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 0,
+ "collide": "Full"
+ },
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 1,
+ "collide": "Vertical"
+ },
+ null,
+ {
+ "hideHero": 1,
+ "collide": "Vertical"
+ },
+ {
+ "hideHero": 1,
+ "collide": "SmallBR"
+ },
+ null,
+ null,
+ {
+ "hideHero": 1
+ },
+ {
+ "hideHero": 1
+ },
+ {
+ "hideHero": 1
+ },
+ {
+ "hideHero": 1
+ },
+ {
+ "hideHero": 1
+ },
+ {
+ "hideHero": 1
+ },
+ null,
+ null,
+ {
+ "hideHero": 3
+ },
+ {
+ "hideHero": 3
+ },
+ {
+ "hideHero": 2,
+ "collide": "Vertical"
+ },
+ null,
+ {
+ "hideHero": 2,
+ "collide": "Vertical"
+ },
+ null,
+ null,
+ null,
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 2,
+ "collide": "Full"
+ },
+ {
+ "hideHero": 2,
+ "collide": "HalfBottom"
+ },
+ {
+ "hideHero": 2,
+ "collide": "Full"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 0,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ null,
+ {
+ "hideHero": 1
+ },
+ null,
+ {
+ "hideHero": 1
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "HalfBottom"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "SmallBL"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 1,
+ "collide": "Vertical"
+ },
+ null,
+ {
+ "hideHero": 1,
+ "collide": "Vertical"
+ },
+ {
+ "hideHero": 1,
+ "collide": "SmallBR"
+ },
+ {
+ "hideHero": 1
+ },
+ null,
+ {
+ "hideHero": 0,
+ "collide": "CornerTL"
+ },
+ {
+ "hideHero": 0,
+ "collide": "Full"
+ },
+ {
+ "hideHero": 0,
+ "collide": "CornerTR"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 1,
+ "collide": "Vertical"
+ },
+ null,
+ {
+ "hideHero": 1,
+ "collide": "Vertical"
+ },
+ null,
+ null,
+ null,
+ {
+ "hideHero": 0,
+ "collide": "Left"
+ },
+ null,
+ {
+ "hideHero": 0,
+ "collide": "Right"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ {
+ "hideHero": 1,
+ "collide": "HalfBottom"
+ },
+ {
+ "hideHero": 1,
+ "collide": "Small"
+ },
+ null,
+ null,
+ null,
+ {
+ "hideHero": 0,
+ "collide": "CornerBL"
+ },
+ {
+ "hideHero": 0,
+ "collide": "Bottom"
+ },
+ {
+ "hideHero": 0,
+ "collide": "CornerBR"
+ }
+ ]
+ }
+ }
+ },
+ "hasGroup": true
+ }
+ },
+ {
+ "name": "levelData@layers",
+ "props": {
+ "hide": true
+ },
+ "separators": [],
+ "lines": [],
+ "columns": [
+ {
+ "typeStr": "1",
+ "name": "name",
+ "display": null
+ },
+ {
+ "typeStr": "15",
+ "name": "data",
+ "display": null
+ },
+ {
+ "typeStr": "5:Add,Multiply,Erase",
+ "name": "blending",
+ "opt": true
+ }
+ ]
+ },
+ {
+ "name": "levelData@triggers",
+ "props": {
+ "hide": true
+ },
+ "separators": [],
+ "lines": [],
+ "columns": [
+ {
+ "typeStr": "3",
+ "name": "x",
+ "display": null
+ },
+ {
+ "typeStr": "3",
+ "name": "y",
+ "display": null
+ },
+ {
+ "typeStr": "3",
+ "name": "width",
+ "display": null
+ },
+ {
+ "typeStr": "3",
+ "name": "height",
+ "display": null
+ },
+ {
+ "typeStr": "9:Action",
+ "name": "action",
+ "opt": true
+ }
+ ]
+ },
+ {
+ "name": "levelData@npcs",
+ "props": {
+ "hide": true
+ },
+ "separators": [],
+ "lines": [],
+ "columns": [
+ {
+ "typeStr": "6:npc",
+ "name": "kind"
+ },
+ {
+ "typeStr": "3",
+ "name": "x",
+ "display": null
+ },
+ {
+ "typeStr": "3",
+ "name": "y",
+ "display": null
+ },
+ {
+ "typeStr": "1",
+ "name": "id",
+ "opt": true
+ },
+ {
+ "typeStr": "6:item",
+ "name": "item",
+ "opt": true
+ }
+ ]
+ },
+ {
+ "name": "levelData@tileProps",
+ "props": {
+ "hide": true
+ },
+ "separators": [],
+ "lines": [],
+ "columns": [
+ {
+ "typeStr": "6:collide",
+ "name": "collide",
+ "opt": true
+ },
+ {
+ "typeStr": "5:None,Yes,Vertical,Always",
+ "name": "hideHero"
+ }
+ ]
+ }
+ ],
+ "customTypes": [
+ {
+ "name": "Action",
+ "cases": [
+ {
+ "name": "Anchor",
+ "args": [
+ {
+ "name": "id",
+ "typeStr": "1"
+ }
+ ]
+ },
+ {
+ "name": "Goto",
+ "args": [
+ {
+ "name": "l",
+ "typeStr": "1"
+ },
+ {
+ "name": "anchor",
+ "typeStr": "1",
+ "opt": true
+ }
+ ]
+ },
+ {
+ "name": "ScrollStop",
+ "args": []
+ }
+ ]
+ }
+ ],
+ "compress": false
+}
\ No newline at end of file
diff --git a/www/sample/finrod.png b/www/sample/finrod.png
new file mode 100644
index 00000000..2824a5d1
Binary files /dev/null and b/www/sample/finrod.png differ
diff --git a/www/sample/forest.png b/www/sample/forest.png
new file mode 100644
index 00000000..d97b7588
Binary files /dev/null and b/www/sample/forest.png differ
diff --git a/www/sample/items.png b/www/sample/items.png
new file mode 100644
index 00000000..598c7326
Binary files /dev/null and b/www/sample/items.png differ