[Scummvm-git-logs] scummvm master -> 16e09b1f3476dfa91e7dde5abe942ad9b2f09bf2

sev- sev at scummvm.org
Sun Mar 25 12:06:10 CEST 2018


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
16e09b1f34 BLADERUNNER: Implement mouse jitter


Commit: 16e09b1f3476dfa91e7dde5abe942ad9b2f09bf2
    https://github.com/scummvm/scummvm/commit/16e09b1f3476dfa91e7dde5abe942ad9b2f09bf2
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2018-03-25T12:06:00+02:00

Commit Message:
BLADERUNNER: Implement mouse jitter

Changed paths:
    engines/bladerunner/bladerunner.cpp
    engines/bladerunner/mouse.cpp
    engines/bladerunner/mouse.h
    engines/bladerunner/script/police_maze.cpp


diff --git a/engines/bladerunner/bladerunner.cpp b/engines/bladerunner/bladerunner.cpp
index f481acc..871931a 100644
--- a/engines/bladerunner/bladerunner.cpp
+++ b/engines/bladerunner/bladerunner.cpp
@@ -1239,7 +1239,7 @@ void BladeRunnerEngine::handleMouseClick3DObject(int objectId, bool buttonDown,
 		_settings->decreaseAmmo();
 		_audioPlayer->playAud(_gameInfo->getSfxTrack(_combat->getHitSound()), 100, 0, 0, 90, 0);
 
-		//TODO mouse::randomize(Mouse);
+		_mouse->setMouseJitterUp();
 
 		_isInsideScriptObject = true;
 		_sceneScript->clickedOn3DObject(objectName.c_str(), true);
@@ -1280,7 +1280,7 @@ void BladeRunnerEngine::handleMouseClickEmpty(int x, int y, Vector3 &scenePositi
 		_settings->decreaseAmmo();
 		_audioPlayer->playAud(_gameInfo->getSfxTrack(_combat->getMissSound()), 100, 0, 0, 90, 0);
 
-		//TODO mouse::randomize(Mouse);
+		_mouse->setMouseJitterUp();
 
 		if (actorId > 0) {
 			_aiScripts->shotAtAndMissed(actorId);
@@ -1375,7 +1375,8 @@ void BladeRunnerEngine::handleMouseClickItem(int itemId, bool buttonDown) {
 		_settings->decreaseAmmo();
 		_audioPlayer->playAud(_gameInfo->getSfxTrack(_combat->getHitSound()), 100, 0, 0, 90, 0);
 
-		//TODO mouse::randomize(Mouse);
+		_mouse->setMouseJitterUp();
+
 		_isInsideScriptItem = true;
 		_sceneScript->clickedOnItem(itemId, true);
 		_isInsideScriptItem = false;
@@ -1445,7 +1446,7 @@ void BladeRunnerEngine::handleMouseClickActor(int actorId, bool mainButton, bool
 
 		_audioPlayer->playAud(_gameInfo->getSfxTrack(missed ? _combat->getMissSound() : _combat->getHitSound()), 100, 0, 0, 90, 0);
 
-		//TODO mouse::randomize(Mouse);
+		_mouse->setMouseJitterUp();
 
 		if (missed) {
 			_aiScripts->shotAtAndMissed(actorId);
diff --git a/engines/bladerunner/mouse.cpp b/engines/bladerunner/mouse.cpp
index 7639e30..093c73f 100644
--- a/engines/bladerunner/mouse.cpp
+++ b/engines/bladerunner/mouse.cpp
@@ -166,7 +166,29 @@ void Mouse::getXY(int *x, int *y) const {
 	*y = _y;
 }
 
-void Mouse::setRandomY() {
+void Mouse::setMouseJitterUp() {
+	switch (_vm->_settings->getDifficulty()) {
+	case 0:
+		_randomCountdownX = 2;
+		_randomX = _vm->_rnd.getRandomNumberRng(0, 6) - 3;
+		_randomY = _vm->_rnd.getRandomNumberRng(0, 10) - 20;
+		break;
+
+	case 1:
+		_randomCountdownX = 3;
+		_randomX = _vm->_rnd.getRandomNumberRng(0, 8) - 4;
+		_randomY = _vm->_rnd.getRandomNumberRng(0, 10) - 25;
+		break;
+
+	case 2:
+		_randomCountdownX = 4;
+		_randomX = _vm->_rnd.getRandomNumberRng(0, 10) - 5;
+		_randomY = _vm->_rnd.getRandomNumberRng(0, 10) - 30;
+		break;
+	}
+}
+
+void Mouse::setMouseJitterDown() {
 	switch (_vm->_settings->getDifficulty()) {
 	case 0:
 		_randomCountdownY = 2;
@@ -190,6 +212,9 @@ void Mouse::setRandomY() {
 
 void Mouse::disable() {
 	++_disabledCounter;
+
+	_randomCountdownX = 0;
+	_randomCountdownY = 0;
 }
 
 void Mouse::enable() {
@@ -204,9 +229,24 @@ bool Mouse::isDisabled() const {
 
 void Mouse::draw(Graphics::Surface &surface, int x, int y) {
 	if (_disabledCounter) {
+		_randomCountdownX = 0;
+		_randomCountdownY = 0;
 		return;
 	}
 
+	if (_randomCountdownX > 0) {
+		_randomCountdownX--;
+		x += _randomX;
+		y += _randomY;
+
+		if (!_randomCountdownX)
+			setMouseJitterDown();
+	} else if (_randomCountdownY > 0){
+		_randomCountdownY--;
+		x += _randomX;
+		y += _randomY;
+	}
+
 	_x = CLIP(x, 0, surface.w - 1);
 	_y = CLIP(y, 0, surface.h - 1);
 
diff --git a/engines/bladerunner/mouse.h b/engines/bladerunner/mouse.h
index e63c101..31ba17a 100644
--- a/engines/bladerunner/mouse.h
+++ b/engines/bladerunner/mouse.h
@@ -58,7 +58,8 @@ public:
 	void setCursor(int cursor);
 
 	void getXY(int *x, int *y) const;
-	void setRandomY();
+	void setMouseJitterUp();
+	void setMouseJitterDown();
 
 	void disable();
 	void enable();
diff --git a/engines/bladerunner/script/police_maze.cpp b/engines/bladerunner/script/police_maze.cpp
index 68bb84a..aaed223 100644
--- a/engines/bladerunner/script/police_maze.cpp
+++ b/engines/bladerunner/script/police_maze.cpp
@@ -333,7 +333,7 @@ bool PoliceMazeTargetTrack::tick() {
 					}
 					Sound_Play_Speech_Line(kActorMcCoy, snd, 75, 0, 99);
 
-					_vm->_mouse->setRandomY();
+					_vm->_mouse->setMouseJitterDown();
 				}
 
 				cont = false;





More information about the Scummvm-git-logs mailing list