From 56396ba9793539762950831b46c883280f99662e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ruben=20M=C3=BCller?= Date: Sun, 7 Dec 2014 00:15:16 +0100 Subject: [PATCH 1/7] HUD improvements --- src/game.coffee | 2 ++ src/hud.coffee | 62 +++++++++++++++++++++++++++++++++----- src/tiles/tilelayer.coffee | 1 + 3 files changed, 58 insertions(+), 7 deletions(-) diff --git a/src/game.coffee b/src/game.coffee index d273165..fbefc29 100644 --- a/src/game.coffee +++ b/src/game.coffee @@ -9,6 +9,8 @@ app.game = # Start the game tick window.setInterval(@tick, 1000) + @hud.start() + render: -> for tile, i in @map y = Math.floor(i/20) diff --git a/src/hud.coffee b/src/hud.coffee index 5c086bb..8565ffd 100644 --- a/src/hud.coffee +++ b/src/hud.coffee @@ -1,11 +1,59 @@ app.game.hud = + start: -> + resTypes = (k for own k of app.game.resources) + + @position = x: 64, y: 107 + + @resources = [] + for restype, i in resTypes + @resources[restype] = new Tilelayer( + type: restype, + depth: i + ) + render: -> - app.layer.drawImage app.images.hud, 0, 12*8+2 - posy = 15 + app.layer.drawImage app.images.hud, 0, 12*8+4 + + i = 0 for type, amount of app.game.resources if amount > 0 - app.layer - .fillStyle "#000" - .font "10px Arial" - .wrappedText(amount+" x "+type, 5, posy, 800) - posy += 10 + #console.log @resources[type] + tileLayer = @resources[type] + + spritePosition = { + x: i*9+@position.x + y: @position.y + } + + app.layer.drawRegion app.images.layers, tileLayer.hudSprite, spritePosition.x, spritePosition.y + + amountByTwenty = Math.floor(amount/20) + amountLeft = amount - amountByTwenty*20 + for e in [0..amountLeft] + color = "#0a0" + + if e < 6 + x = spritePosition.x-1+e + y = spritePosition.y-1 + else if e < 10 + x = spritePosition.x+4 + y = spritePosition.y-1+e-5 + else if e < 15 + x = spritePosition.x+14-e + y = spritePosition.y+4 + else + x = spritePosition.x-1 + y = spritePosition.y+19-e + + app.layer.setPixel(color, x, y) + + for f in [0..amountByTwenty] + if f > 0 + color = "#0000ff" + + x = spritePosition.x-2+f + y = spritePosition.y+7 + + app.layer.setPixel(color, x, y) + + i++ diff --git a/src/tiles/tilelayer.coffee b/src/tiles/tilelayer.coffee index 3882592..6c1ec1d 100644 --- a/src/tiles/tilelayer.coffee +++ b/src/tiles/tilelayer.coffee @@ -3,6 +3,7 @@ class Tilelayer {@type, @depth, @amount} = options @randomFactor = getRandomInt 0, 4 @sprite = [@randomFactor*8, @depth*8, 8, 8] + @hudSprite = [@randomFactor*8, @depth*8, 4, 4] collect: -> return false if @amount == 0 From 298849c2fb260bc9364ce4f5da18cb299562f1f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ruben=20M=C3=BCller?= Date: Sun, 7 Dec 2014 00:17:16 +0100 Subject: [PATCH 2/7] HUD position fix --- src/hud.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hud.coffee b/src/hud.coffee index 8565ffd..dd14390 100644 --- a/src/hud.coffee +++ b/src/hud.coffee @@ -2,7 +2,7 @@ app.game.hud = start: -> resTypes = (k for own k of app.game.resources) - @position = x: 64, y: 107 + @position = x: 45, y: 103 @resources = [] for restype, i in resTypes @@ -12,7 +12,7 @@ app.game.hud = ) render: -> - app.layer.drawImage app.images.hud, 0, 12*8+4 + app.layer.drawImage app.images.hud, 0, 11*8 i = 0 for type, amount of app.game.resources From dbea27ca391bf0d3c78f3d0569864a972c7c9d4b Mon Sep 17 00:00:00 2001 From: Aaron Mueller Date: Sun, 7 Dec 2014 00:19:22 +0100 Subject: [PATCH 3/7] +silos, polishing, gfx --- public/images/progress.png | Bin 0 -> 136 bytes public/images/selected.png | Bin 946 -> 148 bytes src/app.coffee | 2 +- src/entities/base.coffee | 9 +++++++++ src/entities/miner.coffee | 8 ++++++-- src/entities/silo.coffee | 19 +++++++++++++++++++ src/game.coffee | 12 +++++++++--- src/tiles/tile.coffee | 4 +++- 8 files changed, 47 insertions(+), 7 deletions(-) create mode 100644 public/images/progress.png create mode 100644 src/entities/base.coffee create mode 100644 src/entities/silo.coffee diff --git a/public/images/progress.png b/public/images/progress.png new file mode 100644 index 0000000000000000000000000000000000000000..78646a41caee89bf02ab691f4725b31c180d7dc5 GIT binary patch literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^93afW0wnX;%77#TXMsm#F#`j)FbFd;%$g$s6l5>) z^mS#w$HOM3qnh`Wl@lnW?&;zf!f`!0K|$KU$Y2ro0m=W85^KsFEso!jkeDG5!_m#D c)EB_WaQqBA$G@MYt{}5LUHx3vIVCg!0CWr<(*OVf literal 0 HcmV?d00001 diff --git a/public/images/selected.png b/public/images/selected.png index 541a5fbfdd996a6841564c5a92c5bc0b25fab695..ae0b3455e803090a751d1c3c644d0de37af63e54 100644 GIT binary patch delta 119 zcmdnQK810DN&#nqM`SSr1Gg{;GcwGYBf-GHz+U3%>&kwQhfPdRf@Qb%ETE9Fr;B5V z#O35Ecm6)KXJ#=lTF~^L2MByDR30XQh^`qD91O2Ce)PNlvlrepeM6-%gWFT~%afh7 RIDy(3JYD@<);T3K0RW;QBn$um literal 946 zcmaJ=J#W)M7`7TzRYet3hccj(+W{ovuQ+ymiiv`qP)j(9l1PLN$G#+1YM*Ogh?5Z} z#KguQU`2uziFROsp8#Uv7qB8B1m`qP83>l`yLBf+zI`9MIN+QN z!=*t)*$h*yrIF)K5CH=;@xSGe-?tp3v zsX%~;1Jd9mOkk?BOI=9!nVDz75<(_Adl6LMZUY0y2$Z=}(G^4yC<-UaWknHh14$4i zUZAg16lGXeprnG;!%}atH-sItx$;F%Iy)vLf;>N)&A3^K!|{k0HBHMjB&kRd#bh25 zCoP7_VXk1J#Et!k_&5ZaqBFo#qO&y8ixh%rEgL4QGSPzZsT1)cCuAw*K->O5Gziw{ zgmlnly#EwVdh-bJ9hBf{?9#>!4>MO0G-Bis9QQCj$*b5NV}g@0j)2isz)jn6{V+4! zS~6@KT46$*&_$N1vs8ogeGiItO&02^rj{$RC^qDZ+SE+dXiA2xmefWg=bG4^1}G#s z*SqA_H*&LK2qNm)M6v%EdCeFHV3{=ZH^-uG)LU`A&9PKAa(NmIpSAX{R_7)%H{L;KkQp-)e;$=UcB1PCx!04FI$Kbn7J_E%w1V YbN2Ac=d1f~3fV2P8ZGnn-A7OU08(-ziU0rr diff --git a/src/app.coffee b/src/app.coffee index 5261f5c..1468d47 100644 --- a/src/app.coffee +++ b/src/app.coffee @@ -5,7 +5,7 @@ app = playground( smoothing: false, create: -> - @loadImages "layers", "active", "selected", "entities", "hud" + @loadImages "layers", "active", "progress", "selected", "entities", "hud" @currentHoveredTile = new Tile ready: -> diff --git a/src/entities/base.coffee b/src/entities/base.coffee new file mode 100644 index 0000000..66581e7 --- /dev/null +++ b/src/entities/base.coffee @@ -0,0 +1,9 @@ +class Base + tick: (tile)-> + + sprite: -> + [0, 0, 8, 8] + + isMoveable: -> + false + diff --git a/src/entities/miner.coffee b/src/entities/miner.coffee index cd7c9d6..5eb5e20 100644 --- a/src/entities/miner.coffee +++ b/src/entities/miner.coffee @@ -1,5 +1,9 @@ class Miner - tick: (tile) -> + tick: (tile)-> tile.click "left" - sprite: [0, 16, 8, 8] + sprite: -> + [0, 16, 8, 8] + + isMoveable: -> + true diff --git a/src/entities/silo.coffee b/src/entities/silo.coffee new file mode 100644 index 0000000..40783e2 --- /dev/null +++ b/src/entities/silo.coffee @@ -0,0 +1,19 @@ +class Silo + constructor: -> + @frame = 0 + window.setInterval @changeAnimation, 500 + + tick: (tile)-> + + sprite: -> + [@frame*8, 8, 8, 8] + + isMoveable: -> + false + + changeAnimation: => + if @frame == 2 + @frame = 0 + else + @frame += 1 + diff --git a/src/game.coffee b/src/game.coffee index c8fe60b..388fd3e 100644 --- a/src/game.coffee +++ b/src/game.coffee @@ -2,12 +2,13 @@ app.game = start: -> for i in [0..20*15-1] @map[i] = new Tile + @map[20*5+10].entity = new Base @currentHoveredTile = new Tile @currentSelectedTile = new Tile # Start the game tick - window.setInterval(@tick, 1000) + window.setInterval @tick, 1000 @hud.start() @@ -39,6 +40,7 @@ app.game = keyup: (event) -> switch event.key when "m" then @createMiner() + when "s" then @createSilo() when "c" then @cheatah() when "space" @currentSelectedTile.deselect() if @currentSelectedTile @@ -48,10 +50,14 @@ app.game = tile.tick() for tile in app.game.map createMiner: -> - if @currentSelectedTile and @checkRessources 'lubinit', 30, true + if @currentSelectedTile and @checkResource 'lubinit', 30, true @currentSelectedTile.entity = new Miner - checkRessources: (type, amount, drain = false) -> + createSilo: -> + if @currentSelectedTile and @checkResource 'oxodum', 20, true + @currentSelectedTile.entity = new Silo + + checkResource: (type, amount, drain = false) -> if @resources[type] >= amount @resources[type] -= amount if drain return true diff --git a/src/tiles/tile.coffee b/src/tiles/tile.coffee index c15ffc7..734238e 100644 --- a/src/tiles/tile.coffee +++ b/src/tiles/tile.coffee @@ -42,9 +42,11 @@ class Tile app.layer.drawRegion app.images.layers, tileLayer.sprite, x*8, y*8 if @entity - app.layer.drawRegion app.images.entities, @entity.sprite, x*8, y*8 + app.layer.drawRegion app.images.entities, @entity.sprite(), x*8, y*8 + if (@entity and @entity.isMoveable()) # Draw the status indicator. + app.layer.drawImage app.images.progress, x*8, y*8 numPercent = Math.floor((tileLayer.amount*6)/app.game.maxTileAmount) for i in [0..numPercent] color = ["#f00", "#a00", "#f60", "#aa0", "#0a0", "#0a0"][numPercent] From 602d01a95e9d71303d0ea55c36deea80e4588486 Mon Sep 17 00:00:00 2001 From: Aaron Mueller Date: Sun, 7 Dec 2014 00:23:55 +0100 Subject: [PATCH 4/7] image fix --- public/images/entities.png | Bin 510 -> 739 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/public/images/entities.png b/public/images/entities.png index 6c412f238cf8dba2aa443e7aa3961f0337d6d6b4..a8823d4086c966450db7c5da27b2be2d9d374b33 100644 GIT binary patch delta 685 zcmV;e0#g0{1LFmdLVp(*9^#&9A^-paf=NU{R9M69md#64VHC!HXPibbjJX6Y97CNk zgVcpFQy}yY6p}czN*Y%t;jCJ=5+Q0E7;UpQEs6xUArvzBG1g*mp>3>iVGGB`FC?bZ zLhtR~>wKAGZsx#Q-1EHL^SsYF=Y3yP71QO6PtUe>s6A%);eU8khvU(L_`kRppyT;F z1-SC`HG6BTTpAfufG;Bn;e^d=|7Z$@AQS>%Ir-7CFfkC*XD{C#e8m)yvGF$+E+S-C zt^shac@9-Ai-5=DtJS@=RUX~E!M)23mTxaF;_=mLVj!kw@{D!^a6m*812HR$s!}uG zNzHs`*~tOCb$=~w0NlEG-T`bcr!g_p3`vsFZVX9Qt^`|4X=%7~UvIxpTfvzp56Nx* zWNRsH>w$e03`sH^k5a4zB2u;rUV!YvG#?hG3oh!F9$u~d5Qr+kxt zK5uM@UDm6H;lMv-G7gnW;YAhb^858gB%YefKtRKW zp${4x9e?cI_)L3yQCtTH%PxV{ga?w@&C!G+qAuc&CM$&(ybEljD5h+xD(;iajptFa zC|=0qC>O^`n1@p~2Z8Kvt7dmw|EnZc2{yl8cOYFn61aq{&6nc@+>5H70TQ%vYobs$*CsP$f_$a9Z{U;O?F5 T+&^Ik00000NkvXXu0mjf8GAiD delta 454 zcmV;%0XhET1^xq&LVp%78-%G#VE_OC9cffpbVF}#ZDnqB0000007G(RVRU6=Aa`kW zXdp*PO;BVmWd{HN0dz@3K~z}7?Up}FLSYn#pJT2CEj1?SD$<}qbE_EWq~!eoy7&c( zS{hsG17zeLL14a;RGosVPCF Date: Sun, 7 Dec 2014 00:28:16 +0100 Subject: [PATCH 5/7] Show progress bar on hover --- src/tiles/tile.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tiles/tile.coffee b/src/tiles/tile.coffee index 734238e..a5677cb 100644 --- a/src/tiles/tile.coffee +++ b/src/tiles/tile.coffee @@ -44,7 +44,7 @@ class Tile if @entity app.layer.drawRegion app.images.entities, @entity.sprite(), x*8, y*8 - if (@entity and @entity.isMoveable()) + if (@entity and @entity.isMoveable()) or @isActive # Draw the status indicator. app.layer.drawImage app.images.progress, x*8, y*8 numPercent = Math.floor((tileLayer.amount*6)/app.game.maxTileAmount) From c6619f12475abb5e752277f7b5b652ba0bca8abb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ruben=20M=C3=BCller?= Date: Sun, 7 Dec 2014 00:46:38 +0100 Subject: [PATCH 6/7] Snake --- src/hud.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/src/hud.coffee b/src/hud.coffee index dd14390..68f4da4 100644 --- a/src/hud.coffee +++ b/src/hud.coffee @@ -31,6 +31,7 @@ app.game.hud = amountLeft = amount - amountByTwenty*20 for e in [0..amountLeft] color = "#0a0" + color = "#0f0" if e == amountLeft if e < 6 x = spritePosition.x-1+e From fe496a24d4876b0ff41db1c699d8bcfbe82b52af Mon Sep 17 00:00:00 2001 From: Aaron Mueller Date: Sun, 7 Dec 2014 00:46:46 +0100 Subject: [PATCH 7/7] space calculation --- src/entities/base.coffee | 2 ++ src/entities/miner.coffee | 2 ++ src/entities/silo.coffee | 2 ++ src/game.coffee | 11 +++++++++++ 4 files changed, 17 insertions(+) diff --git a/src/entities/base.coffee b/src/entities/base.coffee index 66581e7..cd0565d 100644 --- a/src/entities/base.coffee +++ b/src/entities/base.coffee @@ -6,4 +6,6 @@ class Base isMoveable: -> false + + spaceProvided: 50 diff --git a/src/entities/miner.coffee b/src/entities/miner.coffee index 5eb5e20..4db52ac 100644 --- a/src/entities/miner.coffee +++ b/src/entities/miner.coffee @@ -7,3 +7,5 @@ class Miner isMoveable: -> true + + spaceProvided: 5 diff --git a/src/entities/silo.coffee b/src/entities/silo.coffee index 40783e2..b8db818 100644 --- a/src/entities/silo.coffee +++ b/src/entities/silo.coffee @@ -17,3 +17,5 @@ class Silo else @frame += 1 + spaceProvided: 150 + diff --git a/src/game.coffee b/src/game.coffee index 388fd3e..34981f6 100644 --- a/src/game.coffee +++ b/src/game.coffee @@ -71,6 +71,17 @@ app.game = miners: [] maxTileAmount: 15 + availableSiloStorage: -> + space = 0 + for tile in app.game.map + space += tile.spaceProvided + space + + usedSiloStorage: -> + space = 0 + space += amount for resource, amount of @resources + space + resources: stardust: 0 dirt: 0