diff --git a/engines/chewy/r_event.cpp b/engines/chewy/r_event.cpp index 73da01a3906..78a82847b35 100644 --- a/engines/chewy/r_event.cpp +++ b/engines/chewy/r_event.cpp @@ -172,16 +172,132 @@ void check_ged_action(int16 index) { } int16 ged_user_func(int16 idx_nr) { -#define GED_FUNC(NUM) case NUM: idx_nr = Room##NUM::gedUserFunc(idx_nr) switch (idx_nr) { - GED_FUNC(40); - GED_FUNC(41); - GED_FUNC(42); + case 40: + switch (_G(spieler).PersonRoomNr[P_CHEWY]) { + case 8: + if (_G(spieler).R8GTuer) + idx_nr = 0; + break; + + case 9: + if (!_G(spieler).R9Gitter) + idx_nr = 0; + break; + + case 16: + if (!_G(spieler).R16F5Exit) + idx_nr = 0; + break; + + case 17: + if (_G(spieler).R17Location != 1) + idx_nr = 0; + break; + + case 21: + if (!_G(spieler).R21Laser2Weg) + idx_nr = 0; + break; + + case 31: + if (!_G(spieler).R31KlappeZu) + idx_nr = 0; + break; + + case 41: + if (!_G(spieler).R41LolaOk) + idx_nr = 0; + break; + + case 52: + if (!_G(spieler).R52LichtAn) + idx_nr = 2; + else + idx_nr = 4; + break; + + case 71: + if (!_G(spieler).flags28_2 || !_G(spieler).flags29_4) + idx_nr = 0; + else + idx_nr = 4; + break; + + case 76: + return idx_nr; + + case 84: + if (!_G(spieler).flags31_1) + _G(spieler).flags31_4 = true; + break; + + case 86: + if (!_G(spieler).flags32_2) + idx_nr = 0; + break; + + case 94: + if (!_G(spieler).flags35_10) + idx_nr = 0; + break; + + case 97: + if (!_G(spieler).flags35_80) + idx_nr = 0; + break; + + default: + break; + } + break; + + case 41: + switch (_G(spieler).PersonRoomNr[P_CHEWY]) { + case 17: + if (_G(spieler).R17Location != 2) + idx_nr = 0; + break; + + case 21: + if (!_G(spieler).R21Laser1Weg) { + idx_nr = 0; + } else + idx_nr = 3; + break; + + case 37: + if (!_G(spieler).R37Kloppe) + idx_nr = 0; + break; + + case 52: + if (!_G(spieler).R52TuerAuf) + idx_nr = 2; + else + idx_nr = 4; + break; + + case 97: + if (!_G(spieler).flags36_20) + idx_nr = 0; + break; + + default: + break; + } + break; + + case 42: + if (_G(spieler).PersonRoomNr[P_CHEWY] == 97) { + if (!_G(spieler).flags37_1) + idx_nr = 0; + } + break; default: break; } -#undef GED_FUNC return idx_nr; } diff --git a/engines/chewy/rooms/room40.cpp b/engines/chewy/rooms/room40.cpp index 485be85e375..14a08c1147e 100644 --- a/engines/chewy/rooms/room40.cpp +++ b/engines/chewy/rooms/room40.cpp @@ -155,87 +155,6 @@ bool Room40::timer(int16 t_nr, int16 ani_nr) { return false; } -int16 Room40::gedUserFunc(int16 idx_nr) { - switch (_G(spieler).PersonRoomNr[P_CHEWY]) { - case 8: - if (_G(spieler).R8GTuer) - idx_nr = 0; - break; - - case 9: - if (!_G(spieler).R9Gitter) - idx_nr = 0; - break; - - case 16: - if (!_G(spieler).R16F5Exit) - idx_nr = 0; - break; - - case 17: - if (_G(spieler).R17Location != 1) - idx_nr = 0; - break; - - case 21: - if (!_G(spieler).R21Laser2Weg) - idx_nr = 0; - break; - - case 31: - if (!_G(spieler).R31KlappeZu) - idx_nr = 0; - break; - - case 41: - if (!_G(spieler).R41LolaOk) - idx_nr = 0; - break; - - case 52: - if (!_G(spieler).R52LichtAn) - idx_nr = 2; - else - idx_nr = 4; - break; - - case 71: - if (!_G(spieler).flags28_2 || !_G(spieler).flags29_4) - idx_nr = 0; - else - idx_nr = 4; - break; - - case 76: - return idx_nr; - - case 84: - if (!_G(spieler).flags31_1) - _G(spieler).flags31_4 = true; - break; - - case 86: - if (!_G(spieler).flags32_2) - idx_nr = 0; - break; - - case 94: - if (!_G(spieler).flags35_10) - idx_nr = 0; - break; - - case 97: - if (!_G(spieler).flags35_80) - idx_nr = 0; - break; - - default: - break; - } - - return idx_nr; -} - void Room40::move_train(int16 mode) { _G(spieler).R40TrainMove = false; hide_cur(); diff --git a/engines/chewy/rooms/room40.h b/engines/chewy/rooms/room40.h index 0b6318068bb..96f328125c0 100644 --- a/engines/chewy/rooms/room40.h +++ b/engines/chewy/rooms/room40.h @@ -36,7 +36,6 @@ public: static void entry(int16 eib_nr); static void xit(int16 eib_nr); static bool timer(int16 t_nr, int16 ani_nr); - static int16 gedUserFunc(int16 idx_nr); static int16 use_mr_pumpkin(); static void talk_police(); diff --git a/engines/chewy/rooms/room41.cpp b/engines/chewy/rooms/room41.cpp index 6a89069e3af..1855dc151bc 100644 --- a/engines/chewy/rooms/room41.cpp +++ b/engines/chewy/rooms/room41.cpp @@ -79,44 +79,6 @@ void Room41::xit() { _G(spieler).R41TrainCount--; } -int16 Room41::gedUserFunc(int16 idx_nr) { - switch (_G(spieler).PersonRoomNr[P_CHEWY]) { - case 17: - if (_G(spieler).R17Location != 2) - idx_nr = 0; - break; - - case 21: - if (!_G(spieler).R21Laser1Weg) { - idx_nr = 0; - } else - idx_nr = 3; - break; - - case 37: - if (!_G(spieler).R37Kloppe) - idx_nr = 0; - break; - - case 52: - if (!_G(spieler).R52TuerAuf) - idx_nr = 2; - else - idx_nr = 4; - break; - - case 97: - if (!_G(spieler).flags36_20) - idx_nr = 0; - break; - - default: - break; - } - - return idx_nr; -} - void Room41::setup_func() { if (_G(spieler).PersonRoomNr[P_HOWARD] == 41) { calc_person_look(); diff --git a/engines/chewy/rooms/room41.h b/engines/chewy/rooms/room41.h index ba1294fda29..318c4c8cfc2 100644 --- a/engines/chewy/rooms/room41.h +++ b/engines/chewy/rooms/room41.h @@ -35,8 +35,6 @@ private: public: static void entry(); static void xit(); - static int16 gedUserFunc(int16 idx_nr); - static int16 use_brief(); static int16 use_lola(); static int16 use_kasse(); diff --git a/engines/chewy/rooms/room42.cpp b/engines/chewy/rooms/room42.cpp index c38db90eac3..b8cf9c564f2 100644 --- a/engines/chewy/rooms/room42.cpp +++ b/engines/chewy/rooms/room42.cpp @@ -71,15 +71,6 @@ void Room42::xit() { } } -int16 Room42::gedUserFunc(int16 idx_nr) { - if (_G(spieler).PersonRoomNr[P_CHEWY] == 97) { - if (!_G(spieler).flags37_1) - idx_nr = 0; - } - - return idx_nr; -} - void Room42::setup_func() { if (!_G(spieler).R42HoToBeamter) calc_person_look(); diff --git a/engines/chewy/rooms/room42.h b/engines/chewy/rooms/room42.h index c4a65aad515..a948a4d2300 100644 --- a/engines/chewy/rooms/room42.h +++ b/engines/chewy/rooms/room42.h @@ -33,13 +33,11 @@ private: public: static void entry(); static void xit(); - static int16 gedUserFunc(int16 idx_nr); static void talk_beamter(); static int16 use_psack(); static int16 use_beamter(); static void dia_beamter(int16 str_end_nr); - static void calc_xit(); }; } // namespace Rooms