From b73889da9f33b883894db6a989037030fee99f95 Mon Sep 17 00:00:00 2001 From: Indrajith K L Date: Sun, 1 Aug 2021 02:26:00 +0530 Subject: [PATCH] Basic Renderer * Adds Tiled map JSON rendering * TODO Cleanup & Organization --- .gitignore | 1 + assets/level1.json | 73 ++++++++++++++++++++++++++++++++++++++ assets/level1.tmx | 67 ++++++++++++++++++++++++++++++++++ assets/main_tileset.tsx | 4 +++ assets/tilemap_packed.png | Bin 0 -> 4501 bytes layerType.wren | 5 +++ main.wren | 72 +++++++++++++++++++++++++++++++++++++ scratch.md | 22 ++++++++++++ 8 files changed, 244 insertions(+) create mode 100644 .gitignore create mode 100644 assets/level1.json create mode 100644 assets/level1.tmx create mode 100644 assets/main_tileset.tsx create mode 100644 assets/tilemap_packed.png create mode 100644 layerType.wren create mode 100644 main.wren create mode 100644 scratch.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bf0824e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.log \ No newline at end of file diff --git a/assets/level1.json b/assets/level1.json new file mode 100644 index 0000000..ea69794 --- /dev/null +++ b/assets/level1.json @@ -0,0 +1,73 @@ +{ "compressionlevel":-1, + "editorsettings": + { + "export": + { + "format":"json", + "target":"level1.json" + } + }, + "height":16, + "infinite":false, + "layers":[ + { + "data":[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "height":16, + "id":1, + "name":"ground", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":16, + "x":0, + "y":0 + }, + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 98, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 110, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":16, + "id":2, + "name":"buildings", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":16, + "x":0, + "y":0 + }, + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":16, + "id":4, + "name":"Tile Layer 3", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":16, + "x":0, + "y":0 + }], + "nextlayerid":5, + "nextobjectid":1, + "orientation":"orthogonal", + "renderorder":"right-down", + "tiledversion":"1.5.0", + "tileheight":16, + "tilesets":[ + { + "columns":17, + "firstgid":1, + "image":"tilemap_packed.png", + "imageheight":128, + "imagewidth":272, + "margin":0, + "name":"main_tileset", + "spacing":0, + "tilecount":136, + "tileheight":16, + "tilewidth":16 + }], + "tilewidth":16, + "type":"map", + "version":1.5, + "width":16 +} \ No newline at end of file diff --git a/assets/level1.tmx b/assets/level1.tmx new file mode 100644 index 0000000..2fe128f --- /dev/null +++ b/assets/level1.tmx @@ -0,0 +1,67 @@ + + + + + + + + +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,81,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,97,98,99,0,0,0,0,0,0,0, +0,0,0,0,0,0,114,115,116,0,0,0,0,0,0,0, +0,0,0,0,0,0,131,132,133,0,0,0,0,0,0,0, +0,0,0,0,0,0,108,110,109,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,120,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + diff --git a/assets/main_tileset.tsx b/assets/main_tileset.tsx new file mode 100644 index 0000000..0b0b1d6 --- /dev/null +++ b/assets/main_tileset.tsx @@ -0,0 +1,4 @@ + + + + diff --git a/assets/tilemap_packed.png b/assets/tilemap_packed.png new file mode 100644 index 0000000000000000000000000000000000000000..6f47609b20769971c1557e15be01b297442a3931 GIT binary patch literal 4501 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 0) { + drawTile(tileIndex-1, levelX, levelY) + } + } + index = index + 1 + } + } + } + } + + getTile() { + + } + + draw(alpha) { + drawLevel(0,0) + } +} + +var Game = Main.new() \ No newline at end of file diff --git a/scratch.md b/scratch.md new file mode 100644 index 0000000..0eb82bf --- /dev/null +++ b/scratch.md @@ -0,0 +1,22 @@ + +## Wren Scratch +### Matrix +```wren +var matrix = [[1, 2, 3], [4, 5, 6]] +System.print(matrix[0][0]) +for(layer in _layerData) { + System.print(layer) +} +``` + +### Sprite Sheet Transform +```wren +_spriteSheet.transform({ + "srcX": 16*14, + "srcY": 0, + "srcW": 16, + "srcH": 16, + "scaleX": 2, + "scaleY": 2 + }).draw(0,0) +``` \ No newline at end of file