From 6f482e8d2cae96ec5229e1e0ef346289a195f38d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ruben=20M=C3=BCller?= Date: Sun, 7 Dec 2014 15:52:54 +0100 Subject: [PATCH] Speechbubble work --- gulpfile.js | 2 +- public/images/speechbubbles.png | Bin 0 -> 1385 bytes src/app.coffee | 2 +- src/game.coffee | 16 ++++++++++++++-- src/speechbubble.coffee | 19 +++++++++++++++++++ 5 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 public/images/speechbubbles.png create mode 100644 src/speechbubble.coffee 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 0000000000000000000000000000000000000000..d2edc5a5e9fb1cc654dde2bd529546464b94cbf6 GIT binary patch literal 1385 zcmeAS@N?(olHy`uVBq!ia0vp^Q9!KD!3HGzMdD?Flw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6H#2Ih>+kcg59UmvUF{9L_6kQ%*;+ybC(1_m4Zih{)C?9>v4 zq}24xJX@vryZ0+8WTx0Eg`4^s_!c;)W@LI)6{QAO`Gq7`WhYyvDB0U7*i={n4aiL` zNmQuF&B-gas<2f8n`;GRgM{^!6u?SKvTcwn`GuBNuFf>#!Gt)CP zF*P$Y)KM@pFf`IP03tJ8LlY}gGb`4?pZBPB7%B|o_|H#M)s)5TT^D5IB>nPO#NY5@#I za}xt|BLg!FLqiJ#3u6ltHw!moH%Aj=M-!MC*z`JEx*EBf8(5f|nHU-xx|%pSx;i== zxj33TI+`09nwi4%dgc|EB<3Zj!tBii+6&cdj#sahb5UwyNq$jCetr%t1q5W|m*f{` zK@kM;uS;rCW?5>ATTygX%NJOCw?FYo_$jDfO)0}m^oVA-!EifV4Uvh;uunK>rE7+P?Lgy$Z_#2 z?XOaAo_^*0m37k0j2BicEdD)rXD+)Ue7w~5o!OLYyNV0<%AdXd{anq8kAL30*cx@{ zgW9#$eRJeo^^IZ=8?4#YcClJ@#g+5!U%!-J470G+|M=qC_@WIH7*lVT$_L(I z?zp+VJ#4?m#htpAw&#|1M^q*I+>Whs1$>-0Wxi(qRM^$sZ^3jk(`_&{}jCC!-v^b}f zN30B~PM0`kr69#{5sY^wCM>gTe~DWM4f61?j; literal 0 HcmV?d00001 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