Skip to content

Instantly share code, notes, and snippets.

@tricsi
Created August 24, 2020 14:45
Show Gist options
  • Save tricsi/a68fdd95760b4855221b6b78e735fa4a to your computer and use it in GitHub Desktop.
Save tricsi/a68fdd95760b4855221b6b78e735fa4a to your computer and use it in GitHub Desktop.
js13k tiled format
function getData(id, count, flip) {
var data = "";
switch (flip) {
case 1: data = "|"; break;
case 2: data = "-"; break;
case 3: data = "+"; break;
}
if (id && count === 1) {
return data + id.toString(36).toUpperCase();
}
while (count > 35) {
data = data + id.toString(36) + "z";
count -= 35;
}
if (count > 0) {
data = data + id.toString(36) + count.toString(36);
}
return data;
}
tiled.registerMapFormat("js13k", {
name: "js13k format",
extension: "json",
write: function(map, fileName) {
var data = "";
for (var i = 0; i < map.layerCount; ++i) {
var layer = map.layerAt(i);
if (!layer.isTileLayer) continue;
if (i) data = data + ",";
var lastId = 0;
var lastFlip = 0;
var count = 0;
for (var y = 0; y < layer.height; ++y) {
for (var x = 0; x < layer.width; ++x) {
var cell = layer.cellAt(x, y);
var id = cell.empty ? 0 : cell.tileId + 10;
var flip = 0;
if (cell.flippedHorizontally) flip += 1;
if (cell.flippedVertically) flip += 2;
if (id !== lastId || flip !== lastFlip) {
if (count > 0) {
data = data + getData(lastId, count, lastFlip);
count = 0;
}
lastId = id;
lastFlip = flip;
}
count++;
}
}
if (lastId > 0) {
data = data + getData(lastId, count, lastFlip);
}
}
var file = new TextFile(fileName, TextFile.WriteOnly);
file.write(data);
file.commit();
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment