|
|
|
@ -25,10 +25,13 @@
|
|
|
|
|
:e 819 :w 819}
|
|
|
|
|
:last-cycle 0
|
|
|
|
|
:curr-id 778
|
|
|
|
|
:tileset :pokelike}}
|
|
|
|
|
:tileset :pokelike
|
|
|
|
|
:tileset-def nil
|
|
|
|
|
:image (by-id "demoscene-tileset")}}
|
|
|
|
|
:viewport {:keep-in {:x 0 :y 0
|
|
|
|
|
:w 0 :h 0}
|
|
|
|
|
:tileset :pokelike
|
|
|
|
|
:image (by-id "demoscene-tileset")
|
|
|
|
|
:tileset-def nil
|
|
|
|
|
:x 6 :y 9
|
|
|
|
|
:w (get-in gamestate [:dimensions :w])
|
|
|
|
@ -54,7 +57,7 @@
|
|
|
|
|
|
|
|
|
|
(defn init-viewport [scenestate]
|
|
|
|
|
(let [{loaded-def :def
|
|
|
|
|
zoom :zoom} (get-in scenestate [:map-def])
|
|
|
|
|
zoom :zoom} (:map-def scenestate)
|
|
|
|
|
viewport (:viewport scenestate)
|
|
|
|
|
{mw :width mh :height
|
|
|
|
|
tw :tilewidth th :tileheight} loaded-def]
|
|
|
|
@ -67,6 +70,20 @@
|
|
|
|
|
(tileset/map-def->tileset loaded-def
|
|
|
|
|
(:tileset viewport))))))
|
|
|
|
|
|
|
|
|
|
(defn init-player [scenestate]
|
|
|
|
|
(let [{tw :tilewidth th :tileheight :as map-def}
|
|
|
|
|
(get-in scenestate [:map-def :def])
|
|
|
|
|
zoom (-> scenestate :map-def :zoom)]
|
|
|
|
|
(-> scenestate
|
|
|
|
|
(assoc-in [:player :w] (- tw 2))
|
|
|
|
|
(assoc-in [:player :h] (- th 2))
|
|
|
|
|
(update-in [:player :x] - (* zoom (/ tw 2)))
|
|
|
|
|
(update-in [:player :y] - (* zoom (/ th 2)))
|
|
|
|
|
(assoc-in [:player :animation :tileset-def]
|
|
|
|
|
(tileset/map-def->tileset map-def
|
|
|
|
|
(get-in scenestate
|
|
|
|
|
[:player :animation :tileset]))))))
|
|
|
|
|
|
|
|
|
|
(defn init-map-def [scenestate]
|
|
|
|
|
(if (and (not (get-in scenestate [:map-def :def]))
|
|
|
|
|
(some? @map-def))
|
|
|
|
@ -79,10 +96,7 @@
|
|
|
|
|
(assoc-in [:map-def :def] loaded-def)
|
|
|
|
|
(update-in [:map-def :def]
|
|
|
|
|
(partial tileset/prepare-map-def zoom))
|
|
|
|
|
(assoc-in [:player :w] (- tw 2))
|
|
|
|
|
(assoc-in [:player :h] (- th 2))
|
|
|
|
|
(update-in [:player :w] - (/ tw 2))
|
|
|
|
|
(update-in [:player :h] - (/ th 2))
|
|
|
|
|
init-player
|
|
|
|
|
init-viewport))
|
|
|
|
|
scenestate))
|
|
|
|
|
|
|
|
|
@ -97,16 +111,16 @@
|
|
|
|
|
|
|
|
|
|
(defn draw-scene [gamestate scenestate]
|
|
|
|
|
(let [viewport (:viewport scenestate)
|
|
|
|
|
{:keys [x y w h background]} viewport]
|
|
|
|
|
{:keys [x y w h background]} viewport
|
|
|
|
|
ctx (:ctx gamestate)]
|
|
|
|
|
(when (get-in scenestate [:map-def :def])
|
|
|
|
|
(tileset/draw-viewport (:map-def scenestate)
|
|
|
|
|
(:ctx gamestate)
|
|
|
|
|
viewport))
|
|
|
|
|
#_(.drawImage
|
|
|
|
|
(:ctx gamestate)
|
|
|
|
|
(:image viewport)
|
|
|
|
|
x y w h
|
|
|
|
|
0 0 w h))
|
|
|
|
|
#_ (sprites/draw
|
|
|
|
|
(:ctx gamestate)
|
|
|
|
|
(:player scenestate)))
|
|
|
|
|
ctx
|
|
|
|
|
viewport)
|
|
|
|
|
(let [{:keys [tileset-def curr-id image]}
|
|
|
|
|
(get-in scenestate [:player :animation])]
|
|
|
|
|
(tileset/draw-tile ctx
|
|
|
|
|
tileset-def
|
|
|
|
|
image
|
|
|
|
|
curr-id
|
|
|
|
|
(:player scenestate))))))
|
|
|
|
|