ld31-space-diggers/src/entities/tile.coffee
2014-12-06 20:54:50 +01:00

72 lines
1.7 KiB
CoffeeScript

class Tile extends BaseEntity
constructor: (options) ->
super options
resTypes = (k for own k of app.game.resources)
@layers = []
for restype, i in resTypes
@layers.push new Tilelayer(
type: restype,
depth: i,
amount: Math.round(Math.random(app.game.maxTileAmount-10)+10)
)
@currentLayer = 0
@isActive = false
click: (button)->
if button == "left"
if @layers[@currentLayer].collect()
name = app.layerIndexToName(@currentLayer)
app.game.resources[name] += 1
else
@currentLayer += 1
tick: ->
@currentMiner.tick @
moveIn: ->
@isActive = true
moveOut: ->
@isActive = false
select: ->
@isSelected = true
deselect: ->
@isSelected = false
attachMiner: (miner) ->
if !@currentMiner
@currentMiner = miner
detachMiner: ->
@currentMiner = null
gameTick: ->
if @currentMiner
@layers[@currentLayer].collect()
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 @isSelected
app.layer.drawImage app.images.selected, x*8, y*8
if @isActive
app.layer.drawImage app.images.active, x*8, y*8
# Draw the status indicator.
numPercent = Math.floor((tileLayer.amount*6)/app.game.maxTileAmount)
for i in [0..numPercent]
color = ["#f00", "#a00", "#f60", "#aa0", "#0a0", "#0a0"][numPercent]
color = ["#f00", "#f00", "#f80", "#ff0", "#0f0", "#0f0"][numPercent] if i == numPercent
app.layer.setPixel(color, x*8+1+i, y*8+6)