From e9d1596c2f03454fb1f15e73a51e8add2d8c79db Mon Sep 17 00:00:00 2001 From: Asraelite Date: Wed, 30 Mar 2016 00:53:23 +0100 Subject: [PATCH] add grappling hook sprite --- public/static/img/projectiles/02.png | Bin 0 -> 266 bytes public/static/img/turrets/02/launched.png | Bin 0 -> 210 bytes public/static/img/turrets/02/normal.png | Bin 0 -> 293 bytes public/static/js/wingbase/assets.js | 3 +++ public/static/js/wingbase/gui/gui.js | 5 ++++- public/static/js/wingbase/main.js | 4 ++-- public/static/js/wingbase/render/body.js | 16 +++++++++++++++- public/static/js/wingbase/render/render.js | 6 +++++- public/static/js/wingbase/world/body.js | 2 ++ public/static/js/wingbase/world/ship.js | 1 - public/stylus/styles.styl | 2 ++ server/game/room/world/body/body.js | 1 + 12 files changed, 34 insertions(+), 6 deletions(-) create mode 100644 public/static/img/projectiles/02.png create mode 100644 public/static/img/turrets/02/launched.png create mode 100644 public/static/img/turrets/02/normal.png diff --git a/public/static/img/projectiles/02.png b/public/static/img/projectiles/02.png new file mode 100644 index 0000000000000000000000000000000000000000..dcb8d500b51aaeb1a9d17d1abe247b5a711e8600 GIT binary patch literal 266 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hEZg@?)}Ien*u~NIpNA3Z5{8_|%vJLp7X;6V-3t=(boFyt I=akR{0B@aT=l}o! literal 0 HcmV?d00001 diff --git a/public/static/img/turrets/02/launched.png b/public/static/img/turrets/02/launched.png new file mode 100644 index 0000000000000000000000000000000000000000..b115c5525992719e6010cde0e94309f0c847b41d GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hEJo6HMkif{kQ&AQxv@C?4_fP0#|6fTydU%Q~lo FCIHI*O^^Tp literal 0 HcmV?d00001 diff --git a/public/static/img/turrets/02/normal.png b/public/static/img/turrets/02/normal.png new file mode 100644 index 0000000000000000000000000000000000000000..4db18305aba772194aaefdbf42a8a7d00b2d4f33 GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hEQO!R!mRSVfX-zT&q>cJ|CRWD{tLB?J8w36}UnVQen2sAly zL|xyS=6Kn#OtdLf^SSQd)B240?-Xw^U(emp&Lg2>+Z@pDIsc<#Nq*($_^WdlSS5?U kP))g0*9LVO1B2dUM!uIZ7pB~q%>)wjboFyt=akR{0MepxR{#J2 literal 0 HcmV?d00001 diff --git a/public/static/js/wingbase/assets.js b/public/static/js/wingbase/assets.js index 549880e..544a5db 100644 --- a/public/static/js/wingbase/assets.js +++ b/public/static/js/wingbase/assets.js @@ -16,6 +16,9 @@ Game.prototype.loadAssets = _ => { small: 'img/turrets/01/normal.png' } }, + projectiles: { + '02': 'img/projectiles/02.png' + }, backgrounds: { '01': 'img/space.jpg' } diff --git a/public/static/js/wingbase/gui/gui.js b/public/static/js/wingbase/gui/gui.js index e5985fd..929fda8 100644 --- a/public/static/js/wingbase/gui/gui.js +++ b/public/static/js/wingbase/gui/gui.js @@ -34,6 +34,9 @@ class GUI { } set visible(visible) { - this.guiElement.style.display = visible ? 'block' : 'hidden'; + if (visible) + this.guiElement.classList.remove('hidden'); + else + this.guiElement.classList.add('hidden'); } } diff --git a/public/static/js/wingbase/main.js b/public/static/js/wingbase/main.js index 80794bb..f3037ff 100644 --- a/public/static/js/wingbase/main.js +++ b/public/static/js/wingbase/main.js @@ -62,9 +62,9 @@ class Game { this._state = state; if (state != 'connected') { - this.gui.visible = true; - } else { this.gui.visible = false; + } else { + this.gui.visible = true; } } } diff --git a/public/static/js/wingbase/render/body.js b/public/static/js/wingbase/render/body.js index 9c4833a..b47b1ef 100644 --- a/public/static/js/wingbase/render/body.js +++ b/public/static/js/wingbase/render/body.js @@ -6,7 +6,7 @@ class BodyRenderer { } render(body) { - let pos = body.getPos(); + let pos = body.pos; let x = pos.x * SCALE; let y = pos.y * SCALE; let vx = -game.world.center.x; @@ -28,6 +28,8 @@ class BodyRenderer { this.renderShip(body); } else if (body.bodyType == 'asteroid') { this.renderAsteroid(body); + } else if (body.bodyClass == 'projectile') { + this.renderProjectile(body); } else { this.renderBody(body); } @@ -110,4 +112,16 @@ class BodyRenderer { this.pallet.opacity(0.3); this.pallet.text(ship.name, x, y, '#fff', 'FreePixel', 16, 'center', 'bottom'); } + + renderProjectile(body) { + if (body.bodyType != 'grapple') { + this.renderBody(body); + return; + } + + let img = game.assets.images.projectiles['02']; + let pos = body.pos; + this.pallet.image(img, -32, -32, 0); + this.pallet.restore(); + } }; diff --git a/public/static/js/wingbase/render/render.js b/public/static/js/wingbase/render/render.js index b11eb88..de421cb 100644 --- a/public/static/js/wingbase/render/render.js +++ b/public/static/js/wingbase/render/render.js @@ -37,6 +37,10 @@ class Renderer { this.pallet.fill('#020202'); this.context.save(); + + this.context.beginPath(); + this.context.rect(0, 0, cw, ch); + this.context.clip(); this.pallet.view(cw / 2, ch / 2, 1, 0); @@ -44,7 +48,7 @@ class Renderer { let img = game.assets.images.backgrounds['01']; let bgx = -img.width / 2 - center.x / 20; let bgy = -img.height / 2 - center.y / 20; - this.pallet.image(img, bgx, bgy); + this.pallet.image(img, bgx, bgy, 0, img.width * 1.5, img.height * 1.5); this.pallet.opacity(1); this.renderGrid(); diff --git a/public/static/js/wingbase/world/body.js b/public/static/js/wingbase/world/body.js index 66e6b94..ece3d02 100644 --- a/public/static/js/wingbase/world/body.js +++ b/public/static/js/wingbase/world/body.js @@ -10,6 +10,8 @@ class Body { this.fixtures = data.fixtures; this.b2body = false; this.updated = 0; + this.bodyClass = data.class; + this.bodyType = data.type; this.update(data.delta.slice(1)); diff --git a/public/static/js/wingbase/world/ship.js b/public/static/js/wingbase/world/ship.js index 590044e..18418d5 100644 --- a/public/static/js/wingbase/world/ship.js +++ b/public/static/js/wingbase/world/ship.js @@ -13,7 +13,6 @@ class Ship extends Body { 'large': 24 }[data.size]; this.lastMove = []; - this.bodyType = 'ship'; this.activeFixture = 0; } diff --git a/public/stylus/styles.styl b/public/stylus/styles.styl index b886d99..6c3dae1 100644 --- a/public/stylus/styles.styl +++ b/public/stylus/styles.styl @@ -21,6 +21,8 @@ body #gui color #fff + &.hidden * + display: none .container position fixed #chat diff --git a/server/game/room/world/body/body.js b/server/game/room/world/body/body.js index 0b615a3..3c56139 100644 --- a/server/game/room/world/body/body.js +++ b/server/game/room/world/body/body.js @@ -116,6 +116,7 @@ class Body { packFull() { let packet = { type: this.type, + class: this.class, id: this.id, frame: this.frame, fixtures: this.mounts.map(m => m.packFull()),