diff --git a/gulpfile.js b/gulpfile.js index 092f154..5b190b6 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -21,7 +21,7 @@ gulp.task('server', function() { }); gulp.task('compile', function() { - return gulp.src(['src/entities/*.coffee', 'src/items/*.coffee', , 'src/tiles/*.coffee', 'src/tools.coffee', 'src/app.coffee', 'src/game.coffee', 'src/hud.coffee']) + return gulp.src(['src/entities/*.coffee', 'src/items/*.coffee', , 'src/tiles/*.coffee', 'src/tools.coffee', 'src/app.coffee', 'src/game.coffee', 'src/hud.coffee', 'src/speechbubble.coffee']) .pipe(sourcemaps.init()) .pipe(coffee({bare: true})) .pipe(concat('app.js')) diff --git a/public/images/speechbubbles.png b/public/images/speechbubbles.png new file mode 100644 index 0000000..d2edc5a Binary files /dev/null and b/public/images/speechbubbles.png differ diff --git a/src/app.coffee b/src/app.coffee index a915aa6..a55e202 100644 --- a/src/app.coffee +++ b/src/app.coffee @@ -5,7 +5,7 @@ app = playground( smoothing: false, create: -> - @loadImages "layers", "active", "progress", "selected", "entities", "hud", "actions" + @loadImages "layers", "active", "progress", "selected", "entities", "hud", "actions", "speechbubbles" @currentHoveredTile = new Tile ready: -> diff --git a/src/game.coffee b/src/game.coffee index 804c6da..e140d12 100644 --- a/src/game.coffee +++ b/src/game.coffee @@ -3,12 +3,16 @@ app.game = for i in [0..20*15-1] @map[i] = new Tile(i) @map[20*5+10].entity = new Base + + @mouseX = 0 + @mouseY = 0 @currentHoveredTile = new Tile(-1) @currentSelectedTile = null window.setInterval @tick, 1000 @hud.start() + @speechbubble.start() render: -> for tile, i in @map @@ -16,6 +20,7 @@ app.game = x = i-(y*20) tile.render(x, y) @hud.render() + @speechbubble.render() mousedown: (event)-> if @isMouseInView event.x/8, event.y/8 @@ -32,6 +37,9 @@ app.game = @currentSelectedTile = null mousemove: (event)-> + @mouseX = event.x + @mouseY = event.y + if @isMouseInView event.x, event.y tile = posToTile(Math.floor(event.x/8), Math.floor(event.y/8)) @@ -67,8 +75,12 @@ app.game = @currentSelectedTile.entity = new Miner createSilo: -> - if @currentSelectedTile and @checkPosition(@currentSelectedTile) and @checkResource('stardust', 20, true) - @currentSelectedTile.entity = new Silo + if @currentSelectedTile + if @checkPosition(@currentSelectedTile) + if @checkResource('stardust', 20, true) + @currentSelectedTile.entity = new Silo + else + @speechbubble.say 'toofar' checkResource: (type, amount, drain = false) -> if @resources[type] >= amount diff --git a/src/speechbubble.coffee b/src/speechbubble.coffee new file mode 100644 index 0000000..c002d4a --- /dev/null +++ b/src/speechbubble.coffee @@ -0,0 +1,19 @@ +app.game.speechbubble = + start: -> + @sprite = [0, 0, 27, 13] + + say: (text) -> + clearTimeout(@timeout) if @timeout + + switch text + when 'help' then @sprite = [0, 0, 27, 13] + when 'toofar' then @sprite = [0, 13, 90, 13] + + @visible = true + @timeout = window.setTimeout @hide, 1000 + + hide: => + app.game.speechbubble.visible = false + + render: -> + app.layer.drawRegion app.images.speechbubbles, @sprite, app.game.mouseX+5, app.game.mouseY-15 if @visible \ No newline at end of file