diff --git a/engines/chewy/rooms/room70.cpp b/engines/chewy/rooms/room70.cpp index 0595da99e39..2dad0ae2442 100644 --- a/engines/chewy/rooms/room70.cpp +++ b/engines/chewy/rooms/room70.cpp @@ -35,5 +35,50 @@ void Room70::entry(int16 eib_nr) { void Room70::xit(int16 eib_nr) { } +void Room70::setup_func() { + calc_person_look(); + + const int posX = spieler_vector[P_CHEWY].Xypos[0]; + + int howDestX, nicDestX; + if (posX > 40) { + howDestX = 52; + nicDestX = 100; + } else if (posX < 230) { + howDestX = 83; + nicDestX = 163; + } else if (posX < 445) { + howDestX = 261; + nicDestX = 329; + } else { + howDestX = 493; + nicDestX = 543; + } + + go_auto_xy(howDestX, 111, P_HOWARD, P_RIGHT); + go_auto_xy(nicDestX, 110, P_NICHELLE, P_RIGHT); +} + +void Room70::proc1() { + _G(cur_hide_flag) = 0; + hide_cur(); + set_person_pos(236, 110, P_CHEWY, P_RIGHT); + set_person_pos(263, 85, P_NICHELLE, P_RIGHT); + set_person_pos(285, 78, P_HOWARD, P_RIGHT); + go_auto_xy(266, 113, P_HOWARD, ANI_VOR); + show_cur(); +} + +void Room70::proc2() { + set_person_pos(31, 118, P_CHEWY, P_RIGHT); + set_person_pos(71, 104, P_NICHELLE, P_RIGHT); + set_person_pos(6, 111, P_HOWARD, P_RIGHT); +} + +void Room70::proc3() { + set_person_pos(587, 114, P_CHEWY, P_LEFT); + set_person_pos(613, 103, P_NICHELLE, P_LEFT); + set_person_pos(561, 112, P_HOWARD, P_LEFT); +} } // namespace Rooms } // namespace Chewy diff --git a/engines/chewy/rooms/room70.h b/engines/chewy/rooms/room70.h index 02977f0f6e5..8bee95e297e 100644 --- a/engines/chewy/rooms/room70.h +++ b/engines/chewy/rooms/room70.h @@ -29,6 +29,10 @@ class Room70 { public: static void entry(int16 eib_nr); static void xit(int16 eib_nr); + static void setup_func(); + static void proc1(); + static void proc2(); + static void proc3(); }; } // namespace Rooms diff --git a/engines/chewy/rooms/room75.cpp b/engines/chewy/rooms/room75.cpp index 377f6cd2ede..368f3b8b04f 100644 --- a/engines/chewy/rooms/room75.cpp +++ b/engines/chewy/rooms/room75.cpp @@ -22,17 +22,75 @@ #include "chewy/defines.h" #include "chewy/events.h" #include "chewy/global.h" -#include "chewy/ani_dat.h" -#include "chewy/room.h" #include "chewy/rooms/room75.h" +#include "chewy/rooms/room70.h" namespace Chewy { namespace Rooms { void Room75::entry(int16 eib_nr) { + det->enable_sound(0, 0); + det->play_sound(0, 0); + _G(spieler).ScrollxStep = 2; + _G(spieler).ZoomXy[P_HOWARD][0] = 70; + _G(spieler).ZoomXy[P_HOWARD][1] = 100; + _G(spieler).ZoomXy[P_NICHELLE][0] = 70; + _G(spieler).ZoomXy[P_NICHELLE][1] = 100; + spieler_mi[P_HOWARD].Mode = true; + spieler_mi[P_NICHELLE].Mode = true; + _G(zoom_horizont) = 110; + flags.ZoomMov = true; + _G(zoom_mov_fak) = 3; + SetUpScreenFunc = Room70::setup_func; + + if (flags.LoadGame) + return; + + switch (eib_nr) { + case 103: + _G(spieler.scrollx = 188); + proc1(); + break; + case 104: + Room70::proc3(); + break; + case 111: + Room70::proc2(); + break; + default: + break; + } } void Room75::xit(int16 eib_nr) { + _G(spieler).ScrollxStep = 1; + + if (_G(spieler).PersonRoomNr[P_HOWARD] != 75) + return; + + switch (eib_nr) { + case 115: + _G(spieler).PersonRoomNr[P_HOWARD] = 73; + _G(spieler).PersonRoomNr[P_NICHELLE] = 73; + break; + case 116: + case 117: + _G(spieler).PersonRoomNr[P_HOWARD] = 70; + _G(spieler).PersonRoomNr[P_NICHELLE] = 70; + break; + default: + break; + } +} + +void Room75::proc1() { + _G(cur_hide_flag) = 0; + hide_cur(); + set_person_pos(363, 110, P_CHEWY, P_LEFT); + set_person_pos(322, 85, P_NICHELLE, P_RIGHT); + set_person_pos(317, 96, P_HOWARD, P_RIGHT); + go_auto_xy(318, 110, P_NICHELLE, ANI_VOR); + show_cur(); } } // namespace Rooms diff --git a/engines/chewy/rooms/room75.h b/engines/chewy/rooms/room75.h index db545a0b912..1977baf07a3 100644 --- a/engines/chewy/rooms/room75.h +++ b/engines/chewy/rooms/room75.h @@ -29,6 +29,7 @@ class Room75 { public: static void entry(int16 eib_nr); static void xit(int16 eib_nr); + static void proc1(); }; } // namespace Rooms