mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-16 14:50:17 +00:00
TSAGE: Implemented Blue Force scene 560
This commit is contained in:
parent
622e8d9da6
commit
aa57e79704
@ -145,6 +145,8 @@ Scene *BlueForceGame::createScene(int sceneNumber) {
|
||||
// Outside Bikini Hut (Drunk Stop)
|
||||
return new Scene551();
|
||||
case 560:
|
||||
// Study
|
||||
return new Scene560();
|
||||
case 570:
|
||||
case 580:
|
||||
case 590:
|
||||
|
@ -411,7 +411,7 @@ bool Scene551::Drunk::startAction(CursorType action, Event &event) {
|
||||
scene->setAction(&scene->_sequenceManager, scene, 5505, &BF_GLOBALS._player, &scene->_object15, NULL);
|
||||
break;
|
||||
case 1:
|
||||
SceneItem::display(550, 11);
|
||||
SceneItem::display2(550, 11);
|
||||
break;
|
||||
case 2:
|
||||
SceneItem::display2(550, 12);
|
||||
@ -893,6 +893,666 @@ void Scene551::dispatch() {
|
||||
_harrison.updateAngle(BF_GLOBALS._player._position);
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
* Scene 550 - Study
|
||||
*
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
void Scene560::Action1::signal() {
|
||||
Scene560 *scene = (Scene560 *)BF_GLOBALS._sceneManager._scene;
|
||||
|
||||
switch (_actionIndex++) {
|
||||
case 0:
|
||||
setDelay(10);
|
||||
break;
|
||||
case 1:
|
||||
ADD_MOVER(BF_GLOBALS._player, 105, 140);
|
||||
break;
|
||||
case 2:
|
||||
scene->_deskChair.hide();
|
||||
|
||||
BF_GLOBALS._player.changeZoom(81);
|
||||
BF_GLOBALS._player.setVisage(561);
|
||||
BF_GLOBALS._player.setStrip(2);
|
||||
BF_GLOBALS._player.setFrame(1);
|
||||
BF_GLOBALS._player.setPosition(Common::Point(96, 138));
|
||||
BF_GLOBALS._player.animate(ANIM_MODE_5, this);
|
||||
break;
|
||||
case 3:
|
||||
scene->_deskChair.setVisage(561);
|
||||
scene->_deskChair.setFrame(BF_GLOBALS._player._frame);
|
||||
scene->_deskChair.setStrip(BF_GLOBALS._player._strip);
|
||||
scene->_deskChair.setPosition(BF_GLOBALS._player._position);
|
||||
|
||||
scene->_field380 = 1;
|
||||
BF_GLOBALS._player.enableControl();
|
||||
remove();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Scene560::Action2::signal() {
|
||||
Scene560 *scene = (Scene560 *)BF_GLOBALS._sceneManager._scene;
|
||||
|
||||
switch (_actionIndex++) {
|
||||
case 0:
|
||||
BF_GLOBALS._player.disableControl();
|
||||
setDelay(10);
|
||||
break;
|
||||
case 1:
|
||||
scene->_deskChair.hide();
|
||||
|
||||
BF_GLOBALS._player.setVisage(561);
|
||||
BF_GLOBALS._player.setStrip(2);
|
||||
BF_GLOBALS._player.setFrame(BF_GLOBALS._player.getFrameCount());
|
||||
BF_GLOBALS._player.animate(ANIM_MODE_6, this);
|
||||
break;
|
||||
case 2:
|
||||
scene->_field380 = 0;
|
||||
scene->_deskChair.setPosition(Common::Point(81, 149));
|
||||
scene->_deskChair.setVisage(561);
|
||||
scene->_deskChair.setStrip(3);
|
||||
scene->_deskChair.setFrame(1);
|
||||
scene->_deskChair.fixPriority(151);
|
||||
scene->_deskChair.show();
|
||||
|
||||
BF_GLOBALS._player.setVisage(563);
|
||||
BF_GLOBALS._player.setPosition(Common::Point(105, 140));
|
||||
BF_GLOBALS._player.fixPriority(-1);
|
||||
BF_GLOBALS._player.changeZoom(-1);
|
||||
BF_GLOBALS._player.animate(ANIM_MODE_1, this);
|
||||
BF_GLOBALS._player.setObjectWrapper(new SceneObjectWrapper());
|
||||
BF_GLOBALS._player.enableControl();
|
||||
ADD_PLAYER_MOVER(scene->_destPosition.x, scene->_destPosition.y);
|
||||
remove();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Scene560::Action3::signal() {
|
||||
Scene560 *scene = (Scene560 *)BF_GLOBALS._sceneManager._scene;
|
||||
|
||||
switch (_actionIndex++) {
|
||||
case 0:
|
||||
BF_GLOBALS._player.disableControl();
|
||||
setDelay(10);
|
||||
break;
|
||||
case 1:
|
||||
if (scene->_field380) {
|
||||
setDelay(10);
|
||||
} else {
|
||||
setAction(&scene->_action1, this);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
BF_GLOBALS._sceneManager.changeScene(570);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
bool Scene560::PicturePart::startAction(CursorType action, Event &event) {
|
||||
Scene560 *scene = (Scene560 *)BF_GLOBALS._sceneManager._scene;
|
||||
|
||||
switch (action) {
|
||||
case CURSOR_LOOK:
|
||||
if (scene->_field380) {
|
||||
SceneItem::display2(560, 54);
|
||||
} else if ((scene->_sceneMode != 4) && (scene->_sceneMode != 3)) {
|
||||
scene->_sceneMode = _flag + 4;
|
||||
PlayerMover *mover = new PlayerMover();
|
||||
Common::Point destPos(139, 106);
|
||||
BF_GLOBALS._player.addMover(mover, &destPos, scene);
|
||||
}
|
||||
return true;
|
||||
default:
|
||||
return NamedHotspotExt::startAction(action, event);
|
||||
}
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
bool Scene560::DeskChair::startAction(CursorType action, Event &event) {
|
||||
Scene560 *scene = (Scene560 *)BF_GLOBALS._sceneManager._scene;
|
||||
|
||||
if ((action == CURSOR_USE) && !scene->_field380) {
|
||||
scene->setAction(&scene->_action1);
|
||||
return true;
|
||||
} else {
|
||||
return NamedObject::startAction(action, event);
|
||||
}
|
||||
}
|
||||
|
||||
bool Scene560::Object2::startAction(CursorType action, Event &event) {
|
||||
Scene560 *scene = (Scene560 *)BF_GLOBALS._sceneManager._scene;
|
||||
|
||||
switch (action) {
|
||||
case CURSOR_USE:
|
||||
if (scene->_field380) {
|
||||
SceneItem::display2(560, 54);
|
||||
} else {
|
||||
ADD_PLAYER_MOVER(289, 108);
|
||||
}
|
||||
return true;
|
||||
default:
|
||||
return NamedObjectExt::startAction(action, event);
|
||||
}
|
||||
}
|
||||
|
||||
void Scene560::SafeInset::postInit(SceneObjectList *OwnerList) {
|
||||
Scene560 *scene = (Scene560 *)BF_GLOBALS._sceneManager._scene;
|
||||
FocusObject::postInit();
|
||||
|
||||
_cursorVisage.setVisage(1, 5);
|
||||
|
||||
if (BF_GLOBALS._safeCombination == 172) {
|
||||
setFrame(2);
|
||||
if (BF_INVENTORY.getObjectScene(INV_NICKEL) == 560) {
|
||||
scene->_nickel.postInit();
|
||||
scene->_nickel.setVisage(560);
|
||||
scene->_nickel.setStrip(2);
|
||||
scene->_nickel.setFrame(3);
|
||||
scene->_nickel.fixPriority(252);
|
||||
scene->_nickel.setPosition(Common::Point(181, 140));
|
||||
scene->_nickel.setDetails(560, 47, 48, -1, 1, NULL);
|
||||
BF_GLOBALS._sceneItems.remove(&scene->_nickel);
|
||||
BF_GLOBALS._sceneItems.push_front(&scene->_nickel);
|
||||
}
|
||||
} else {
|
||||
setFrame(1);
|
||||
_item1.setDetails(Rect(143, 68, 159, 85), 560, 49, 50, -1, 1, NULL);
|
||||
_item2.setDetails(Rect(159, 68, 175, 85), 560, 49, 50, -1, 1, NULL);
|
||||
_item3.setDetails(Rect(175, 68, 191, 85), 560, 49, 50, -1, 1, NULL);
|
||||
_item4.setDetails(Rect(143, 86, 159, 102), 560, 49, 50, -1, 1, NULL);
|
||||
_item5.setDetails(Rect(159, 86, 175, 102), 560, 49, 50, -1, 1, NULL);
|
||||
_item6.setDetails(Rect(175, 86, 191, 102), 560, 49, 50, -1, 1, NULL);
|
||||
|
||||
BF_GLOBALS._sceneItems.remove(&_item1);
|
||||
BF_GLOBALS._sceneItems.remove(&_item2);
|
||||
BF_GLOBALS._sceneItems.remove(&_item3);
|
||||
BF_GLOBALS._sceneItems.remove(&_item4);
|
||||
BF_GLOBALS._sceneItems.remove(&_item5);
|
||||
BF_GLOBALS._sceneItems.remove(&_item6);
|
||||
BF_GLOBALS._sceneItems.push_front(&_item6);
|
||||
BF_GLOBALS._sceneItems.push_front(&_item5);
|
||||
BF_GLOBALS._sceneItems.push_front(&_item4);
|
||||
BF_GLOBALS._sceneItems.push_front(&_item3);
|
||||
BF_GLOBALS._sceneItems.push_front(&_item2);
|
||||
BF_GLOBALS._sceneItems.push_front(&_item1);
|
||||
|
||||
_item1._flag = 1;
|
||||
_item2._flag = 2;
|
||||
_item3._flag = 3;
|
||||
_item4._flag = 4;
|
||||
_item5._flag = 5;
|
||||
_item6._flag = 6;
|
||||
|
||||
_digit2.postInit();
|
||||
_digit2.setVisage(560);
|
||||
_digit2.setStrip(3);
|
||||
_digit2.setPosition(Common::Point(151, 94));
|
||||
_digit2.fixPriority(252);
|
||||
|
||||
_digit1.postInit();
|
||||
_digit1.setVisage(560);
|
||||
_digit1.setStrip(3);
|
||||
_digit1.setPosition(Common::Point(167, 94));
|
||||
_digit1.fixPriority(252);
|
||||
|
||||
_digit0.postInit();
|
||||
_digit0.setVisage(560);
|
||||
_digit0.setStrip(3);
|
||||
_digit0.setPosition(Common::Point(183, 94));
|
||||
_digit0.fixPriority(252);
|
||||
|
||||
int amount = (BF_GLOBALS._safeCombination != 0) ? BF_GLOBALS._safeCombination : 1000;
|
||||
|
||||
// Get digit 0 portion
|
||||
int remainder = amount % 10;
|
||||
amount /= 10;
|
||||
_digit0.setFrame(!remainder ? 10 : remainder);
|
||||
|
||||
// Get digit 1 portion
|
||||
remainder = amount % 10;
|
||||
amount /= 10;
|
||||
_digit1.setFrame(!remainder ? 10 : remainder);
|
||||
|
||||
// Get digit 2 portion
|
||||
remainder = amount % 10;
|
||||
_digit2.setFrame(!remainder ? 10 : remainder);
|
||||
}
|
||||
}
|
||||
|
||||
void Scene560::SafeInset::remove() {
|
||||
Scene560 *scene = (Scene560 *)BF_GLOBALS._sceneManager._scene;
|
||||
|
||||
_item1.remove();
|
||||
_item2.remove();
|
||||
_item3.remove();
|
||||
_item4.remove();
|
||||
_item5.remove();
|
||||
_item6.remove();
|
||||
_digit2.remove();
|
||||
_digit1.remove();
|
||||
_digit0.remove();
|
||||
|
||||
scene->_nickel.remove();
|
||||
|
||||
if (BF_GLOBALS._events.getCursor() == CURSOR_USE) {
|
||||
GfxSurface cursor = surfaceFromRes(1, 1, 2);
|
||||
BF_GLOBALS._events.setCursor(cursor);
|
||||
}
|
||||
|
||||
FocusObject::remove();
|
||||
}
|
||||
|
||||
void Scene560::SafeInset::signal() {
|
||||
Scene560 *scene = (Scene560 *)BF_GLOBALS._sceneManager._scene;
|
||||
|
||||
// Recalculate the new total
|
||||
int total = 0;
|
||||
if (_digit2._frame < 10)
|
||||
total = _digit2._frame * 100;
|
||||
if (_digit1._frame < 10)
|
||||
total += _digit1._frame * 10;
|
||||
if (_digit0._frame < 10)
|
||||
total += _digit0._frame;
|
||||
|
||||
BF_GLOBALS._safeCombination = !total ? 1000 : total;
|
||||
|
||||
// Check if the combination is correct
|
||||
if (total == 172) {
|
||||
BF_GLOBALS._sceneObjects->draw();
|
||||
|
||||
if (!BF_GLOBALS.getFlag(fGotPointsForBank)) {
|
||||
BF_GLOBALS._uiElements.addScore(50);
|
||||
BF_GLOBALS.setFlag(fGotPointsForBank);
|
||||
}
|
||||
|
||||
GfxSurface cursor = surfaceFromRes(1, 1, 2);
|
||||
BF_GLOBALS._events.setCursor(cursor);
|
||||
|
||||
_item1.remove();
|
||||
_item2.remove();
|
||||
_item3.remove();
|
||||
_item4.remove();
|
||||
_item5.remove();
|
||||
_item6.remove();
|
||||
_digit2.remove();
|
||||
_digit1.remove();
|
||||
_digit0.remove();
|
||||
|
||||
if (BF_INVENTORY.getObjectScene(INV_NICKEL) == 560) {
|
||||
// Nickel is still in the safe, show it
|
||||
scene->_nickel.postInit();
|
||||
scene->_nickel.setVisage(560);
|
||||
scene->_nickel.setStrip(2);
|
||||
scene->_nickel.setFrame(3);
|
||||
scene->_nickel.fixPriority(252);
|
||||
scene->_nickel.setPosition(Common::Point(181, 140));
|
||||
scene->_nickel.setDetails(560, 47, 48, -1, 1, NULL);
|
||||
BF_GLOBALS._sceneItems.remove(&scene->_nickel);
|
||||
BF_GLOBALS._sceneItems.push_front(&scene->_nickel);
|
||||
}
|
||||
}
|
||||
}
|
||||
void Scene560::SafeInset::process(Event &event) {
|
||||
if (_bounds.contains(event.mousePos)) {
|
||||
if (BF_GLOBALS._events.getCursor() == CURSOR_USE) {
|
||||
GfxSurface cursor = _cursorVisage.getFrame(6);
|
||||
BF_GLOBALS._events.setCursor(cursor);
|
||||
} else {
|
||||
BF_GLOBALS._events.proc1();
|
||||
}
|
||||
|
||||
if ((event.eventType == EVENT_BUTTON_DOWN) && (BF_GLOBALS._events.getCursor() == CURSOR_WALK) &&
|
||||
(event.btnState == 3)) {
|
||||
BF_GLOBALS._events.setCursor(CURSOR_USE);
|
||||
event.handled = true;
|
||||
}
|
||||
} else {
|
||||
GfxSurface cursor = _cursorVisage.getFrame(7);
|
||||
BF_GLOBALS._events.setCursor(cursor);
|
||||
|
||||
if ((event.mousePos.y < BF_INTERFACE_Y) && (event.eventType == EVENT_BUTTON_DOWN)) {
|
||||
// Leave the safe view
|
||||
event.handled = true;
|
||||
remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool Scene560::SafeInset::Item::startAction(CursorType action, Event &event) {
|
||||
Scene560 *scene = (Scene560 *)BF_GLOBALS._sceneManager._scene;
|
||||
|
||||
switch (action) {
|
||||
case CURSOR_USE:
|
||||
switch (_flag) {
|
||||
case 0: {
|
||||
int newFrame = scene->_safeInset._digit2._frame + 1;
|
||||
if (newFrame == 11)
|
||||
newFrame = 1;
|
||||
|
||||
scene->_safeInset._digit2.setFrame(newFrame);
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
int newFrame = scene->_safeInset._digit1._frame + 1;
|
||||
if (newFrame == 11)
|
||||
newFrame = 1;
|
||||
|
||||
scene->_safeInset._digit1.setFrame(newFrame);
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
int newFrame = scene->_safeInset._digit0._frame + 1;
|
||||
if (newFrame == 11)
|
||||
newFrame = 1;
|
||||
|
||||
scene->_safeInset._digit0.setFrame(newFrame);
|
||||
break;
|
||||
}
|
||||
case 3: {
|
||||
int newFrame = scene->_safeInset._digit2._frame - 1;
|
||||
if (newFrame == 0)
|
||||
newFrame = 10;
|
||||
|
||||
scene->_safeInset._digit2.setFrame(newFrame);
|
||||
break;
|
||||
}
|
||||
case 4: {
|
||||
int newFrame = scene->_safeInset._digit1._frame - 1;
|
||||
if (newFrame == 0)
|
||||
newFrame = 10;
|
||||
|
||||
scene->_safeInset._digit1.setFrame(newFrame);
|
||||
break;
|
||||
}
|
||||
case 5: {
|
||||
int newFrame = scene->_safeInset._digit0._frame - 1;
|
||||
if (newFrame == 0)
|
||||
newFrame = 10;
|
||||
|
||||
scene->_safeInset._digit0.setFrame(newFrame);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
scene->_safeInset.signal();
|
||||
scene->_sound1.play(75);
|
||||
return true;
|
||||
default:
|
||||
return NamedHotspotExt::startAction(action, event);
|
||||
}
|
||||
}
|
||||
|
||||
bool Scene560::Nickel::startAction(CursorType action, Event &event) {
|
||||
if (action == CURSOR_USE) {
|
||||
BF_INVENTORY.setObjectScene(INV_NICKEL, 1);
|
||||
BF_GLOBALS._uiElements.addScore(10);
|
||||
remove();
|
||||
return true;
|
||||
} else {
|
||||
return NamedObject::startAction(action, event);
|
||||
}
|
||||
}
|
||||
|
||||
void Scene560::Object5::postInit(SceneObjectList *OwnerList) {
|
||||
FocusObject::postInit();
|
||||
_item1.setDetails(Rect(110, 48, 189, 102), 560, 43, 44, -1, 1, NULL);
|
||||
BF_GLOBALS._sceneItems.remove(&_item1);
|
||||
BF_GLOBALS._sceneItems.push_front(&_item1);
|
||||
}
|
||||
|
||||
void Scene560::Object5::remove() {
|
||||
Scene560 *scene = (Scene560 *)BF_GLOBALS._sceneManager._scene;
|
||||
|
||||
if (scene->_sceneMode != 3)
|
||||
scene->_sceneMode = 0;
|
||||
|
||||
_item1.remove();
|
||||
FocusObject::remove();
|
||||
}
|
||||
|
||||
bool Scene560::Object5::Item1::startAction(CursorType action, Event &event) {
|
||||
Scene560 *scene = (Scene560 *)BF_GLOBALS._sceneManager._scene;
|
||||
|
||||
if (action == CURSOR_USE) {
|
||||
if (!BF_GLOBALS.getFlag(fGotPointsForBox)) {
|
||||
BF_GLOBALS._uiElements.addScore(10);
|
||||
BF_GLOBALS.setFlag(fGotPointsForBox);
|
||||
}
|
||||
|
||||
scene->_safeInset.postInit();
|
||||
scene->_safeInset.setVisage(560);
|
||||
scene->_safeInset.setStrip(2);
|
||||
scene->_safeInset.setPosition(Common::Point(160, 141));
|
||||
scene->_safeInset.fixPriority(251);
|
||||
scene->_safeInset.setDetails(560, 45, 46, -1);
|
||||
|
||||
scene->_sceneMode = 3;
|
||||
scene->_object5.remove();
|
||||
|
||||
GfxSurface cursor = surfaceFromRes(1, 5, 6);
|
||||
BF_GLOBALS._events.setCursor(cursor);
|
||||
return true;
|
||||
} else {
|
||||
return NamedHotspot::startAction(action, event);
|
||||
}
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
bool Scene560::Computer::startAction(CursorType action, Event &event) {
|
||||
Scene560 *scene = (Scene560 *)BF_GLOBALS._sceneManager._scene;
|
||||
|
||||
switch (action) {
|
||||
case CURSOR_USE:
|
||||
if (BF_GLOBALS._bookmark < bTalkedToGrannyAboutSkipsCard) {
|
||||
SceneItem::display2(666, 24);
|
||||
} else {
|
||||
scene->setAction(&scene->_action3);
|
||||
}
|
||||
return true;
|
||||
default:
|
||||
return NamedHotspot::startAction(action, event);
|
||||
}
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
Scene560::Scene560(): SceneExt() {
|
||||
_field380 = _field11EA = 0;
|
||||
}
|
||||
|
||||
void Scene560::postInit(SceneObjectList *OwnerList) {
|
||||
SceneExt::postInit();
|
||||
loadScene(560);
|
||||
setZoomPercents(100, 60, 168, 90);
|
||||
_stripManager.addSpeaker(&_gameTextSpeaker);
|
||||
|
||||
_picture1.setDetails(Rect(121, 16, 139, 35), 560, -1, -1, -1, 1, NULL);
|
||||
_picture2.setDetails(Rect(139, 16, 157, 35), 560, -1, -1, -1, 1, NULL);
|
||||
_picture3.setDetails(Rect(121, 35, 139, 54), 560, -1, -1, -1, 1, NULL);
|
||||
_picture4.setDetails(Rect(139, 35, 157, 54), 560, -1, -1, -1, 1, NULL);
|
||||
_picture1._flag = 3;
|
||||
_picture2._flag = 4;
|
||||
_picture3._flag = 2;
|
||||
_picture4._flag = 1;
|
||||
|
||||
if (BF_GLOBALS._dayNumber == 0)
|
||||
BF_GLOBALS._dayNumber = 3;
|
||||
|
||||
if (BF_GLOBALS._bookmark >= bTalkedToGrannyAboutSkipsCard) {
|
||||
_object2.postInit();
|
||||
_object2.setVisage(560);
|
||||
_object2.setStrip(4);
|
||||
_object2.setFrame(1);
|
||||
_object2.setPosition(Common::Point(295, 37));
|
||||
_object2.setDetails(560, 41, 42, -1, 1, NULL);
|
||||
}
|
||||
|
||||
_deskChair.postInit();
|
||||
_deskChair.setVisage(561);
|
||||
_deskChair.setStrip(3);
|
||||
_deskChair.setPosition(Common::Point(81, 149));
|
||||
_deskChair.fixPriority(151);
|
||||
_deskChair.changeZoom(81);
|
||||
|
||||
if (BF_GLOBALS._sceneManager._previousScene == 570) {
|
||||
// Returning from using computer
|
||||
BF_GLOBALS._events.setCursor(CURSOR_USE);
|
||||
|
||||
_deskChair.hide();
|
||||
|
||||
BF_GLOBALS._player.postInit();
|
||||
BF_GLOBALS._player.setVisage(561);
|
||||
BF_GLOBALS._player.setStrip(2);
|
||||
BF_GLOBALS._player.setFrame(BF_GLOBALS._player.getFrameCount());
|
||||
BF_GLOBALS._player._moveDiff.x = 11;
|
||||
BF_GLOBALS._player.setPosition(Common::Point(96, 138));
|
||||
BF_GLOBALS._player.changeZoom(81);
|
||||
|
||||
_deskChair.setFrame(BF_GLOBALS._player._frame);
|
||||
_deskChair.setStrip(BF_GLOBALS._player._strip);
|
||||
_deskChair.setPosition(BF_GLOBALS._player._position);
|
||||
|
||||
_field11EA = 0;
|
||||
_field380 = 1;
|
||||
} else {
|
||||
// Entering study through doorway
|
||||
_field11EA = 0;
|
||||
_field380 = 0;
|
||||
|
||||
BF_GLOBALS._player.postInit();
|
||||
BF_GLOBALS._player.setVisage(563);
|
||||
BF_GLOBALS._player.animate(ANIM_MODE_1, NULL);
|
||||
BF_GLOBALS._player.setObjectWrapper(new SceneObjectWrapper());
|
||||
BF_GLOBALS._player.setPosition(Common::Point(79, 110));
|
||||
BF_GLOBALS._player._moveDiff.x = 11;
|
||||
BF_GLOBALS._player.changeZoom(-1);
|
||||
BF_GLOBALS._player.disableControl();
|
||||
|
||||
_sceneMode = 10;
|
||||
ADD_MOVER(BF_GLOBALS._player, 85, 115);
|
||||
}
|
||||
|
||||
_computer.setDetails(Rect(16, 77, 58, 107), 560, 2, -1, -1, 1, NULL);
|
||||
_deskChair.setDetails(560, 3, -1, -1, 1, NULL);
|
||||
_chair.setDetails(Rect(163, 64, 196, 102), 560, 13, 25, 36, 1, NULL);
|
||||
_lamp.setDetails(Rect(197, 43, 214, 56), 560, 7, 19, 30, 1, NULL);
|
||||
_item4.setDetails(Rect(121, 18, 156, 54), 560, 8, 20, 31, 1, NULL);
|
||||
_trophy.setDetails(Rect(259, 52, 275, 63), 560, 10, 22, 33, 1, NULL);
|
||||
_watercolours.setDetails(Rect(214, 48, 239, 64), 560, 12, 24, 35, 1, NULL);
|
||||
_fileCabinets.setDetails(Rect(0, 47, 49, 100), 560, 14, 26, 37, 1, NULL);
|
||||
_certificate.setDetails(Rect(280, 51, 292, 62), 560, 11, 23, 34, 1, NULL);
|
||||
_bookcase.setDetails(Rect(176, 0, 319, 103), 560, 9, 21, 32, 1, NULL);
|
||||
_desk.setDetails(1, 560, 6, 10, 29, 1);
|
||||
_item12.setDetails(Rect(62, 16, 96, 101), 560, 51, 52, 53, 1, NULL);
|
||||
_carpet.setDetails(Rect(0, 103, 319, 167), 560, 5, 16, 28, 1, NULL);
|
||||
_office.setDetails(Rect(0, 0, 320, 168), 560, 4, -1, -1, 1, NULL);
|
||||
|
||||
BF_GLOBALS._player.enableControl();
|
||||
}
|
||||
|
||||
void Scene560::signal() {
|
||||
switch (_sceneMode) {
|
||||
case 1:
|
||||
_object6.hide();
|
||||
_object6.remove();
|
||||
BF_GLOBALS._player.enableControl();
|
||||
break;
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
BF_GLOBALS._player._strip = 4;
|
||||
BF_GLOBALS._player._frame = 1;
|
||||
BF_GLOBALS._player.disableControl();
|
||||
|
||||
_object6.postInit();
|
||||
_object6.setVisage(560);
|
||||
_object6.setStrip(1);
|
||||
_object6.setFrame(_sceneMode - 4);
|
||||
_object6.setPosition(Common::Point(160, 141));
|
||||
_object6.fixPriority(250);
|
||||
_stripManager.start(_sceneMode + 5595, this);
|
||||
_sceneMode = 1;
|
||||
break;
|
||||
case 9:
|
||||
_object6._strip = 4;
|
||||
_object6._frame = 1;
|
||||
|
||||
if (BF_GLOBALS._safeCombination == 172) {
|
||||
if (_sceneMode != 3) {
|
||||
_safeInset.postInit();
|
||||
_safeInset.setVisage(560);
|
||||
_safeInset.setStrip(2);
|
||||
_safeInset.setPosition(Common::Point(160, 141));
|
||||
_safeInset.fixPriority(251);
|
||||
_safeInset.setDetails(560, 45, 46, -1);
|
||||
|
||||
_sceneMode = 3;
|
||||
}
|
||||
} else if ((_sceneMode != 3) && (_sceneMode != 4)) {
|
||||
if (!BF_GLOBALS.getFlag(fGotPointsForPunch)) {
|
||||
BF_GLOBALS._uiElements.addScore(10);
|
||||
BF_GLOBALS.setFlag(fGotPointsForPunch);
|
||||
}
|
||||
|
||||
_object5.postInit();
|
||||
_object5.setVisage(560);
|
||||
_object5.setStrip(2);
|
||||
_object5.setFrame(4);
|
||||
_object5.setPosition(Common::Point(160, 141));
|
||||
_object5.fixPriority(251);
|
||||
_object5.setDetails(560, 43, 44, -1);
|
||||
|
||||
_sceneMode = 4;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
_field11EA = 0;
|
||||
BF_GLOBALS._player.enableControl();
|
||||
break;
|
||||
case 11:
|
||||
BF_GLOBALS._sceneManager.changeScene(270);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Scene560::process(Event &event) {
|
||||
if ((event.eventType == EVENT_BUTTON_DOWN) && (BF_GLOBALS._events.getCursor() == CURSOR_WALK) &&
|
||||
(_field380 == 1) && !_action) {
|
||||
_destPosition = event.mousePos;
|
||||
BF_GLOBALS._player.disableControl();
|
||||
setAction(&_action2);
|
||||
|
||||
event.handled = true;
|
||||
}
|
||||
|
||||
SceneExt::process(event);
|
||||
}
|
||||
|
||||
void Scene560::dispatch() {
|
||||
if (!_field11EA && (BF_GLOBALS._player._position.y < 105)) {
|
||||
_field11EA = 1;
|
||||
BF_GLOBALS._player.disableControl();
|
||||
BF_GLOBALS._sceneManager.changeScene(270);
|
||||
}
|
||||
|
||||
SceneExt::dispatch();
|
||||
}
|
||||
|
||||
} // End of namespace BlueForce
|
||||
|
||||
} // End of namespace TsAGE
|
||||
|
@ -136,11 +136,109 @@ public:
|
||||
|
||||
Scene551();
|
||||
virtual void synchronize(Serializer &s);
|
||||
void postInit(SceneObjectList *OwnerList);
|
||||
void postInit(SceneObjectList *OwnerList = NULL);
|
||||
virtual void signal();
|
||||
virtual void dispatch();
|
||||
};
|
||||
|
||||
class Scene560: public SceneExt {
|
||||
/* Objects */
|
||||
class DeskChair: public NamedObject {
|
||||
public:
|
||||
virtual bool startAction(CursorType action, Event &event);
|
||||
};
|
||||
class Object2: public NamedObjectExt {
|
||||
public:
|
||||
virtual bool startAction(CursorType action, Event &event);
|
||||
};
|
||||
class SafeInset: public FocusObject {
|
||||
/* Items */
|
||||
class Item: public NamedHotspotExt {
|
||||
public:
|
||||
virtual bool startAction(CursorType action, Event &event);
|
||||
};
|
||||
public:
|
||||
NamedObject _digit0, _digit1, _digit2;
|
||||
Item _item1, _item2, _item3, _item4, _item5, _item6;
|
||||
Visage _cursorVisage;
|
||||
|
||||
virtual Common::String getClassName() { return "Scene560_SafeInset"; }
|
||||
virtual void postInit(SceneObjectList *OwnerList = NULL);
|
||||
virtual void remove();
|
||||
virtual void signal();
|
||||
virtual void process(Event &event);
|
||||
};
|
||||
class Nickel: public NamedObject {
|
||||
public:
|
||||
virtual bool startAction(CursorType action, Event &event);
|
||||
};
|
||||
class Object5: public FocusObject {
|
||||
/* Items */
|
||||
class Item1: public NamedHotspot {
|
||||
public:
|
||||
virtual bool startAction(CursorType action, Event &event);
|
||||
};
|
||||
public:
|
||||
Item1 _item1;
|
||||
|
||||
virtual Common::String getClassName() { return "Scene560_Object5"; }
|
||||
virtual void postInit(SceneObjectList *OwnerList = NULL);
|
||||
virtual void remove();
|
||||
};
|
||||
|
||||
/* Item groups */
|
||||
class PicturePart: public NamedHotspotExt {
|
||||
public:
|
||||
virtual Common::String getClassName() { return "Scene560_Group1"; }
|
||||
virtual bool startAction(CursorType action, Event &event);
|
||||
};
|
||||
|
||||
/* Items */
|
||||
class Computer: public NamedHotspot {
|
||||
public:
|
||||
virtual bool startAction(CursorType action, Event &event);
|
||||
};
|
||||
|
||||
/* Actions */
|
||||
class Action1: public Action {
|
||||
public:
|
||||
virtual void signal();
|
||||
};
|
||||
class Action2: public Action {
|
||||
public:
|
||||
virtual void signal();
|
||||
};
|
||||
class Action3: public Action {
|
||||
public:
|
||||
virtual void signal();
|
||||
};
|
||||
public:
|
||||
Action1 _action1;
|
||||
Action2 _action2;
|
||||
Action3 _action3;
|
||||
SpeakerGameText _gameTextSpeaker;
|
||||
DeskChair _deskChair;
|
||||
Object2 _object2;
|
||||
SafeInset _safeInset;
|
||||
Nickel _nickel;
|
||||
Object5 _object5;
|
||||
NamedObject _object6;
|
||||
PicturePart _picture1, _picture2, _picture3, _picture4;;
|
||||
Computer _computer;
|
||||
NamedHotspot _chair, _lamp, _item4, _trophy, _watercolours, _fileCabinets;
|
||||
NamedHotspot _certificate, _bookcase, _desk, _carpet, _item12, _office;
|
||||
ASound _sound1;
|
||||
int _field380, _field11EA;
|
||||
Common::Point _destPosition;
|
||||
|
||||
Scene560();
|
||||
virtual void postInit(SceneObjectList *OwnerList = NULL);
|
||||
virtual void signal();
|
||||
virtual void process(Event &event);
|
||||
virtual void dispatch();
|
||||
|
||||
};
|
||||
|
||||
} // End of namespace BlueForce
|
||||
|
||||
} // End of namespace TsAGE
|
||||
|
@ -123,6 +123,7 @@ public:
|
||||
uint32 getFrameNumber() const { return _frameNumber; }
|
||||
void delay(int numFrames);
|
||||
bool isInventoryIcon() const { return _currentCursor < 256; }
|
||||
void proc1() { warning("TODO: EventsClass::proc1"); }
|
||||
|
||||
virtual void listenerSynchronize(Serializer &s);
|
||||
static void loadNotifierProc(bool postFlag);
|
||||
|
@ -193,6 +193,7 @@ void BlueForceGlobals::synchronize(Serializer &s) {
|
||||
s.syncAsSint16LE(_v4CEA4);
|
||||
s.syncAsSint16LE(_marinaWomanCtr);
|
||||
s.syncAsSint16LE(_v4CEB6);
|
||||
s.syncAsSint16LE(_safeCombination);
|
||||
s.syncAsSint16LE(_v4CEC0);
|
||||
s.syncAsSint16LE(_v4CEC2);
|
||||
s.syncAsSint16LE(_v4CEC8);
|
||||
@ -238,6 +239,7 @@ void BlueForceGlobals::reset() {
|
||||
_v4CEA4 = 0;
|
||||
_marinaWomanCtr = 0;
|
||||
_v4CEB6 = 0;
|
||||
_safeCombination = 0;
|
||||
_v4CEC0 = 0;
|
||||
_v4CEC2 = 0;
|
||||
_v4CEC8 = 1;
|
||||
|
@ -171,6 +171,7 @@ public:
|
||||
int _v4CEA4;
|
||||
int _marinaWomanCtr;
|
||||
int _v4CEB6;
|
||||
int _safeCombination;
|
||||
int _v4CEC0;
|
||||
int _v4CEC2;
|
||||
int _v4CEC8;
|
||||
|
Loading…
Reference in New Issue
Block a user