diff --git a/public/img/ships/01/hull.png b/public/img/ships/01/hull.png index cbba37b..a45c0f4 100644 Binary files a/public/img/ships/01/hull.png and b/public/img/ships/01/hull.png differ diff --git a/public/img/ships/01/teama.png b/public/img/ships/01/teama.png index 3ca0fdd..09502ae 100644 Binary files a/public/img/ships/01/teama.png and b/public/img/ships/01/teama.png differ diff --git a/public/img/ships/01/teamb.png b/public/img/ships/01/teamb.png index 8247bd8..859f9c7 100644 Binary files a/public/img/ships/01/teamb.png and b/public/img/ships/01/teamb.png differ diff --git a/public/img/ships/01/thrust0.png b/public/img/ships/01/thrust0.png index 7ade62b..00d439c 100644 Binary files a/public/img/ships/01/thrust0.png and b/public/img/ships/01/thrust0.png differ diff --git a/public/img/ships/01/thrust1.png b/public/img/ships/01/thrust1.png index 9148d91..6a1456a 100644 Binary files a/public/img/ships/01/thrust1.png and b/public/img/ships/01/thrust1.png differ diff --git a/public/img/ships/01/thrust2.png b/public/img/ships/01/thrust2.png index c930c6b..f518f07 100644 Binary files a/public/img/ships/01/thrust2.png and b/public/img/ships/01/thrust2.png differ diff --git a/public/img/ships/01/thrust3.png b/public/img/ships/01/thrust3.png index a504c30..33da71c 100644 Binary files a/public/img/ships/01/thrust3.png and b/public/img/ships/01/thrust3.png differ diff --git a/public/img/ships/01/thrust4.png b/public/img/ships/01/thrust4.png index b2b8f36..d418cac 100644 Binary files a/public/img/ships/01/thrust4.png and b/public/img/ships/01/thrust4.png differ diff --git a/public/img/ships/01/thrust5.png b/public/img/ships/01/thrust5.png index 8f72cba..e1ee6f2 100644 Binary files a/public/img/ships/01/thrust5.png and b/public/img/ships/01/thrust5.png differ diff --git a/public/img/ships/01/thrust6.png b/public/img/ships/01/thrust6.png index 3bfae91..2d590e3 100644 Binary files a/public/img/ships/01/thrust6.png and b/public/img/ships/01/thrust6.png differ diff --git a/public/img/ships/01/thrust7.png b/public/img/ships/01/thrust7.png index 397ee8a..5e26be6 100644 Binary files a/public/img/ships/01/thrust7.png and b/public/img/ships/01/thrust7.png differ diff --git a/public/img/ships/01/thrust8.png b/public/img/ships/01/thrust8.png index 49af356..f95724f 100644 Binary files a/public/img/ships/01/thrust8.png and b/public/img/ships/01/thrust8.png differ diff --git a/public/img/ships/01/thrust9.png b/public/img/ships/01/thrust9.png index ed75767..5f1899e 100644 Binary files a/public/img/ships/01/thrust9.png and b/public/img/ships/01/thrust9.png differ diff --git a/public/js/starbugs/assets.js b/public/js/starbugs/assets.js new file mode 100644 index 0000000..3a54a80 --- /dev/null +++ b/public/js/starbugs/assets.js @@ -0,0 +1,35 @@ +function loadAssets() { + var sources = { + images: { + ships: { + '01': { + hull: 'img/ships/01/hull.png', + teama: 'img/ships/01/teama.png', + teamb: 'img/ships/01/teamb.png', + thrust0: 'img/ships/01/thrust0.png', + thrust5: 'img/ships/01/thrust5.png', + thrust8: 'img/ships/01/thrust8.png' + } + } + } + } + + var result = {}; + + // Magical recursive magic. + (function r(o, t) { + for (var i in o) { + console.log(i); + if (typeof o[i] == 'string') { + t[i] = new Image(); + t[i].src = o[i]; + } else { + t[i] = {}; + r(o[i], t[i]); + } + } + t = o; + })(sources, result); + + return result; +} diff --git a/public/js/starbugs/main.js b/public/js/starbugs/main.js index 45bbbff..519b043 100644 --- a/public/js/starbugs/main.js +++ b/public/js/starbugs/main.js @@ -15,6 +15,8 @@ function init() { function Game() { var self = this; + this.assets = loadAssets(); + this.connected = false; this.state = 'connecting'; diff --git a/public/js/starbugs/net.js b/public/js/starbugs/net.js index 9a42f0b..402e9dd 100644 --- a/public/js/starbugs/net.js +++ b/public/js/starbugs/net.js @@ -19,6 +19,7 @@ function Net() { }); this.socket.on('world', function(data) { + game.world.clear(); game.world.playerShipId = data; }); }; diff --git a/public/js/starbugs/render/render.js b/public/js/starbugs/render/render.js index 7cec100..d4bb22f 100644 --- a/public/js/starbugs/render/render.js +++ b/public/js/starbugs/render/render.js @@ -43,7 +43,11 @@ function Renderer() { for (var id in game.world.bodies) { var body = game.world.bodies[id]; - pallet.rect('#338', body.x, body.y, 10, 10); + if (body.bodyType == 'ship') { + renderShip(pallet, body); + } else { + pallet.rect('#338', body.x, body.y, 10, 10); + } } context.restore(); diff --git a/public/js/starbugs/render/ships.js b/public/js/starbugs/render/ships.js index dd723fd..c00fcc6 100644 --- a/public/js/starbugs/render/ships.js +++ b/public/js/starbugs/render/ships.js @@ -1,3 +1,11 @@ -function RenderShip(ship) { - +function renderShip(pallet, ship) { + var img = game.assets.images.ships[ship.hull].hull; + var col = game.assets.images.ships[ship.hull].teamb; + var thr0 = game.assets.images.ships[ship.hull].thrust0; + var thr5 = game.assets.images.ships[ship.hull].thrust5; + var thr8 = game.assets.images.ships[ship.hull].thrust8; + //pallet.view(ship.x, ship.y, false, ship.r); + pallet.image(col, ship.x, ship.y, ship.r); + pallet.image(img, ship.x, ship.y, ship.r); + pallet.image(ship.move[0] ? thr8 : thr0, ship.x, ship.y, ship.r); } diff --git a/public/js/starbugs/world/ship.js b/public/js/starbugs/world/ship.js index 62bb691..6a651ca 100644 --- a/public/js/starbugs/world/ship.js +++ b/public/js/starbugs/world/ship.js @@ -2,8 +2,11 @@ function Ship(id) { this.id = id; this.x = 0; this.y = 0; + this.r = 0; + this.hull = '01'; this.move = []; this.lastMove = []; + this.bodyType = 'ship'; this.updateMove = function() { if (JSON.stringify(this.move) != JSON.stringify(this.lastMove) || true) { diff --git a/public/js/starbugs/world/world.js b/public/js/starbugs/world/world.js index 36a8999..f2b39fd 100644 --- a/public/js/starbugs/world/world.js +++ b/public/js/starbugs/world/world.js @@ -3,6 +3,11 @@ function World() { this.playerShip = false; this.playerShipId = false; + this.clear = function() { + this.bodies = {}; + this.playerShip = false; + } + this.update = function(data) { this.playerShip = this.bodies[this.playerShipId]; diff --git a/server/game/room/world/physics.js b/server/game/room/world/physics.js index b237cde..ae6ba26 100644 --- a/server/game/room/world/physics.js +++ b/server/game/room/world/physics.js @@ -25,6 +25,8 @@ class Physics { bodyDef.active = true; bodyDef.linearVelocity = new b2Vec2(body.xvel / s || 0, body.yvel / s || 0); bodyDef.angularVelocity = body.rvel || 0; + bodyDef.linearDamping = 0.001; + bodyDef.angularDamping = 0.001; bodyDef.type = body.type == 'static' ? Box2D.b2BodyType.b2_staticBody : Box2D.b2BodyType.b2_dynamicBody; if (body.player) bodyDef.allowSleep = false; diff --git a/server/game/room/world/ship.js b/server/game/room/world/ship.js index c20fdab..e2c39c0 100644 --- a/server/game/room/world/ship.js +++ b/server/game/room/world/ship.js @@ -22,18 +22,18 @@ class Ship extends Body { } if (data.forward) { - let power = 0.02; + let power = 0.05; let x = Math.cos(this.b2body.GetAngleRadians()) * power; let y = Math.sin(this.b2body.GetAngleRadians()) * power; this.applyForce(x, y); } if (data.left) { - this.applyTorque(-0.02); + this.applyTorque(-0.0001); } if (data.right) { - this.applyTorque(0.02); + this.applyTorque(0.0001); } } }