From 815fa7d2d1ee3c4f78ecc865cad28156d22b488a Mon Sep 17 00:00:00 2001 From: Aaron Mueller Date: Sat, 6 Dec 2014 22:07:28 +0100 Subject: [PATCH] Refactor the miners to entity --- src/entities/miner.coffee | 2 ++ src/game.coffee | 6 +----- src/tiles/tile.coffee | 29 ++++++++--------------------- src/tools.coffee | 5 ++++- 4 files changed, 15 insertions(+), 27 deletions(-) diff --git a/src/entities/miner.coffee b/src/entities/miner.coffee index 8bd3b2d..996655f 100644 --- a/src/entities/miner.coffee +++ b/src/entities/miner.coffee @@ -1,3 +1,5 @@ class Miner tick: (tile) -> tile.click "left" + + sprite: [16, 0, 8, 8] diff --git a/src/game.coffee b/src/game.coffee index d273165..023d34c 100644 --- a/src/game.coffee +++ b/src/game.coffee @@ -49,11 +49,7 @@ app.game = createMiner: -> if @currentSelectedTile and @checkRessources 'lubinit', 30, true - newMiner = new Miner - - @miners.push = newMiner - @currentSelectedTile.attachMiner newMiner - + @currentSelectedTile.entity = new Miner @currentSelectedTile.deselect() if @currentSelectedTile @currentSelectedTile = null diff --git a/src/tiles/tile.coffee b/src/tiles/tile.coffee index 98a0532..c15ffc7 100644 --- a/src/tiles/tile.coffee +++ b/src/tiles/tile.coffee @@ -1,9 +1,7 @@ class Tile constructor: -> - resTypes = (k for own k of app.game.resources) - @layers = [] - for restype, i in resTypes + for restype, i in allResourceTypes() @layers.push new Tilelayer( type: restype, depth: i, @@ -11,25 +9,21 @@ class Tile ) @currentLayer = 0 + @entity = null @isActive = false - died: false - click: (button)-> - if button == "left" and !@died + if button == "left" if @layers[@currentLayer].collect() name = app.layerIndexToName(@currentLayer) app.game.resources[name] += 1 else @currentLayer += 1 - - if @currentLayer == Object.keys(app.game.resources).length-1 - @died = true - - @currentMiner = null if @currentMiner + # If we reach the bottom, the entity on top dies. + @entity = null if @currentLayer == allResourceTypes().length-1 tick: -> - @currentMiner.tick @ if @currentMiner + @entity.tick @ if @entity moveIn: -> @isActive = true @@ -43,19 +37,12 @@ class Tile deselect: -> @isSelected = false - attachMiner: (miner) -> - if !@currentMiner - @currentMiner = miner - - detachMiner: -> - @currentMiner = null - render: (x, y)-> tileLayer = @layers[@currentLayer] app.layer.drawRegion app.images.layers, tileLayer.sprite, x*8, y*8 - if @currentMiner - app.layer.drawRegion app.images.entities, [16, 0, 8, 8], x*8, y*8 + if @entity + app.layer.drawRegion app.images.entities, @entity.sprite, x*8, y*8 # Draw the status indicator. numPercent = Math.floor((tileLayer.amount*6)/app.game.maxTileAmount) diff --git a/src/tools.coffee b/src/tools.coffee index 714e7e6..a2e8dab 100644 --- a/src/tools.coffee +++ b/src/tools.coffee @@ -1,2 +1,5 @@ getRandomInt = (min, max) -> - Math.floor(Math.random() * (max - min + 1)) + min; \ No newline at end of file + Math.floor(Math.random() * (max - min + 1)) + min; + +allResourceTypes = -> + (k for own k of app.game.resources)