Skip to content

Commit

Permalink
BLADERUNNER: Implement mouse jitter
Browse files Browse the repository at this point in the history
  • Loading branch information
sev- committed Mar 25, 2018
1 parent 0d73b1f commit 16e09b1
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 7 deletions.
9 changes: 5 additions & 4 deletions engines/bladerunner/bladerunner.cpp
Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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);
Expand Down
42 changes: 41 additions & 1 deletion engines/bladerunner/mouse.cpp
Expand Up @@ -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;
Expand All @@ -190,6 +212,9 @@ void Mouse::setRandomY() {

void Mouse::disable() {
++_disabledCounter;

_randomCountdownX = 0;
_randomCountdownY = 0;
}

void Mouse::enable() {
Expand All @@ -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);

Expand Down
3 changes: 2 additions & 1 deletion engines/bladerunner/mouse.h
Expand Up @@ -58,7 +58,8 @@ class Mouse {
void setCursor(int cursor);

void getXY(int *x, int *y) const;
void setRandomY();
void setMouseJitterUp();
void setMouseJitterDown();

void disable();
void enable();
Expand Down
2 changes: 1 addition & 1 deletion engines/bladerunner/script/police_maze.cpp
Expand Up @@ -333,7 +333,7 @@ bool PoliceMazeTargetTrack::tick() {
}
Sound_Play_Speech_Line(kActorMcCoy, snd, 75, 0, 99);

_vm->_mouse->setRandomY();
_vm->_mouse->setMouseJitterDown();
}

cont = false;
Expand Down

0 comments on commit 16e09b1

Please sign in to comment.