summaryrefslogtreecommitdiffstats
path: root/src/view/MapView.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'src/view/MapView.coffee')
-rw-r--r--src/view/MapView.coffee108
1 files changed, 0 insertions, 108 deletions
diff --git a/src/view/MapView.coffee b/src/view/MapView.coffee
deleted file mode 100644
index e051d48..0000000
--- a/src/view/MapView.coffee
+++ /dev/null
@@ -1,108 +0,0 @@
-'use strict'
-
-util = require '../util'
-
-
-tileSize = 32
-
-body = document.getElementsByTagName('body')[0]
-
-
-loadImage = (url) ->
- new Promise (resolve, reject) ->
- img = new Image()
- img.addEventListener 'load', -> resolve img
- img.addEventListener 'error', -> reject Error('Failed to load ' + url)
- img.src = url
-
-loadImages = (imgs) ->
- util.mapPromises(_.mapValues imgs, loadImage)
-
-loadTiles = (tiles) ->
- loadImages(_.mapValues tiles, (t) -> "resources/sprite/tile/#{t.file}.png")
-
-loadEntities = (entities) ->
- p = {}
- for e in entities
- do (e) ->
- p[e.entity.name] = loadImage "resources/sprite/entity/#{e.entity.name}.png"
-
- util.mapPromises p
-
-
-class MapView
- constructor: (@map, @entities) ->
- @redrawPending = false
-
- @canvas = document.createElement 'canvas'
- @canvas.style.position = 'absolute'
- body.appendChild @canvas
-
- @ctx = @canvas.getContext '2d'
-
- window.addEventListener 'resize', @setSize
- @setSize()
-
- tilesReady = loadTiles(@map.tiles).then (tiles) =>
- @tiles = tiles
-
- entitiesReady = loadEntities(_.values @entities).then (entities) =>
- @entitySprites = entities
-
- tilesReady.then(entitiesReady).then =>
- @redraw()
- return
-
- drawTile: (x, y, tile) =>
- return unless tile
-
- @ctx.drawImage tile, x, y
-
- drawEntity: (e) =>
- sprite = @entitySprites[e.entity.name]
- return unless sprite
-
- @ctx.drawImage(
- sprite,
- e.direction*tileSize, 0,
- tileSize, tileSize,
- e.position.x*tileSize, e.position.y*tileSize,
- tileSize, tileSize)
-
- draw: =>
- @redrawPending = false
-
- @ctx.clearRect 0, 0, @canvas.width, @canvas.height
-
- return unless @tiles and @entitySprites
-
- for layer in @map.layers
- y = 0
-
- for row in layer
- x = 0
-
- for tile in row
- @drawTile x, y, @tiles[tile]
- x += tileSize
-
- y += tileSize
-
- for e in _.values @entities
- @drawEntity e
-
- redraw: =>
- unless @redrawPending
- @redrawPending = true
- window.requestAnimationFrame @draw
-
- setSize: =>
- e = document.documentElement
- @canvas.width = window.innerWidth || e.clientWidth || body.clientWidth
- @canvas.height = window.innerHeight || e.clientHeight || body.clientHeight
-
- @redraw()
-
-
-
-module.exports = MapView