From edcfd29de8d2d37a7ccf66deb2c546f46b43a2fc Mon Sep 17 00:00:00 2001 From: Josha von Gizycki Date: Wed, 17 Oct 2018 18:15:40 +0200 Subject: [PATCH] shitty tileset code --- project.clj | 14 +- resources/public/index.html | 5 +- resources/public/map/PokemonLike.png | Bin 0 -> 75734 bytes resources/public/map/map.json | 299 +++++++++++++++++++++++++++ resources/public/map/map.png | Bin 0 -> 19430 bytes resources/public/map/map.tmx | 126 +++++++++++ resources/public/map/map2.json | 299 +++++++++++++++++++++++++++ src/cljs/topdown2d/collision.cljs | 9 +- src/cljs/topdown2d/core.cljs | 39 ++-- src/cljs/topdown2d/demoscene.cljs | 92 +++++---- src/cljs/topdown2d/dom.cljs | 4 + src/cljs/topdown2d/tileset.cljs | 82 ++++++++ 12 files changed, 906 insertions(+), 63 deletions(-) create mode 100644 resources/public/map/PokemonLike.png create mode 100644 resources/public/map/map.json create mode 100644 resources/public/map/map.png create mode 100644 resources/public/map/map.tmx create mode 100644 resources/public/map/map2.json create mode 100644 src/cljs/topdown2d/dom.cljs create mode 100644 src/cljs/topdown2d/tileset.cljs diff --git a/project.clj b/project.clj index 2067d97..0b05b45 100644 --- a/project.clj +++ b/project.clj @@ -3,22 +3,22 @@ :url "http://example.com/FIXME" :license {:name "Eclipse Public License" :url "http://www.eclipse.org/legal/epl-v10.html"} - + :dependencies [ [org.clojure/clojure "1.8.0"] [org.clojure/clojurescript "1.9.521"] ] - + :plugins [ [lein-cljsbuild "1.1.7"] [lein-figwheel "0.5.14"] ] - + :cljsbuild { :builds [{ :id "default" :source-paths ["src/cljs"] - :figwheel true + :figwheel {:on-jsload "topdown2d.core/fig-reload"} :compiler { :main topdown2d.core :output-to "resources/public/js/cljsbuild-main.js" @@ -28,13 +28,13 @@ } }] } - + :figwheel { :css-dirs ["resources/css"] } - + ;:hooks [leiningen.cljsbuild] - + :main ^:skip-aot topdown2d.core :target-path "target/%s" :profiles {:uberjar {:aot :all}}) diff --git a/resources/public/index.html b/resources/public/index.html index 497c2eb..5f20a80 100644 --- a/resources/public/index.html +++ b/resources/public/index.html @@ -7,9 +7,10 @@
+
- - diff --git a/resources/public/map/PokemonLike.png b/resources/public/map/PokemonLike.png new file mode 100644 index 0000000000000000000000000000000000000000..5781084a46d748e990afa9f95fa4afab856d9fc7 GIT binary patch literal 75734 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�Fuy{^QrPjZ6hikD&{$DEt_ZzZJ@LH&p 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

M2a!OeE5^Kc00AvU~9cc_Utsru>A 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 literal 0 HcmV?d00001 diff --git a/resources/public/map/map.json b/resources/public/map/map.json new file mode 100644 index 0000000..e1373d7 --- /dev/null +++ b/resources/public/map/map.json @@ -0,0 +1,299 @@ +{ "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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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":4, + "name":"Hintergrund", + "opacity":1, + "type":"tilelayer", + "visible":false, + "width":20, + "x":0, + "y":0 + }, + { + "data":[43, 43, 41, 42, 42, 41, 43, 43, 81, 81, 82, 82, 81, 0, 0, 0, 0, 0, 0, 0, 42, 43, 43, 43, 43, 41, 42, 43, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 81, 81, 81, 43, 43, 42, 41, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 43, 43, 43, 41, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 42, 43, 42, 41, 81, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 0, 0, 0, 82, 43, 42, 41, 42, 82, 615, 615, 615, 0, 0, 0, 0, 0, 47, 48, 49, 0, 0, 0, 82, 41, 43, 41, 43, 81, 0, 0, 0, 0, 328, 334, 335, 336, 0, 0, 0, 0, 0, 0, 82, 43, 43, 41, 43, 81, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 82, 82, 82, 698, 81, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 367, 367, 367, 367, 367, 367, 367, 368, 367, 367, 367, 367, 367, 368, 369, 369, 369, 369, 369, 369, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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":5, + "name":"Dekoration", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":20, + "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, 486, 487, 488, 489, 490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 526, 527, 528, 529, 530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 566, 567, 568, 569, 570, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 776, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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":7, + "name":"Vordergrund", + "opacity":1, + "type":"tilelayer", + "visible":false, + "width":20, + "x":0, + "y":0 + }], + "nextlayerid":9, + "nextobjectid":33, + "orientation":"orthogonal", + "renderorder":"right-down", + "tiledversion":"2018.09.12", + "tileheight":16, + "tilesets":[ + { + "columns":40, + "firstgid":1, + "image":"PokemonLike.png", + "imageheight":640, + "imagewidth":640, + "margin":0, + "name":"pokelike", + "spacing":0, + "terrains":[ + { + "name":"Base", + "tile":0 + }, + { + "name":"Gras", + "tile":1 + }, + { + "name":"Feld", + "tile":40 + }, + { + "name":"Sand", + "tile":200 + }, + { + "name":"Dreck", + "tile":44 + }, + { + "name":"Buschwerk", + "tile":80 + }], + "tilecount":1600, + "tileheight":16, + "tiles":[ + { + "id":1, + "terrain":[1, 1, 1, 1] + }, + { + "id":2, + "terrain":[1, 1, 1, 1] + }, + { + "id":40, + "terrain":[2, 2, 2, 2] + }, + { + "id":41, + "terrain":[2, 2, 2, 2] + }, + { + "id":42, + "terrain":[2, 2, 2, 2] + }, + { + "id":44, + "terrain":[4, 4, 4, 4] + }, + { + "id":45, + "terrain":[4, 4, 4, 4] + }, + { + "id":80, + "terrain":[5, 5, 5, 5] + }, + { + "id":81, + "terrain":[5, 5, 5, 5] + }, + { + "id":200, + "terrain":[3, 3, 3, 3] + }, + { + "id":201, + "terrain":[3, 3, 3, 3] + }, + { + "id":333, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":16, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":16, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":334, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":16, + "id":3, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":16, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":335, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":16, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":16, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":488, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":0, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":16, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":527, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":16, + "id":2, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":0, + "x":16, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "animation":[ + { + "duration":250, + "tileid":775 + }, + { + "duration":250, + "tileid":776 + }, + { + "duration":250, + "tileid":777 + }, + { + "duration":250, + "tileid":778 + }], + "id":778 + }, + { + "animation":[ + { + "duration":250, + "tileid":816 + }, + { + "duration":250, + "tileid":817 + }, + { + "duration":250, + "tileid":818 + }, + { + "duration":250, + "tileid":819 + }], + "id":819 + }], + "tilewidth":16 + }], + "tilewidth":16, + "type":"map", + "version":1.2, + "width":20 +} diff --git a/resources/public/map/map.png b/resources/public/map/map.png new file mode 100644 index 0000000000000000000000000000000000000000..66858a15058bb07135b07785dff062bd1c346f10 GIT binary patch literal 19430 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 q@n(~D!fqM-Nv2!pZ$OOr07)u literal 0 HcmV?d00001 diff --git a/resources/public/map/map.tmx b/resources/public/map/map.tmx new file mode 100644 index 0000000..c8e603f --- /dev/null +++ b/resources/public/map/map.tmx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1,1,1,1,1,1,1,1,1,1,1,1,1,3,2,3,2,3,3,3, +1,1,1,1,1,1,1,1,1,3,2,3,3,2,2,3,2,2,2,3, +1,1,1,1,1,1,1,1,1,2,2,3,2,3,2,2,2,3,3,2, +2,2,2,1,1,1,1,1,1,2,3,3,1,1,1,1,1,2,3,3, +3,2,3,1,1,1,1,1,1,2,2,3,1,1,1,1,1,1,1,1, +2,3,2,1,1,1,1,1,1,3,2,3,1,1,1,1,1,1,1,1, +2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +2,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +2,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +3,3,3,3,3,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +2,2,2,3,3,3,3,3,2,3,2,2,3,3,2,3,2,2,3,2, +2,2,2,2,2,3,2,3,3,3,2,3,3,2,3,2,2,2,3,3, +3,3,3,2,2,3,2,2,2,2,3,3,3,2,2,3,2,3,2,2, +3,3,2,3,3,2,3,3,3,2,3,3,3,2,3,3,3,2,2,2, +2,3,2,3,2,3,2,3,2,2,3,3,2,2,3,3,2,2,2,3 + + + + +43,43,41,42,42,41,43,43,81,81,82,82,81,0,0,0,0,0,0,0, +42,43,43,43,43,41,42,43,82,0,0,0,0,0,0,0,0,0,0,0, +82,81,81,81,43,43,42,41,82,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,81,43,43,43,41,81,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,81,42,43,42,41,81,0,0,0,0,0,0,0,0,7,8,9, +0,0,0,82,43,42,41,42,82,615,615,615,0,0,0,0,0,47,48,49, +0,0,0,82,41,43,41,43,81,0,0,0,0,328,334,335,336,0,0,0, +0,0,0,82,43,43,41,43,81,0,0,0,0,328,0,0,0,0,0,0, +0,0,0,82,82,82,82,698,81,0,0,0,0,328,0,0,0,0,0,0, +0,0,0,0,0,0,0,328,0,0,0,0,0,328,0,0,0,0,0,0, +367,367,367,367,367,367,367,368,367,367,367,367,367,368,369,369,369,369,369,369, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,486,487,488,489,490,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,526,527,528,529,530,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,566,567,568,569,570,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,776,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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/resources/public/map/map2.json b/resources/public/map/map2.json new file mode 100644 index 0000000..e1373d7 --- /dev/null +++ b/resources/public/map/map2.json @@ -0,0 +1,299 @@ +{ "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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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":4, + "name":"Hintergrund", + "opacity":1, + "type":"tilelayer", + "visible":false, + "width":20, + "x":0, + "y":0 + }, + { + "data":[43, 43, 41, 42, 42, 41, 43, 43, 81, 81, 82, 82, 81, 0, 0, 0, 0, 0, 0, 0, 42, 43, 43, 43, 43, 41, 42, 43, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 81, 81, 81, 43, 43, 42, 41, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 43, 43, 43, 41, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 42, 43, 42, 41, 81, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 0, 0, 0, 82, 43, 42, 41, 42, 82, 615, 615, 615, 0, 0, 0, 0, 0, 47, 48, 49, 0, 0, 0, 82, 41, 43, 41, 43, 81, 0, 0, 0, 0, 328, 334, 335, 336, 0, 0, 0, 0, 0, 0, 82, 43, 43, 41, 43, 81, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 82, 82, 82, 698, 81, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 367, 367, 367, 367, 367, 367, 367, 368, 367, 367, 367, 367, 367, 368, 369, 369, 369, 369, 369, 369, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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":5, + "name":"Dekoration", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":20, + "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, 486, 487, 488, 489, 490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 526, 527, 528, 529, 530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 566, 567, 568, 569, 570, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 776, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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":7, + "name":"Vordergrund", + "opacity":1, + "type":"tilelayer", + "visible":false, + "width":20, + "x":0, + "y":0 + }], + "nextlayerid":9, + "nextobjectid":33, + "orientation":"orthogonal", + "renderorder":"right-down", + "tiledversion":"2018.09.12", + "tileheight":16, + "tilesets":[ + { + "columns":40, + "firstgid":1, + "image":"PokemonLike.png", + "imageheight":640, + "imagewidth":640, + "margin":0, + "name":"pokelike", + "spacing":0, + "terrains":[ + { + "name":"Base", + "tile":0 + }, + { + "name":"Gras", + "tile":1 + }, + { + "name":"Feld", + "tile":40 + }, + { + "name":"Sand", + "tile":200 + }, + { + "name":"Dreck", + "tile":44 + }, + { + "name":"Buschwerk", + "tile":80 + }], + "tilecount":1600, + "tileheight":16, + "tiles":[ + { + "id":1, + "terrain":[1, 1, 1, 1] + }, + { + "id":2, + "terrain":[1, 1, 1, 1] + }, + { + "id":40, + "terrain":[2, 2, 2, 2] + }, + { + "id":41, + "terrain":[2, 2, 2, 2] + }, + { + "id":42, + "terrain":[2, 2, 2, 2] + }, + { + "id":44, + "terrain":[4, 4, 4, 4] + }, + { + "id":45, + "terrain":[4, 4, 4, 4] + }, + { + "id":80, + "terrain":[5, 5, 5, 5] + }, + { + "id":81, + "terrain":[5, 5, 5, 5] + }, + { + "id":200, + "terrain":[3, 3, 3, 3] + }, + { + "id":201, + "terrain":[3, 3, 3, 3] + }, + { + "id":333, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":16, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":16, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":334, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":16, + "id":3, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":16, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":335, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":16, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":16, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":488, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":0, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":16, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":527, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":16, + "id":2, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":0, + "x":16, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "animation":[ + { + "duration":250, + "tileid":775 + }, + { + "duration":250, + "tileid":776 + }, + { + "duration":250, + "tileid":777 + }, + { + "duration":250, + "tileid":778 + }], + "id":778 + }, + { + "animation":[ + { + "duration":250, + "tileid":816 + }, + { + "duration":250, + "tileid":817 + }, + { + "duration":250, + "tileid":818 + }, + { + "duration":250, + "tileid":819 + }], + "id":819 + }], + "tilewidth":16 + }], + "tilewidth":16, + "type":"map", + "version":1.2, + "width":20 +} diff --git a/src/cljs/topdown2d/collision.cljs b/src/cljs/topdown2d/collision.cljs index 3864d2e..606a853 100644 --- a/src/cljs/topdown2d/collision.cljs +++ b/src/cljs/topdown2d/collision.cljs @@ -3,11 +3,10 @@ (defn in? [obj container] (let [{:keys [x y w h]} obj {cx :x cy :y cw :w ch :h} container] - (and - (> x cx) - (> y cy) - (< (+ x w) (+ cx cw)) - (< (+ y h) (+ cy ch))))) + (and (> x cx) + (> y cy) + (< (+ x w) (+ cx cw)) + (< (+ y h) (+ cy ch))))) (defn collide? [obj obj2] (let [{:keys [x y w h]} obj diff --git a/src/cljs/topdown2d/core.cljs b/src/cljs/topdown2d/core.cljs index de8feec..c3e55f7 100644 --- a/src/cljs/topdown2d/core.cljs +++ b/src/cljs/topdown2d/core.cljs @@ -1,14 +1,14 @@ (ns topdown2d.core - (:require - [topdown2d.demoscene :as demoscene] - [topdown2d.input :as input])) + (:require [topdown2d.demoscene :as demoscene] + [topdown2d.input :as input] + [topdown2d.dom :refer [by-id]])) (enable-console-print!) (def gamestate - {:canvas (.getElementById js/document "gamecanvas") - :ctx (.getContext (.getElementById js/document "gamecanvas") "2d") - :target-fps 40 + {:canvas (by-id "gamecanvas") + :ctx (.getContext (by-id "gamecanvas") "2d") + :target-fps 60 :continue? true :timing {;; msecs of previous frame :prev 0 @@ -19,8 +19,8 @@ ;; difference between prev and now in seconds :elapsed 0} ;; width and height of the canvas - :dimensions {:w 600 - :h 400} + :dimensions {:w 1200 + :h 500} :input {:dir :?} ;; currently active scene :scene :demo @@ -28,6 +28,8 @@ :draw demoscene/draw-scene :init demoscene/init}}}) +(def reloaded (atom false)) + (defn set-timing "sets the current time at the given key" [state timingkey] @@ -137,12 +139,13 @@ [gamestate] (let [newstate (update-step gamestate)] (draw-step newstate) - (.setTimeout js/window - (fn [] - (.requestAnimationFrame - js/window - #(mainloop newstate))) - (timeout newstate)))) + (when-not @reloaded + (.setTimeout js/window + (fn [] + (.requestAnimationFrame + js/window + #(mainloop newstate))) + (timeout newstate))))) (defn init-scenes "initiates the scene data maps using their respective init functions" @@ -154,4 +157,12 @@ (assoc carr key ((:init scene) gamestate scene))) {} %))) +(defn fig-reload [] + (reset! reloaded true) + (.setTimeout js/window + (fn [] + (reset! reloaded false) + (mainloop (init-scenes))) + 1000)) + (mainloop (init-scenes)) diff --git a/src/cljs/topdown2d/demoscene.cljs b/src/cljs/topdown2d/demoscene.cljs index fc75dbe..c216bc8 100644 --- a/src/cljs/topdown2d/demoscene.cljs +++ b/src/cljs/topdown2d/demoscene.cljs @@ -1,37 +1,37 @@ (ns topdown2d.demoscene - (:require - [topdown2d.collision :as collision] - [topdown2d.input :as input] - [topdown2d.sprites :as sprites])) + (:require [topdown2d.collision :as collision] + [topdown2d.input :as input] + [topdown2d.sprites :as sprites] + [topdown2d.dom :refer [by-id]] + [topdown2d.tileset :as tileset] + [clojure.walk :as walk])) + +(def map-def (atom nil)) (defn init [gamestate scenestate] + (-> (.fetch js/window "map/map.json") + (.then #(.json %)) + (.then #(reset! map-def (js->clj %)))) (merge scenestate - {:player {:x (- (/ (get-in gamestate [:dimensions :w]) 2) 32) + {:tileset {:images {:pokelike (by-id "demoscene-tileset")} + :def nil} + :player {:x (- (/ (get-in gamestate [:dimensions :w]) 2) 32) :y (- (/ (get-in gamestate [:dimensions :h]) 2) 32) - :w 64 :h 64 :d :s - :sprite - {:image (.getElementById js/document "demo-player") - :size 64 - :rows {:w 1 :e 3 - :n 0 :s 2 - :? 2} - :cycle {:pos 0 - :from 1 - :count 8 - :last-cycle 0 - ;; cycles per second - :cps 10}}} - :viewport {:image (.getElementById js/document "demo-background") - :keep-in {:x 0 :y 0 + :animation {:ids {:s 778 :n 778 + :e 819 :w 819} + :last-cycle 0 + :curr-id 778 + :tileset :pokelike}} + :viewport {:keep-in {:x 0 :y 0 :w 2239 :h 2235} + :tileset :pokelike :x 1 :y 1 - :d :? - ;; pixels per second - :pps 150 :w (get-in gamestate [:dimensions :w]) - :h (get-in gamestate [:dimensions :h])}})) + :h (get-in gamestate [:dimensions :h]) + ;; pixels per second + :pps 150}})) (defn update-player [gamestate player dir] (let [old-dir (:d player) @@ -48,22 +48,44 @@ (:keep-in viewport) (collision/pps->px gamestate viewport))) +(defn map-tileset-size [tileset] + (-> tileset + (assoc :tiles-x (:columns tileset)) + (assoc :tiles-y (/ (:tilecount tileset) + (:columns tileset))))) + +(defn init-map-def [scenestate] + (if (and (not (get-in scenestate [:tileset :def])) + (some? @map-def)) + (assoc-in scenestate + [:tileset :def] + (update (walk/keywordize-keys @map-def) + :tilesets + (fn [tilesets] + (map map-tileset-size tilesets)))) + scenestate)) + (defn update-scene [gamestate scenestate] (let [player (:player scenestate) viewport (:viewport scenestate) dir (get-in gamestate [:input :dir])] - (assoc scenestate - :player (update-player gamestate player dir) - :viewport (update-viewport gamestate viewport dir)))) + (-> scenestate + init-map-def + (assoc :player (update-player gamestate player dir) + :viewport (update-viewport gamestate viewport dir))))) (defn draw-scene [gamestate scenestate] (let [viewport (:viewport scenestate) {:keys [x y w h background]} viewport] - (.drawImage - (:ctx gamestate) - (:image viewport) - x y w h - 0 0 w h)) - (sprites/draw - (:ctx gamestate) - (:player scenestate))) + (when (get-in scenestate [:tileset :def]) + (tileset/draw-viewport (:tileset scenestate) + (:ctx gamestate) + viewport)) + #_(.drawImage + (:ctx gamestate) + (:image viewport) + x y w h + 0 0 w h)) + #_ (sprites/draw + (:ctx gamestate) + (:player scenestate))) diff --git a/src/cljs/topdown2d/dom.cljs b/src/cljs/topdown2d/dom.cljs new file mode 100644 index 0000000..36dc43c --- /dev/null +++ b/src/cljs/topdown2d/dom.cljs @@ -0,0 +1,4 @@ +(ns topdown2d.dom) + +(defn by-id [id] + (.getElementById js/document id)) diff --git a/src/cljs/topdown2d/tileset.cljs b/src/cljs/topdown2d/tileset.cljs new file mode 100644 index 0000000..cdfdf0a --- /dev/null +++ b/src/cljs/topdown2d/tileset.cljs @@ -0,0 +1,82 @@ +(ns topdown2d.tileset + (:require [topdown2d.collision :as coll])) + +(def ^:dynamic tileset) + +(defn next-animation-cycle [animation curr-cycle] + (let [curr-ix (.indexOf animation curr-cycle) + next-ix (inc curr-ix) + next-ix (if (> next-ix (count animation)) + 0 next-ix)] + (nth animation next-ix))) + +(defn map-def->tileset [map-def tileset-id] + (->> (:tilesets map-def) + (filter #(= (name tileset-id) (:name %))) + first)) + +(defn tick-animation [tileset-def anim-def now] + (let [map-def (:def tileset-def) + {:keys [ids last-cycle curr-id tileset]} anim-def + animation (->> (map-def->tileset map-def tileset) + :tiles + (filter #(= curr-id (:id %))) + first + :animation) + curr-cycle (filter #(= curr-id (:tileid %)) animation) + trigger-cycle? (> (- now last-cycle) + (:duration curr-cycle)) + next-cycle (and trigger-cycle? + (next-animation-cycle animation curr-cycle))] + (if trigger-cycle? + (assoc anim-def + :last-cycle now + :curr-id (:tileid next-cycle)) + anim-def))) + +(defn ix->coords [ix width height] + (let [x (rem ix width)] + [(dec x) + (/ (- ix x) width)])) + +(defn layer->dest [layer tileset data] + (map-indexed + (fn [ix tile] + (let [{:keys [width height]} layer + [dxc dyc] (ix->coords ix width height) + {:keys [tilewidth tileheight]} tileset] + {:tile tile + :x (* dxc tilewidth) + :y (* dyc tileheight) + :w tilewidth + :h tileheight})) + data)) + +(defn draw-tile [ctx tileset image tileid dest] + (let [{:keys [tileheight tilewidth + tiles-x tiles-y]} tileset + [x y] (ix->coords tileid tiles-x tiles-y) + sx (* x tilewidth) + sy (* y tileheight)] + (.drawImage ctx image + sx sy tilewidth tileheight + (:x dest) (:y dest) + tilewidth tileheight))) + +(defn draw-viewport [map-def ctx viewport] + (let [{:keys [images def]} map-def + {:keys [tileheight tilewidth + height width layers]} def + tileset-id (:tileset viewport) + image (tileset-id images) + tileset (map-def->tileset def (:tileset viewport))] + (doseq [layer layers + :let [destinations (->> (:data layer) + (layer->dest layer tileset) + (filter #(not= 0 (:tile %))))]] + (doseq [dest destinations + :let [dx (- (:x dest) (:x viewport)) + dy (- (:y dest) (:y viewport))]] + (draw-tile ctx tileset image + (:tile dest) + {:x dx :y dy})))))