From b798e6acacb7f420ef17aedb222345e1e0cf4651 Mon Sep 17 00:00:00 2001 From: logsol Date: Sun, 9 Oct 2016 19:56:06 +0200 Subject: [PATCH] Adds forward walking on shift The state of the shift modifier is now distributed across the network. Walking speeds and animation states are being updated according to it. Fixes #130 --- .../Client/Control/Inputs/KeyboardAndMouse.js | 2 ++ app/Game/Client/Control/PlayerController.js | 12 ++++++++++++ app/Game/Core/Control/PlayerController.js | 15 ++++++++++----- app/Game/Core/GameObjects/Doll.js | 6 +++--- app/Game/Core/Player.js | 13 ++++++++++++- 5 files changed, 39 insertions(+), 9 deletions(-) diff --git a/app/Game/Client/Control/Inputs/KeyboardAndMouse.js b/app/Game/Client/Control/Inputs/KeyboardAndMouse.js index 998e94f..36dea66 100644 --- a/app/Game/Client/Control/Inputs/KeyboardAndMouse.js +++ b/app/Game/Client/Control/Inputs/KeyboardAndMouse.js @@ -216,6 +216,7 @@ function (Parent, KeyboardInput, DomController, Settings, Swiper) { KeyboardAndMouse.prototype.activateModifier = function() { this.modifier = true; + this.playerController.activateModifier(); }; KeyboardAndMouse.prototype.deactivateModifier = function() { @@ -223,6 +224,7 @@ function (Parent, KeyboardInput, DomController, Settings, Swiper) { this.x = this.lastLookDirection * Settings.VIEWPORT_LOOK_AHEAD; this.y = 0; this.onXyChange(this.x, this.y); + this.playerController.deactivateModifier(); }; return KeyboardAndMouse; diff --git a/app/Game/Client/Control/PlayerController.js b/app/Game/Client/Control/PlayerController.js index 80db229..5e8033f 100755 --- a/app/Game/Client/Control/PlayerController.js +++ b/app/Game/Client/Control/PlayerController.js @@ -98,6 +98,18 @@ function (Parent, Nc, KeyboardAndMouse, Gamepad, PointerLockManager) { Nc.trigger(Nc.ns.client.game.zoomReset, false); }; + PlayerController.prototype.activateModifier = function() { + if (!this.isPlayerInputAllowed()) return; + Parent.prototype.activateModifier.call(this); + Nc.trigger(Nc.ns.client.to.server.gameCommand.send, "activateModifier"); + }; + + PlayerController.prototype.deactivateModifier = function() { + if (!this.isPlayerInputAllowed()) return; + Parent.prototype.deactivateModifier.call(this); + Nc.trigger(Nc.ns.client.to.server.gameCommand.send, "deactivateModifier"); + }; + /* * Client overwrite - allow player input if PointerLock is locked to canvas * and is not in between games diff --git a/app/Game/Core/Control/PlayerController.js b/app/Game/Core/Control/PlayerController.js index 62b09db..d264152 100755 --- a/app/Game/Core/Control/PlayerController.js +++ b/app/Game/Core/Control/PlayerController.js @@ -4,11 +4,7 @@ define([ function () { function PlayerController (player) { - this.player = player; - - this._shift; - this._isJumping; this._walkingDirectionStatus = 0; } @@ -31,7 +27,6 @@ function () { PlayerController.prototype.jump = function () { if(!this.isPlayerInputAllowed()) return; - this._isJumping = true; this.player.jump(); } @@ -44,6 +39,16 @@ function () { if(options) this.player.lookAt(options.x, options.y); } + PlayerController.prototype.activateModifier = function() { + if (!this.isPlayerInputAllowed()) return; + this.player.activateModifier(); + }; + + PlayerController.prototype.deactivateModifier = function() { + if (!this.isPlayerInputAllowed()) return; + this.player.deactivateModifier(); + }; + PlayerController.prototype.update = function () { if(this._walkingDirectionStatus != 0) { this.player.move(this._walkingDirectionStatus); diff --git a/app/Game/Core/GameObjects/Doll.js b/app/Game/Core/GameObjects/Doll.js index 5c8f1c2..ab258b4 100755 --- a/app/Game/Core/GameObjects/Doll.js +++ b/app/Game/Core/GameObjects/Doll.js @@ -228,14 +228,14 @@ function (Parent, Exception, Box2D, Settings, CollisionDetector, Item, Nc, Asser } }; - Doll.prototype.move = function (direction) { + Doll.prototype.move = function (direction, modifierActivated) { this.moveDirection = direction; var speed; var isHoldingHeavyItem = this.holdingItem && this.holdingItem.options.weight > Settings.MAX_RUNNING_WEIGHT; switch(true) { - case direction == this.lookDirection && this.isStanding() && !isHoldingHeavyItem: + case direction == this.lookDirection && this.isStanding() && !isHoldingHeavyItem && !modifierActivated: speed = Settings.RUN_SPEED; break; @@ -264,7 +264,7 @@ function (Parent, Exception, Box2D, Settings, CollisionDetector, Item, Nc, Asser if(this.isStanding()) { if(this.moveDirection == this.lookDirection) { - if(isHoldingHeavyItem) { + if(isHoldingHeavyItem || modifierActivated) { this.setActionState("walk"); } else { this.setActionState("run"); diff --git a/app/Game/Core/Player.js b/app/Game/Core/Player.js index 9e73e4d..5ae0259 100755 --- a/app/Game/Core/Player.js +++ b/app/Game/Core/Player.js @@ -30,6 +30,7 @@ function (Doll, PlayerController, Settings, Nc, Exception, ColorConverter, Spect this.inBetweenRounds = true; this.spectatorDoll = new SpectatorDoll(this.physicsEngine, "spectatorDoll-" + this.id, this); this.revealedGameController = revealedGameController; + this.modifierActivated = false; } Player.prototype.getNickname = function() { @@ -66,7 +67,7 @@ function (Doll, PlayerController, Settings, Nc, Exception, ColorConverter, Spect Player.prototype.move = function (direction) { if(!this.spawned) return false; - this.doll.move(direction); + this.doll.move(direction, this.modifierActivated); } Player.prototype.stop = function () { @@ -90,6 +91,16 @@ function (Doll, PlayerController, Settings, Nc, Exception, ColorConverter, Spect this.doll.lookAt(x, y); } + Player.prototype.activateModifier = function () { + if(!this.spawned) return false; + this.modifierActivated = true; + } + + Player.prototype.deactivateModifier = function () { + if(!this.spawned) return false; + this.modifierActivated = false; + } + Player.prototype.grab = function(item) { if(!this.spawned) return false; this.doll.grab(item);