From 5310d49e5305cc5159d875cc8a8699ef6cc4b1b0 Mon Sep 17 00:00:00 2001 From: Littleboy Date: Tue, 3 Jun 2014 20:02:10 -0400 Subject: LASTEXPRESS: Rename Server* classes to Waiter* --- engines/lastexpress/entities/abbot.cpp | 10 +- engines/lastexpress/entities/alexei.cpp | 2 +- engines/lastexpress/entities/anna.cpp | 14 +- engines/lastexpress/entities/august.cpp | 26 +- engines/lastexpress/entities/boutarel.cpp | 8 +- engines/lastexpress/entities/chapters.cpp | 16 +- engines/lastexpress/entities/ivo.cpp | 6 +- engines/lastexpress/entities/milos.cpp | 4 +- engines/lastexpress/entities/pascale.cpp | 4 +- engines/lastexpress/entities/rebecca.cpp | 18 +- engines/lastexpress/entities/servers0.cpp | 1034 ----------------------------- engines/lastexpress/entities/servers0.h | 168 ----- engines/lastexpress/entities/servers1.cpp | 782 ---------------------- engines/lastexpress/entities/servers1.h | 163 ----- engines/lastexpress/entities/tatiana.cpp | 4 +- engines/lastexpress/entities/waiter1.cpp | 1034 +++++++++++++++++++++++++++++ engines/lastexpress/entities/waiter1.h | 168 +++++ engines/lastexpress/entities/waiter2.cpp | 782 ++++++++++++++++++++++ engines/lastexpress/entities/waiter2.h | 163 +++++ engines/lastexpress/game/entities.cpp | 8 +- engines/lastexpress/lastexpress.cpp | 2 +- engines/lastexpress/module.mk | 4 +- engines/lastexpress/shared.h | 8 +- engines/lastexpress/sound/sound.cpp | 10 +- 24 files changed, 2219 insertions(+), 2219 deletions(-) delete mode 100644 engines/lastexpress/entities/servers0.cpp delete mode 100644 engines/lastexpress/entities/servers0.h delete mode 100644 engines/lastexpress/entities/servers1.cpp delete mode 100644 engines/lastexpress/entities/servers1.h create mode 100644 engines/lastexpress/entities/waiter1.cpp create mode 100644 engines/lastexpress/entities/waiter1.h create mode 100644 engines/lastexpress/entities/waiter2.cpp create mode 100644 engines/lastexpress/entities/waiter2.h (limited to 'engines') diff --git a/engines/lastexpress/entities/abbot.cpp b/engines/lastexpress/entities/abbot.cpp index 5393410add..1581916e07 100644 --- a/engines/lastexpress/entities/abbot.cpp +++ b/engines/lastexpress/entities/abbot.cpp @@ -415,7 +415,7 @@ IMPLEMENT_FUNCTION(22, Abbot, haveLunch) break; case kActionNone: - Entity::timeCheckSavepoint(kTime1971000, params->param1, kEntityAbbot, kEntityServers0, kAction218586752); + Entity::timeCheckSavepoint(kTime1971000, params->param1, kEntityAbbot, kEntityWaiter1, kAction218586752); if (getState()->time > kTime1989000 && getEntities()->isSomebodyInsideRestaurantOrSalon()) { getData()->inventoryItem = kItemNone; @@ -476,7 +476,7 @@ IMPLEMENT_FUNCTION(23, Abbot, leaveLunch) case 1: getEntities()->updatePositionExit(kEntityAbbot, kCarRestaurant, 67); - getSavePoints()->push(kEntityAbbot, kEntityServers0, kAction270068760); + getSavePoints()->push(kEntityAbbot, kEntityWaiter1, kAction270068760); getSavePoints()->push(kEntityAbbot, kEntityAnna, kAction238936000); getEntities()->drawSequenceRight(kEntityAbbot, "804DS"); @@ -1324,7 +1324,7 @@ IMPLEMENT_FUNCTION(41, Abbot, chapter4Handler) break; case kActionNone: - Entity::timeCheckSavepoint(kTime2358000, params->param1, kEntityAbbot, kEntityServers0, kAction218128129); + Entity::timeCheckSavepoint(kTime2358000, params->param1, kEntityAbbot, kEntityWaiter1, kAction218128129); if (getState()->time > kTime2389500 && getEntities()->isSomebodyInsideRestaurantOrSalon()) setup_leaveDinner(); @@ -1368,7 +1368,7 @@ IMPLEMENT_FUNCTION(42, Abbot, leaveDinner) case 1: getEntities()->updatePositionExit(kEntityAbbot, kCarRestaurant, 67); - getSavePoints()->push(kEntityAbbot, kEntityServers0, kAction270068760); + getSavePoints()->push(kEntityAbbot, kEntityWaiter1, kAction270068760); getEntities()->drawSequenceRight(kEntityAbbot, "804DS"); if (getEntities()->isInRestaurant(kEntityPlayer)) @@ -1779,7 +1779,7 @@ IMPLEMENT_FUNCTION(49, Abbot, catchCath) getData()->location = kLocationInsideCompartment; getSavePoints()->call(kEntityAbbot, kEntityTables4, kActionDrawTablesWithChairs, "029G"); - getSavePoints()->push(kEntityAbbot, kEntityServers0, kAction270068760); + getSavePoints()->push(kEntityAbbot, kEntityWaiter1, kAction270068760); getSavePoints()->push(kEntityAbbot, kEntityBoutarel, kAction125039808); getObjects()->update(kObjectCompartment2, kEntityAbbot, kObjectLocation1, kCursorHandKnock, kCursorHand); getObjects()->update(kObjectHandleInsideBathroom, kEntityAbbot, kObjectLocation1, kCursorHandKnock, kCursorHand); diff --git a/engines/lastexpress/entities/alexei.cpp b/engines/lastexpress/entities/alexei.cpp index 9b56fca39f..5ea3ff4898 100644 --- a/engines/lastexpress/entities/alexei.cpp +++ b/engines/lastexpress/entities/alexei.cpp @@ -607,7 +607,7 @@ IMPLEMENT_FUNCTION(19, Alexei, returnCompartment) case 7: getEntities()->updatePositionExit(kEntityAlexei, kCarRestaurant, 63); - getSavePoints()->push(kEntityAlexei, kEntityServers1, kAction302996448); + getSavePoints()->push(kEntityAlexei, kEntityWaiter2, kAction302996448); setCallback(8); setup_draw("934"); diff --git a/engines/lastexpress/entities/anna.cpp b/engines/lastexpress/entities/anna.cpp index ff65be9772..3354964af2 100644 --- a/engines/lastexpress/entities/anna.cpp +++ b/engines/lastexpress/entities/anna.cpp @@ -907,7 +907,7 @@ IMPLEMENT_FUNCTION(23, Anna, waitingDinner) case kActionDefault: getEntities()->drawSequenceLeft(kEntityAnna, "001D"); - getSavePoints()->push(kEntityAnna, kEntityServers0, kAction270410280); + getSavePoints()->push(kEntityAnna, kEntityWaiter1, kAction270410280); getSavePoints()->push(kEntityAnna, kEntityTables0, kAction136455232); setCallback(1); @@ -931,7 +931,7 @@ IMPLEMENT_FUNCTION(23, Anna, waitingDinner) break; case 3: - getSavePoints()->push(kEntityAnna, kEntityServers0, kAction203859488); + getSavePoints()->push(kEntityAnna, kEntityWaiter1, kAction203859488); setup_waitingDinner2(); break; } @@ -964,7 +964,7 @@ IMPLEMENT_FUNCTION(24, Anna, waitingDinner2) break; case 2: - getSavePoints()->push(kEntityAnna, kEntityServers0, kAction136702400); + getSavePoints()->push(kEntityAnna, kEntityWaiter1, kAction136702400); setup_eatingDinner(); break; } @@ -1034,7 +1034,7 @@ IMPLEMENT_FUNCTION(26, Anna, leaveDinner) case 1: getEntities()->updatePositionExit(kEntityAnna, kCarRestaurant, 62); - getSavePoints()->push(kEntityAnna, kEntityServers0, kAction237485916); + getSavePoints()->push(kEntityAnna, kEntityWaiter1, kAction237485916); getEntities()->drawSequenceRight(kEntityAnna, "801DS"); if (getEntities()->isInRestaurant(kEntityPlayer)) @@ -2145,7 +2145,7 @@ label_callback_4: break; case 2: - getSavePoints()->push(kEntityAnna, kEntityServers0, kAction218983616); + getSavePoints()->push(kEntityAnna, kEntityWaiter1, kAction218983616); break; case 3: @@ -2285,7 +2285,7 @@ IMPLEMENT_FUNCTION(51, Anna, afterLunch) getData()->location = kLocationInsideCompartment; getEntities()->drawSequenceLeft(kEntityAnna, "112B"); getEntities()->updatePositionExit(kEntityAnna, kCarRestaurant, 57); - getSavePoints()->push(kEntityAnna, kEntityServers1, kAction219377792); + getSavePoints()->push(kEntityAnna, kEntityWaiter2, kAction219377792); break; case 2: @@ -3473,7 +3473,7 @@ IMPLEMENT_FUNCTION(69, Anna, goSalon4) case 3: getData()->location = kLocationInsideCompartment; getEntities()->drawSequenceLeft(kEntityAnna, "127B"); - getSavePoints()->push(kEntityAnna, kEntityServers1, kAction258136010); + getSavePoints()->push(kEntityAnna, kEntityWaiter2, kAction258136010); break; case 4: diff --git a/engines/lastexpress/entities/august.cpp b/engines/lastexpress/entities/august.cpp index c5029537ad..a63a104ae4 100644 --- a/engines/lastexpress/entities/august.cpp +++ b/engines/lastexpress/entities/august.cpp @@ -1162,7 +1162,7 @@ IMPLEMENT_FUNCTION(25, August, chapter1Handler) break; case 1: - getSavePoints()->push(kEntityAugust, kEntityServers0, kAction204704037); + getSavePoints()->push(kEntityAugust, kEntityWaiter1, kAction204704037); getEntities()->drawSequenceRight(kEntityAugust, "803DS"); if (getEntities()->isInRestaurant(kEntityPlayer)) getEntities()->updateFrame(kEntityAugust); @@ -1195,7 +1195,7 @@ IMPLEMENT_FUNCTION(25, August, chapter1Handler) break; case 5: - getSavePoints()->push(kEntityAugust, kEntityServers0, kAction204704037); + getSavePoints()->push(kEntityAugust, kEntityWaiter1, kAction204704037); getEntities()->drawSequenceRight(kEntityAugust, "803DS"); if (getEntities()->isInRestaurant(kEntityPlayer)) getEntities()->updateFrame(kEntityAugust); @@ -1366,7 +1366,7 @@ IMPLEMENT_FUNCTION(28, August, function28) params->param1 = kItemInvalid; getEntities()->drawSequenceLeft(kEntityAugust, "010B"); - getSavePoints()->push(kEntityAugust, kEntityServers0, kAction304061224); + getSavePoints()->push(kEntityAugust, kEntityWaiter1, kAction304061224); getData()->inventoryItem = (InventoryItem)params->param1; break; @@ -1376,13 +1376,13 @@ IMPLEMENT_FUNCTION(28, August, function28) break; case 1: - getSavePoints()->push(kEntityAugust, kEntityServers0, kAction203859488); + getSavePoints()->push(kEntityAugust, kEntityWaiter1, kAction203859488); getData()->inventoryItem = (InventoryItem)params->param1; getEntities()->drawSequenceLeft(kEntityAugust, "010B"); break; case 2: - getSavePoints()->push(kEntityAugust, kEntityServers0, kAction136702400); + getSavePoints()->push(kEntityAugust, kEntityWaiter1, kAction136702400); getEntities()->drawSequenceLeft(kEntityAugust, "010B"); setup_function29(); break; @@ -1399,7 +1399,7 @@ IMPLEMENT_FUNCTION(28, August, function28) case kAction170016384: getData()->inventoryItem = kItemNone; - getEntities()->drawSequenceLeft(kEntityServers0, "BLANK"); + getEntities()->drawSequenceLeft(kEntityWaiter1, "BLANK"); getEntities()->drawSequenceLeft(kEntityAugust, "010G"); setCallback(2); @@ -1551,7 +1551,7 @@ IMPLEMENT_FUNCTION(30, August, restaurant) break; case 3: - getSavePoints()->push(kEntityAugust, kEntityServers0, kAction292758554); + getSavePoints()->push(kEntityAugust, kEntityWaiter1, kAction292758554); getSavePoints()->push(kEntityAugust, kEntityAnna, kAction122358304); getEntities()->drawSequenceLeft(kEntityAugust, "001K"); getSound()->playSound(kEntityAugust, "AUG1003"); @@ -1815,7 +1815,7 @@ IMPLEMENT_FUNCTION(36, August, chapter2Handler) break; case kActionNone: - Entity::timeCheckSavepoint(kTime1755000, params->param2, kEntityAugust, kEntityServers0, kAction252568704); + Entity::timeCheckSavepoint(kTime1755000, params->param2, kEntityAugust, kEntityWaiter1, kAction252568704); if (getState()->time > kTime1773000 && params->param1 && getEntities()->isSomebodyInsideRestaurantOrSalon()) { getData()->inventoryItem = kItemNone; @@ -1863,7 +1863,7 @@ IMPLEMENT_FUNCTION(36, August, chapter2Handler) break; case 3: - getSavePoints()->push(kEntityAugust, kEntityServers0, kAction286534136); + getSavePoints()->push(kEntityAugust, kEntityWaiter1, kAction286534136); setCallback(4); setup_updateEntity(kCarGreenSleeping, kPosition_6470); @@ -1882,7 +1882,7 @@ IMPLEMENT_FUNCTION(36, August, chapter2Handler) if (!getEvent(kEventAugustGoodMorning)) getData()->inventoryItem = kItemInvalid; - getSavePoints()->push(kEntityAugust, kEntityServers0, kAction219522616); + getSavePoints()->push(kEntityAugust, kEntityWaiter1, kAction219522616); getEntities()->drawSequenceLeft(kEntityAugust, "016B"); params->param1 = 1; break; @@ -3044,7 +3044,7 @@ IMPLEMENT_FUNCTION(60, August, function60) } if (pushSavepoint) - getSavePoints()->push(kEntityAugust, kEntityServers0, kAction207330561); + getSavePoints()->push(kEntityAugust, kEntityWaiter1, kAction207330561); if (!params->param1) break; @@ -3074,7 +3074,7 @@ IMPLEMENT_FUNCTION(60, August, function60) break; case 2: - getSavePoints()->push(kEntityAugust, kEntityServers0, kAction286403504); + getSavePoints()->push(kEntityAugust, kEntityWaiter1, kAction286403504); setup_function61(); break; } @@ -3199,7 +3199,7 @@ IMPLEMENT_FUNCTION(62, August, function62) case 5: getEntities()->drawSequenceLeft(kEntityAugust, "122B"); - getSavePoints()->push(kEntityAugust, kEntityServers1, kAction291721418); + getSavePoints()->push(kEntityAugust, kEntityWaiter2, kAction291721418); break; } break; diff --git a/engines/lastexpress/entities/boutarel.cpp b/engines/lastexpress/entities/boutarel.cpp index 979381afb0..32507b0d63 100644 --- a/engines/lastexpress/entities/boutarel.cpp +++ b/engines/lastexpress/entities/boutarel.cpp @@ -310,7 +310,7 @@ IMPLEMENT_FUNCTION_I(14, Boutarel, function14, bool) break; case 2: - getSavePoints()->push(kEntityBoutarel, kEntityServers1, kAction326144276); + getSavePoints()->push(kEntityBoutarel, kEntityWaiter2, kAction326144276); getEntities()->drawSequenceRight(kEntityBoutarel, "812DS"); if (getEntities()->isInRestaurant(kEntityPlayer)) getEntities()->updateFrame(kEntityBoutarel); @@ -674,7 +674,7 @@ IMPLEMENT_FUNCTION(20, Boutarel, function20) break; case 2: - getSavePoints()->push(kEntityBoutarel, kEntityServers1, kAction256200848); + getSavePoints()->push(kEntityBoutarel, kEntityWaiter2, kAction256200848); break; case 3: @@ -937,7 +937,7 @@ IMPLEMENT_FUNCTION(29, Boutarel, function29) case kActionNone: if (Entity::updateParameter(params->param2, getState()->time, 450)) { - getSavePoints()->push(kEntityBoutarel, kEntityServers1, kAction256200848); + getSavePoints()->push(kEntityBoutarel, kEntityWaiter2, kAction256200848); } if (!params->param1) @@ -1086,7 +1086,7 @@ IMPLEMENT_FUNCTION(33, Boutarel, function33) break; case 2: - getSavePoints()->push(kEntityBoutarel, kEntityServers1, kAction256200848); + getSavePoints()->push(kEntityBoutarel, kEntityWaiter2, kAction256200848); break; case 3: diff --git a/engines/lastexpress/entities/chapters.cpp b/engines/lastexpress/entities/chapters.cpp index fe977a577f..b100e30ad4 100644 --- a/engines/lastexpress/entities/chapters.cpp +++ b/engines/lastexpress/entities/chapters.cpp @@ -44,13 +44,13 @@ #include "lastexpress/entities/pascale.h" #include "lastexpress/entities/rebecca.h" #include "lastexpress/entities/salko.h" -#include "lastexpress/entities/servers0.h" -#include "lastexpress/entities/servers1.h" #include "lastexpress/entities/sophie.h" #include "lastexpress/entities/tatiana.h" #include "lastexpress/entities/vassili.h" #include "lastexpress/entities/verges.h" #include "lastexpress/entities/vesna.h" +#include "lastexpress/entities/waiter1.h" +#include "lastexpress/entities/waiter2.h" #include "lastexpress/entities/yasmin.h" #include "lastexpress/game/action.h" @@ -207,8 +207,8 @@ IMPLEMENT_FUNCTION(6, Chapters, chapter1End) case kActionDefault: RESET_ENTITY_STATE(kEntityPascale, Pascale, setup_function19); - RESET_ENTITY_STATE(kEntityServers0, Servers0, setup_function22); - RESET_ENTITY_STATE(kEntityServers1, Servers1, setup_function16); + RESET_ENTITY_STATE(kEntityWaiter1, Waiter1, setup_function22); + RESET_ENTITY_STATE(kEntityWaiter2, Waiter2, setup_function16); RESET_ENTITY_STATE(kEntityCooks, Cooks, setup_function7); RESET_ENTITY_STATE(kEntityMertens, Mertens, setup_function42); @@ -1518,8 +1518,8 @@ label_callback_4: RESET_ENTITY_STATE(kEntityAugust, August, setup_function65); RESET_ENTITY_STATE(kEntityMertens, Mertens, setup_function48); RESET_ENTITY_STATE(kEntityCoudert, Coudert, setup_function53); - RESET_ENTITY_STATE(kEntityServers0, Servers0, setup_chapter4Handler); - RESET_ENTITY_STATE(kEntityServers1, Servers1, setup_chapter4Handler); + RESET_ENTITY_STATE(kEntityWaiter1, Waiter1, setup_chapter4Handler); + RESET_ENTITY_STATE(kEntityWaiter2, Waiter2, setup_chapter4Handler); RESET_ENTITY_STATE(kEntityPascale, Pascale, setup_chapter4Handler); RESET_ENTITY_STATE(kEntityVerges, Verges, setup_chapter4Handler); RESET_ENTITY_STATE(kEntityTatiana, Tatiana, setup_function49); @@ -1539,8 +1539,8 @@ label_callback_4: getSavePoints()->push(kEntityChapters, kEntityAnna, kAction201431954); getSavePoints()->push(kEntityChapters, kEntityMertens, kAction201431954); getSavePoints()->push(kEntityChapters, kEntityCoudert, kAction201431954); - getSavePoints()->push(kEntityChapters, kEntityServers0, kAction201431954); - getSavePoints()->push(kEntityChapters, kEntityServers1, kAction201431954); + getSavePoints()->push(kEntityChapters, kEntityWaiter1, kAction201431954); + getSavePoints()->push(kEntityChapters, kEntityWaiter2, kAction201431954); getSavePoints()->push(kEntityChapters, kEntityPascale, kAction201431954); getSavePoints()->push(kEntityChapters, kEntityVerges, kAction201431954); diff --git a/engines/lastexpress/entities/ivo.cpp b/engines/lastexpress/entities/ivo.cpp index b7697d0c52..cf18f4335a 100644 --- a/engines/lastexpress/entities/ivo.cpp +++ b/engines/lastexpress/entities/ivo.cpp @@ -464,7 +464,7 @@ IMPLEMENT_FUNCTION(20, Ivo, function20) break; case kActionDefault: - getSavePoints()->push(kEntityIvo, kEntityServers1, kAction189688608); + getSavePoints()->push(kEntityIvo, kEntityWaiter2, kAction189688608); getEntities()->drawSequenceLeft(kEntityIvo, "023B"); break; @@ -474,7 +474,7 @@ IMPLEMENT_FUNCTION(20, Ivo, function20) break; case 1: - getSavePoints()->push(kEntityIvo, kEntityServers1, kAction101106391); + getSavePoints()->push(kEntityIvo, kEntityWaiter2, kAction101106391); getEntities()->drawSequenceLeft(kEntityIvo, "023B"); params->param1 = 1; break; @@ -485,7 +485,7 @@ IMPLEMENT_FUNCTION(20, Ivo, function20) break; case 3: - getSavePoints()->push(kEntityIvo, kEntityServers1, kAction236237423); + getSavePoints()->push(kEntityIvo, kEntityWaiter2, kAction236237423); setup_function21(); break; } diff --git a/engines/lastexpress/entities/milos.cpp b/engines/lastexpress/entities/milos.cpp index 601187b672..90a397c7cb 100644 --- a/engines/lastexpress/entities/milos.cpp +++ b/engines/lastexpress/entities/milos.cpp @@ -722,7 +722,7 @@ IMPLEMENT_FUNCTION(15, Milos, chapter1Handler) break; case kActionNone: - Entity::timeCheckSavepoint(kTime1071000, params->param3, kEntityMilos, kEntityServers1, kAction223002560); + Entity::timeCheckSavepoint(kTime1071000, params->param3, kEntityMilos, kEntityWaiter2, kAction223002560); if (getState()->time > kTime1089000 && getEntities()->isSomebodyInsideRestaurantOrSalon()) { setup_function16(); @@ -801,7 +801,7 @@ IMPLEMENT_FUNCTION(16, Milos, function16) break; case 1: - getSavePoints()->push(kEntityMilos, kEntityServers1, kAction269485588); + getSavePoints()->push(kEntityMilos, kEntityWaiter2, kAction269485588); getSavePoints()->push(kEntityMilos, kEntityIvo, kAction125242096); getEntities()->drawSequenceRight(kEntityMilos, "807DS"); if (getEntities()->isInRestaurant(kEntityPlayer)) diff --git a/engines/lastexpress/entities/pascale.cpp b/engines/lastexpress/entities/pascale.cpp index b6356a0acb..69e5fe02ea 100644 --- a/engines/lastexpress/entities/pascale.cpp +++ b/engines/lastexpress/entities/pascale.cpp @@ -584,8 +584,8 @@ IMPLEMENT_FUNCTION(18, Pascale, function18) if (getState()->time > kTime1242000 && !params->param1) { params->param1 = 1; - getSavePoints()->push(kEntityPascale, kEntityServers0, kAction101632192); - getSavePoints()->push(kEntityPascale, kEntityServers1, kAction101632192); + getSavePoints()->push(kEntityPascale, kEntityWaiter1, kAction101632192); + getSavePoints()->push(kEntityPascale, kEntityWaiter2, kAction101632192); getSavePoints()->push(kEntityPascale, kEntityCooks, kAction101632192); getSavePoints()->push(kEntityPascale, kEntityVerges, kAction101632192); diff --git a/engines/lastexpress/entities/rebecca.cpp b/engines/lastexpress/entities/rebecca.cpp index 05211663bd..40175ad8c4 100644 --- a/engines/lastexpress/entities/rebecca.cpp +++ b/engines/lastexpress/entities/rebecca.cpp @@ -437,7 +437,7 @@ IMPLEMENT_FUNCTION(19, Rebecca, function19) break; case 2: - getSavePoints()->push(kEntityRebecca, kEntityServers0, kAction337548856); + getSavePoints()->push(kEntityRebecca, kEntityWaiter1, kAction337548856); getEntities()->drawSequenceRight(kEntityRebecca, "810DS"); if (getEntities()->isInRestaurant(kEntityPlayer)) getEntities()->updateFrame(kEntityRebecca); @@ -850,7 +850,7 @@ IMPLEMENT_FUNCTION(24, Rebecca, function24) break; case kActionNone: - Entity::timeCheckSavepoint(kTime1134000, params->param2, kEntityRebecca, kEntityServers0, kAction223712416); + Entity::timeCheckSavepoint(kTime1134000, params->param2, kEntityRebecca, kEntityWaiter1, kAction223712416); if (!params->param1) break; @@ -920,7 +920,7 @@ IMPLEMENT_FUNCTION(24, Rebecca, function24) break; case 8: - getSavePoints()->push(kEntityRebecca, kEntityServers0, kAction136702400); + getSavePoints()->push(kEntityRebecca, kEntityWaiter1, kAction136702400); getEntities()->drawSequenceLeft(kEntityRebecca, "012G"); params->param1 = 1; break; @@ -928,7 +928,7 @@ IMPLEMENT_FUNCTION(24, Rebecca, function24) break; case kAction123712592: - getEntities()->drawSequenceLeft(kEntityServers0, "BLANK"); + getEntities()->drawSequenceLeft(kEntityWaiter1, "BLANK"); getEntities()->drawSequenceLeft(kEntityRebecca, "012E"); setCallback(8); @@ -1244,7 +1244,7 @@ IMPLEMENT_FUNCTION(34, Rebecca, function34) params->param2 = kTimeInvalid; - getSavePoints()->push(kEntityRebecca, kEntityServers0, kAction223712416); + getSavePoints()->push(kEntityRebecca, kEntityWaiter1, kAction223712416); } Entity::timeCheckCallback(kTime2052000, params->param3, 1, WRAP_SETUP_FUNCTION(Rebecca, setup_function19)); @@ -1280,7 +1280,7 @@ IMPLEMENT_FUNCTION(34, Rebecca, function34) break; case 4: - getSavePoints()->push(kEntityRebecca, kEntityServers0, kAction136702400); + getSavePoints()->push(kEntityRebecca, kEntityWaiter1, kAction136702400); getEntities()->drawSequenceLeft(kEntityRebecca, "012G"); params->param1 = 1; break; @@ -1288,7 +1288,7 @@ IMPLEMENT_FUNCTION(34, Rebecca, function34) break; case kAction123712592: - getEntities()->drawSequenceLeft(kEntityServers0, "BLANK"); + getEntities()->drawSequenceLeft(kEntityWaiter1, "BLANK"); getSound()->playSound(kEntityRebecca, "Reb3003"); setCallback(4); @@ -1624,7 +1624,7 @@ IMPLEMENT_FUNCTION(44, Rebecca, function44) params->param3 = kTimeInvalid; - getSavePoints()->push(kEntityRebecca, kEntityServers0, kAction223712416); + getSavePoints()->push(kEntityRebecca, kEntityWaiter1, kAction223712416); } label_next: @@ -1684,7 +1684,7 @@ label_callback_2: break; case 4: - getSavePoints()->push(kEntityRebecca, kEntityServers0, kAction136702400); + getSavePoints()->push(kEntityRebecca, kEntityWaiter1, kAction136702400); getEntities()->drawSequenceLeft(kEntityRebecca, "012G"); params->param2 = 1; break; diff --git a/engines/lastexpress/entities/servers0.cpp b/engines/lastexpress/entities/servers0.cpp deleted file mode 100644 index 590efa7157..0000000000 --- a/engines/lastexpress/entities/servers0.cpp +++ /dev/null @@ -1,1034 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include "lastexpress/entities/servers0.h" - -#include "lastexpress/game/entities.h" -#include "lastexpress/game/logic.h" -#include "lastexpress/game/object.h" -#include "lastexpress/game/savepoint.h" -#include "lastexpress/game/state.h" - -#include "lastexpress/lastexpress.h" - -namespace LastExpress { - -#define HANDLE_TABLE(index, param, callback, function) \ - if (ENTITY_PARAM(index, param)) { \ - setCallback(callback); \ - function(); \ - break; \ - } - -Servers0::Servers0(LastExpressEngine *engine) : Entity(engine, kEntityServers0) { - ADD_CALLBACK_FUNCTION(Servers0, callSavepoint); - ADD_CALLBACK_FUNCTION(Servers0, updateFromTime); - ADD_CALLBACK_FUNCTION(Servers0, draw); - ADD_CALLBACK_FUNCTION(Servers0, updatePosition); - ADD_CALLBACK_FUNCTION(Servers0, callbackActionOnDirection); - ADD_CALLBACK_FUNCTION(Servers0, playSound); - ADD_CALLBACK_FUNCTION(Servers0, function7); - ADD_CALLBACK_FUNCTION(Servers0, function8); - ADD_CALLBACK_FUNCTION(Servers0, function9); - ADD_CALLBACK_FUNCTION(Servers0, function10); - ADD_CALLBACK_FUNCTION(Servers0, chapter1); - ADD_CALLBACK_FUNCTION(Servers0, function12); - ADD_CALLBACK_FUNCTION(Servers0, function13); - ADD_CALLBACK_FUNCTION(Servers0, function14); - ADD_CALLBACK_FUNCTION(Servers0, function15); - ADD_CALLBACK_FUNCTION(Servers0, function16); - ADD_CALLBACK_FUNCTION(Servers0, function17); - ADD_CALLBACK_FUNCTION(Servers0, function18); - ADD_CALLBACK_FUNCTION(Servers0, function19); - ADD_CALLBACK_FUNCTION(Servers0, chapter1Handler); - ADD_CALLBACK_FUNCTION(Servers0, function21); - ADD_CALLBACK_FUNCTION(Servers0, function22); - ADD_CALLBACK_FUNCTION(Servers0, chapter2); - ADD_CALLBACK_FUNCTION(Servers0, chapter2Handler); - ADD_CALLBACK_FUNCTION(Servers0, function25); - ADD_CALLBACK_FUNCTION(Servers0, function26); - ADD_CALLBACK_FUNCTION(Servers0, chapter3); - ADD_CALLBACK_FUNCTION(Servers0, chapter3Handler); - ADD_CALLBACK_FUNCTION(Servers0, augustAnnaDateOrder); - ADD_CALLBACK_FUNCTION(Servers0, function30); - ADD_CALLBACK_FUNCTION(Servers0, chapter4); - ADD_CALLBACK_FUNCTION(Servers0, chapter4Handler); - ADD_CALLBACK_FUNCTION(Servers0, augustOrderSteak); - ADD_CALLBACK_FUNCTION(Servers0, augustServeDuck); - ADD_CALLBACK_FUNCTION(Servers0, function35); - ADD_CALLBACK_FUNCTION(Servers0, chapter5); - ADD_CALLBACK_FUNCTION(Servers0, chapter5Handler); - ADD_NULL_FUNCTION(); -} - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION_SIIS(1, Servers0, callSavepoint, EntityIndex, ActionIndex) - Entity::callSavepoint(savepoint, true); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION_NOSETUP(2, Servers0, updateFromTime) - Entity::updateFromTime(savepoint); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION_S(3, Servers0, draw) - Entity::draw(savepoint, true); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION_NOSETUP(4, Servers0, updatePosition) - Entity::updatePosition(savepoint, true); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION_NOSETUP(5, Servers0, callbackActionOnDirection) - EXPOSE_PARAMS(EntityData::EntityParametersIIII); - - switch (savepoint.action) { - default: - break; - - case kActionNone: - if (getData()->direction != kDirectionRight) - callbackAction(); - break; - - case kActionExitCompartment: - callbackAction(); - break; - - case kActionExcuseMeCath: - if (!params->param1) { - getSound()->excuseMe(kEntityServers0); - params->param1 = 1; - } - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION_S(6, Servers0, playSound) - Entity::playSound(savepoint); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(7, Servers0, function7) - switch (savepoint.action) { - default: - break; - - case kActionDefault: - getData()->entityPosition = kPosition_5800; - getData()->location = kLocationOutsideCompartment; - - ENTITY_PARAM(0, 3) = 0; - - setCallback(1); - setup_draw("911"); - break; - - case kActionCallback: - switch (getCallback()) { - default: - break; - - case 1: - getEntities()->clearSequences(kEntityServers0); - getSavePoints()->push(kEntityServers0, kEntityRebecca, kAction123712592); - break; - - case 2: - getEntities()->clearSequences(kEntityServers0); - getData()->entityPosition = kPosition_5900; - callbackAction(); - break; - } - break; - - case kAction136702400: - setCallback(2); - setup_draw("913"); - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(8, Servers0, function8) - serveTable(savepoint, "911", kEntityTables3, "010L", "010M", "913", &ENTITY_PARAM(1, 2)); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(9, Servers0, function9) - switch (savepoint.action) { - default: - break; - - case kActionDefault: - getData()->entityPosition = kPosition_5800; - getData()->location = kLocationOutsideCompartment; - - setCallback(1); - setup_draw("915"); - break; - - case kActionCallback: - switch (getCallback()) { - default: - break; - - case 1: - getSavePoints()->push(kEntityServers0, kEntityAbbot, kAction122358304); - getEntities()->drawSequenceLeft(kEntityServers0, "029D"); - - setCallback(2); - setup_playSound(getProgress().chapter == kChapter3 ? "Abb3016" : "Abb4001"); - break; - - case 2: - getSavePoints()->push(kEntityServers0, kEntityAbbot, kAction122288808); - - setCallback(3); - setup_draw("917"); - break; - - case 3: - getData()->entityPosition = kPosition_5900; - getEntities()->clearSequences(kEntityServers0); - ENTITY_PARAM(2, 2) = 0; - ENTITY_PARAM(1, 6) = 0; - - callbackAction(); - break; - } - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(10, Servers0, function10) - serveTable(savepoint, "916", kEntityTables4, "014E", "014F", "918", &ENTITY_PARAM(2, 3), false); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(11, Servers0, chapter1) - switch (savepoint.action) { - default: - break; - - case kActionNone: - setup_chapter1Handler(); - break; - - case kActionDefault: - getSavePoints()->addData(kEntityServers0, kAction270410280, 0); - getSavePoints()->addData(kEntityServers0, kAction304061224, 1); - getSavePoints()->addData(kEntityServers0, kAction252568704, 10); - getSavePoints()->addData(kEntityServers0, kAction286534136, 11); - getSavePoints()->addData(kEntityServers0, kAction218983616, 12); - getSavePoints()->addData(kEntityServers0, kAction218586752, 13); - getSavePoints()->addData(kEntityServers0, kAction207330561, 14); - getSavePoints()->addData(kEntityServers0, kAction286403504, 16); - getSavePoints()->addData(kEntityServers0, kAction218128129, 17); - getSavePoints()->addData(kEntityServers0, kAction270068760, 18); - getSavePoints()->addData(kEntityServers0, kAction223712416, 2); - getSavePoints()->addData(kEntityServers0, kAction237485916, 5); - getSavePoints()->addData(kEntityServers0, kAction188893625, 8); - getSavePoints()->addData(kEntityServers0, kAction204704037, 6); - getSavePoints()->addData(kEntityServers0, kAction292758554, 7); - getSavePoints()->addData(kEntityServers0, kAction337548856, 9); - - getData()->entityPosition = kPosition_5900; - getData()->location = kLocationOutsideCompartment; - getData()->car = kCarRestaurant; - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(12, Servers0, function12) - handleServer(savepoint, "907", kEntityAnna, kAction268773672, &ENTITY_PARAM(0, 1)); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(13, Servers0, function13) - handleServer(savepoint, "911", kEntityAugust, kAction268773672, &ENTITY_PARAM(0, 2), "010F"); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(14, Servers0, function14) - handleServer(savepoint, "908", kEntityAnna, kAction170016384, &ENTITY_PARAM(0, 4)); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(15, Servers0, function15) - handleServer(savepoint, "912", kEntityAugust, kAction170016384, &ENTITY_PARAM(0, 5)); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(16, Servers0, function16) - serveTable(savepoint, "907", kEntityTables0, "001N", "001P", "909", &ENTITY_PARAM(0, 6)); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(17, Servers0, function17) - serveTable(savepoint, "915", kEntityTables4, "014E", "014F", "917", &ENTITY_PARAM(1, 1), true, false, 67); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(18, Servers0, function18) - serveTable(savepoint, "911", kEntityTables3, "010L", "010H", "913", &ENTITY_PARAM(0, 7)); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(19, Servers0, function19) - serveTable(savepoint, "911", kEntityTables3, "010L", "010M", "913", &ENTITY_PARAM(0, 8), true, true); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(20, Servers0, chapter1Handler) - switch (savepoint.action) { - default: - break; - - case kActionNone: - if (params->param2) { - if (Entity::updateParameter(params->param3, getState()->time, 2700)) { - ENTITY_PARAM(0, 4) = 1; - params->param2 = 0; - } - } - - if (params->param1) { - if (Entity::updateParameter(params->param4, getState()->time, 4500)) { - ENTITY_PARAM(0, 5) = 1; - params->param1 = 0; - } - } - - if (!getEntities()->isInKitchen(kEntityServers0) && !getEntities()->isSomebodyInsideRestaurantOrSalon()) - break; - - HANDLE_TABLE(0, 1, 1, setup_function12); - HANDLE_TABLE(0, 2, 2, setup_function13); - HANDLE_TABLE(0, 3, 3, setup_function7); - HANDLE_TABLE(0, 4, 4, setup_function14); - HANDLE_TABLE(0, 5, 5, setup_function15); - HANDLE_TABLE(0, 6, 6, setup_function16); - HANDLE_TABLE(1, 1, 7, setup_function17); - HANDLE_TABLE(0, 7, 8, setup_function18); - HANDLE_TABLE(0, 8, 9, setup_function19); - HANDLE_TABLE(1, 2, 10, setup_function8); - break; - - case kActionCallback: - switch (getCallback()) { - default: - break; - - case 10: - getSavePoints()->push(kEntityServers0, kEntityPascale, kAction352703104); - setup_function21(); - break; - - case 11: - case 12: - getEntities()->clearSequences(kEntityServers0); - getData()->entityPosition = kPosition_5900; - - if (getCallback() == 11) - params->param2 = 1; - else - params->param1 = 1; - break; - - case 13: - case 14: - getEntities()->clearSequences(kEntityServers0); - getData()->entityPosition = kPosition_5900; - break; - } - break; - - case kAction136702400: - setCallback(savepoint.entity2 == kEntityAnna ? 13 : 14); - setup_draw(savepoint.entity2 == kEntityAnna ? "909" : "913"); - break; - - case kAction203859488: - setCallback(savepoint.entity2 == kEntityAnna ? 11 : 12); - setup_draw(savepoint.entity2 == kEntityAnna ? "910" : "913"); - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(21, Servers0, function21) - switch (savepoint.action) { - default: - break; - - case kActionDefault: - getData()->entityPosition = kPosition_5900; - break; - - case kAction101632192: - setup_function22(); - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(22, Servers0, function22) - if (savepoint.action == kActionDefault) { - getData()->entityPosition = kPosition_5900; - getData()->location = kLocationOutsideCompartment; - getData()->car = kCarRestaurant; - - getEntities()->clearSequences(kEntityServers0); - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(23, Servers0, chapter2) - switch (savepoint.action) { - default: - break; - - case kActionNone: - setup_chapter2Handler(); - break; - - case kActionDefault: - getEntities()->clearSequences(kEntityServers0); - - getData()->entityPosition = kPosition_5900; - getData()->location = kLocationOutsideCompartment; - getData()->car = kCarRestaurant; - getData()->clothes = kClothes1; - getData()->inventoryItem = kItemNone; - - ENTITY_PARAM(1, 3) = 0; - ENTITY_PARAM(1, 4) = 0; - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(24, Servers0, chapter2Handler) - switch (savepoint.action) { - default: - break; - - case kActionNone: - if (!getEntities()->isInKitchen(kEntityServers0) || !getEntities()->isSomebodyInsideRestaurantOrSalon()) - break; - - HANDLE_TABLE(1, 3, 1, setup_function25); - HANDLE_TABLE(1, 4, 2, setup_function26); - break; - - case kActionCallback: - if (getCallback() == 1) - HANDLE_TABLE(1, 4, 2, setup_function26); - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(25, Servers0, function25) - switch (savepoint.action) { - default: - break; - - case kActionDefault: - getData()->entityPosition = kPosition_5800; - getData()->location = kLocationOutsideCompartment; - - setCallback(1); - setup_draw("957"); - break; - - case kActionCallback: - switch (getCallback()) { - default: - break; - - case 1: - getSavePoints()->push(kEntityServers0, kEntityAugust, kAction123712592); - getEntities()->drawSequenceLeft(kEntityServers0, "BLANK"); - break; - - case 2: - getData()->entityPosition = kPosition_5900; - getEntities()->clearSequences(kEntityServers0); - ENTITY_PARAM(1, 3) = 0; - - callbackAction(); - break; - } - break; - - case kAction219522616: - setCallback(2); - setup_draw("959"); - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(26, Servers0, function26) - serveTable(savepoint, "957", kEntityTables0, "016E", "016D", "959", &ENTITY_PARAM(1, 4)); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(27, Servers0, chapter3) - switch (savepoint.action) { - default: - break; - - case kActionNone: - setup_chapter3Handler(); - break; - - case kActionDefault: - getEntities()->clearSequences(kEntityServers0); - - getData()->entityPosition = kPosition_5900; - getData()->location = kLocationOutsideCompartment; - getData()->car = kCarRestaurant; - getData()->clothes = kClothes1; - getData()->inventoryItem = kItemNone; - - ENTITY_PARAM(0, 3) = 0; - ENTITY_PARAM(1, 2) = 0; - ENTITY_PARAM(1, 5) = 0; - ENTITY_PARAM(1, 6) = 0; - ENTITY_PARAM(2, 3) = 0; - ENTITY_PARAM(2, 4) = 0; - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(28, Servers0, chapter3Handler) - switch (savepoint.action) { - default: - break; - - case kActionNone: - if (!getEntities()->isInKitchen(kEntityServers1) || !getEntities()->isSomebodyInsideRestaurantOrSalon()) - break; - - if (ENTITY_PARAM(1, 5)) { - setCallback(1); - setup_augustAnnaDateOrder(); - break; - } - -label_callback_1: - if (ENTITY_PARAM(1, 6)) { - setCallback(2); - setup_function9(); - break; - } - -label_callback_2: - if (ENTITY_PARAM(2, 4)) { - setCallback(3); - setup_function30(); - break; - } - -label_callback_3: - if (ENTITY_PARAM(2, 3)) { - setCallback(4); - setup_function10(); - break; - } - -label_callback_4: - if (ENTITY_PARAM(0, 3)) { - setCallback(5); - setup_function7(); - break; - } - -label_callback_5: - if (ENTITY_PARAM(1, 2)) { - setCallback(6); - setup_function8(); - break; - } - break; - - case kActionCallback: - switch (getCallback()) { - default: - break; - - case 1: - goto label_callback_1; - - case 2: - goto label_callback_2; - - case 3: - goto label_callback_3; - - case 4: - goto label_callback_4; - - case 5: - goto label_callback_5; - } - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(29, Servers0, augustAnnaDateOrder) - switch (savepoint.action) { - default: - break; - - case kActionDefault: - getData()->entityPosition = kPosition_5800; - getData()->location = kLocationOutsideCompartment; - - setCallback(1); - setup_draw("911"); - break; - - case kActionCallback: - switch (getCallback()) { - default: - break; - - case 1: - getSavePoints()->push(kEntityServers0, kEntityAnna, kAction122358304); - getEntities()->drawSequenceLeft(kEntityServers0, "026D"); - - setCallback(2); - setup_playSound("Ann3138"); - break; - - case 2: - getSavePoints()->push(kEntityServers0, kEntityAnna, kAction122288808); - - setCallback(3); - setup_draw("913"); - break; - - case 3: - getData()->entityPosition = kPosition_5900; - getEntities()->clearSequences(kEntityServers0); - ENTITY_PARAM(1, 5) = 0; - - callbackAction(); - break; - } - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(30, Servers0, function30) - switch (savepoint.action) { - default: - break; - - case kActionDefault: - getData()->entityPosition = kPosition_5800; - getData()->location = kLocationOutsideCompartment; - - setCallback(1); - setup_draw("916"); - break; - - case kActionCallback: - switch (getCallback()) { - default: - break; - - case 1: - getSavePoints()->push(kEntityServers0, kEntityAbbot, kAction122358304); - getEntities()->drawSequenceLeft(kEntityServers0, "029D"); - - setCallback(2); - setup_playSound("Abb3016a"); - break; - - case 2: - getSavePoints()->push(kEntityServers0, kEntityAbbot, kAction122288808); - - setCallback(3); - setup_draw("918"); - break; - - case 3: - getData()->entityPosition = kPosition_5900; - getEntities()->clearSequences(kEntityServers0); - ENTITY_PARAM(2, 4) = 0; - - callbackAction(); - break; - } - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(31, Servers0, chapter4) - switch (savepoint.action) { - default: - break; - - case kActionNone: - setup_chapter4Handler(); - break; - - case kActionDefault: - getEntities()->clearSequences(kEntityServers0); - - getData()->entityPosition = kPosition_5900; - getData()->location = kLocationOutsideCompartment; - getData()->car = kCarRestaurant; - getData()->clothes = kClothesDefault; - getData()->inventoryItem = kItemNone; - - ENTITY_PARAM(0, 3) = 0; - ENTITY_PARAM(1, 7) = 0; - ENTITY_PARAM(1, 8) = 0; - ENTITY_PARAM(2, 1) = 0; - ENTITY_PARAM(2, 2) = 0; - ENTITY_PARAM(2, 3) = 0; - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(32, Servers0, chapter4Handler) - switch (savepoint.action) { - default: - break; - - case kActionNone: - if (Entity::updateParameter(params->param2, getState()->time, 3600)) { - ENTITY_PARAM(1, 8) = 1; - params->param1 = 0; - } - - if (!getEntities()->isInKitchen(kEntityServers1) || !getEntities()->isSomebodyInsideRestaurantOrSalon()) - break; - - if (ENTITY_PARAM(1, 7)) { - setCallback(1); - setup_augustOrderSteak(); - break; - } - -label_callback_1: - if (ENTITY_PARAM(1, 8)) { - setCallback(2); - setup_augustServeDuck(); - break; - } - -label_callback_2: - if (ENTITY_PARAM(2, 1)) { - setCallback(3); - setup_function35(); - break; - } - -label_callback_3: - if (ENTITY_PARAM(2, 2)) { - setCallback(4); - setup_function9(); - break; - } - -label_callback_4: - if (ENTITY_PARAM(2, 3)) { - setCallback(5); - setup_function10(); - break; - } - -label_callback_5: - if (ENTITY_PARAM(0, 3)) { - setCallback(6); - setup_function7(); - break; - } - break; - - case kActionCallback: - switch (getCallback()) { - default: - break; - - case 1: - params->param1 = 1; - goto label_callback_1; - - case 2: - goto label_callback_2; - - case 3: - goto label_callback_3; - - case 4: - goto label_callback_4; - - case 5: - goto label_callback_5; - } - break; - - case kAction201431954: - ENTITY_PARAM(0, 3) = 0; - ENTITY_PARAM(1, 7) = 0; - ENTITY_PARAM(1, 8) = 0; - ENTITY_PARAM(2, 1) = 0; - ENTITY_PARAM(2, 3) = 0; - params->param1 = 0; - - getData()->entityPosition = kPosition_5900; - getData()->location = kLocationOutsideCompartment; - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(33, Servers0, augustOrderSteak) - switch (savepoint.action) { - default: - break; - - case kActionDefault: - setCallback(1); - setup_draw("911"); - break; - - case kActionCallback: - switch (getCallback()) { - default: - break; - - case 1: - getEntities()->drawSequenceLeft(kEntityServers0, "010F3"); - getEntities()->drawSequenceLeft(kEntityAugust, "010D3"); - - setCallback(2); - setup_playSound("AUG4002"); - break; - - case 2: - getSavePoints()->push(kEntityServers0, kEntityAugust, kAction122288808); - - setCallback(3); - setup_draw("913"); - break; - - case 3: - getData()->entityPosition = kPosition_5900; - getEntities()->clearSequences(kEntityServers0); - ENTITY_PARAM(1, 7) = 0; - - callbackAction(); - break; - } - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(34, Servers0, augustServeDuck) - switch (savepoint.action) { - default: - break; - - case kActionDefault: - setCallback(1); - setup_draw("912"); - break; - - case kActionCallback: - switch (getCallback()) { - default: - break; - - case 1: - getSavePoints()->push(kEntityServers0, kEntityAugust, kAction122358304); - getSound()->playSound(kEntityServers0, "AUG1053"); - - setCallback(2); - setup_draw("010G3"); - break; - - case 2: - getSavePoints()->push(kEntityServers0, kEntityAugust, kAction201964801); - - setCallback(3); - setup_draw("914"); - break; - - case 3: - getData()->entityPosition = kPosition_5900; - getEntities()->clearSequences(kEntityServers0); - ENTITY_PARAM(1, 8) = 0; - - callbackAction(); - break; - } - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(35, Servers0, function35) - serveTable(savepoint, "911", kEntityTables3, "010L", "010M", "914", &ENTITY_PARAM(2, 1), false, true); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(36, Servers0, chapter5) - switch (savepoint.action) { - default: - break; - - case kActionNone: - setup_chapter5Handler(); - break; - - case kActionDefault: - getEntities()->clearSequences(kEntityServers0); - - getData()->entityPosition = kPosition_3969; - getData()->location = kLocationInsideCompartment; - getData()->car = kCarRestaurant; - getData()->inventoryItem = kItemNone; - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(37, Servers0, chapter5Handler) - if (savepoint.action == kActionProceedChapter5) - setup_nullfunction(); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_NULL_FUNCTION(38, Servers0) - - -////////////////////////////////////////////////////////////////////////// -// Private functions -////////////////////////////////////////////////////////////////////////// -void Servers0::handleServer(const SavePoint &savepoint, const char *name, EntityIndex entity, ActionIndex action, uint *parameter, const char *name2) { - switch (savepoint.action) { - default: - break; - - case kActionDefault: - getData()->entityPosition = kPosition_5800; - getData()->location = kLocationOutsideCompartment; - - setCallback(1); - setup_draw(name); - break; - - case kActionCallback: - if (getCallback() == 1) { - // Prepare or draw sequences depending of value of string - if (strcmp(name2, "")) - getEntities()->clearSequences(kEntityServers0); - else - getEntities()->drawSequenceLeft(kEntityServers0, name2); - - getSavePoints()->push(kEntityServers0, entity, action); - *parameter = 0; - - callbackAction(); - } - break; - } -} - -////////////////////////////////////////////////////////////////////////// -void Servers0::serveTable(const SavePoint &savepoint, const char *seq1, EntityIndex entity, const char *seq2, const char *seq3, const char *seq4, uint *parameter, bool shouldUpdatePosition, bool pushSavepoint, Position position) { - switch (savepoint.action) { - default: - break; - - case kActionDefault: - if (shouldUpdatePosition) { - getData()->entityPosition = kPosition_5800; - getData()->location = kLocationOutsideCompartment; - } - - setCallback(1); - setup_draw(seq1); - break; - - case kActionCallback: - switch (getCallback()) { - default: - break; - - case 1: - if (position) - getEntities()->updatePositionEnter(kEntityServers0, kCarRestaurant, position); - - getSavePoints()->push(kEntityServers0, entity, kAction136455232); - - setCallback(2); - setup_callSavepoint(seq2, entity, kActionDrawTablesWithChairs, seq3); - break; - - case 2: - if (position) - getEntities()->updatePositionExit(kEntityServers0, kCarRestaurant, position); - - setCallback(3); - setup_draw(seq4); - break; - - case 3: - getData()->entityPosition = kPosition_5900; - - // Special case for functions 19 & 35 - if (pushSavepoint) - getSavePoints()->push(kEntityServers0, kEntityRebecca, kAction224253538); - - getEntities()->clearSequences(kEntityServers0); - *parameter = 0; - - callbackAction(); - break; - } - break; - } -} - -} // End of namespace LastExpress diff --git a/engines/lastexpress/entities/servers0.h b/engines/lastexpress/entities/servers0.h deleted file mode 100644 index 70f06596b0..0000000000 --- a/engines/lastexpress/entities/servers0.h +++ /dev/null @@ -1,168 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef LASTEXPRESS_SERVERS0_H -#define LASTEXPRESS_SERVERS0_H - -#include "lastexpress/entities/entity.h" - -namespace LastExpress { - -class LastExpressEngine; - -class Servers0 : public Entity { -public: - Servers0(LastExpressEngine *engine); - ~Servers0() {} - - /** - * Call a savepoint (or draw sequence in default case) - * - * @param sequence1 The sequence to draw in the default case - * @param entity The entity - * @param action The action - * @param sequence2 The sequence name for the savepoint - */ - DECLARE_FUNCTION_4(callSavepoint, const char *sequence1, EntityIndex entity, ActionIndex action, const char *sequence2) - - /** - * Updates parameter 2 using time value - * - * @param savepoint The savepoint - * - Time to add - */ - DECLARE_FUNCTION_NOSETUP(updateFromTime) - - /** - * Draws the entity - * - * @param sequence The sequence to draw - */ - DECLARE_FUNCTION_1(draw, const char *sequence) - - /** - * Updates the position - * - * @param sequence1 The sequence to draw - * @param car The car - * @param position The position - */ - DECLARE_FUNCTION_3(updatePosition, const char *sequence1, CarIndex car, Position position) - - /** - * Process callback action when the entity direction is not kDirectionRight - */ - DECLARE_FUNCTION_NOSETUP(callbackActionOnDirection) - - /** - * Plays sound - * - * @param filename The sound filename - */ - DECLARE_FUNCTION_1(playSound, const char *filename) - - DECLARE_FUNCTION(function7) - DECLARE_FUNCTION(function8) - DECLARE_FUNCTION(function9) - DECLARE_FUNCTION(function10) - - /** - * Setup Chapter 1 - */ - DECLARE_FUNCTION(chapter1) - DECLARE_FUNCTION(function12) - DECLARE_FUNCTION(function13) - DECLARE_FUNCTION(function14) - DECLARE_FUNCTION(function15) - DECLARE_FUNCTION(function16) - DECLARE_FUNCTION(function17) - DECLARE_FUNCTION(function18) - DECLARE_FUNCTION(function19) - - /** - * Handle Chapter 1 events - */ - DECLARE_FUNCTION(chapter1Handler) - - DECLARE_FUNCTION(function21) - DECLARE_FUNCTION(function22) - - /** - * Setup Chapter 2 - */ - DECLARE_FUNCTION(chapter2) - - /** - * Handle Chapter 2 events - */ - DECLARE_FUNCTION(chapter2Handler) - - DECLARE_FUNCTION(function25) - DECLARE_FUNCTION(function26) - - /** - * Setup Chapter 3 - */ - DECLARE_FUNCTION(chapter3) - - /** - * Handle Chapter 3 events - */ - DECLARE_FUNCTION(chapter3Handler) - - DECLARE_FUNCTION(augustAnnaDateOrder) - DECLARE_FUNCTION(function30) - - /** - * Setup Chapter 4 - */ - DECLARE_FUNCTION(chapter4) - - /** - * Handle Chapter 4 events - */ - DECLARE_FUNCTION(chapter4Handler) - - DECLARE_FUNCTION(augustOrderSteak) - DECLARE_FUNCTION(augustServeDuck) - DECLARE_FUNCTION(function35) - - /** - * Setup Chapter 5 - */ - DECLARE_FUNCTION(chapter5) - - /** - * Handle Chapter 5 events - */ - DECLARE_FUNCTION(chapter5Handler) - - DECLARE_NULL_FUNCTION() - -private: - void handleServer(const SavePoint &savepoint, const char *name, EntityIndex entity, ActionIndex action, uint *parameter, const char *name2 = ""); - void serveTable(const SavePoint &savepoint, const char *seq1, EntityIndex entity, const char *seq2, const char *seq3, const char *seq4, uint *parameter, bool shouldUpdatePosition = true, bool pushSavepoint = false, Position position = 0); -}; - -} // End of namespace LastExpress - -#endif // LASTEXPRESS_SERVERS0_H diff --git a/engines/lastexpress/entities/servers1.cpp b/engines/lastexpress/entities/servers1.cpp deleted file mode 100644 index 153c2b66da..0000000000 --- a/engines/lastexpress/entities/servers1.cpp +++ /dev/null @@ -1,782 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include "lastexpress/entities/servers1.h" - -#include "lastexpress/game/entities.h" -#include "lastexpress/game/logic.h" -#include "lastexpress/game/object.h" -#include "lastexpress/game/savepoint.h" -#include "lastexpress/game/state.h" - -#include "lastexpress/lastexpress.h" - -namespace LastExpress { - -Servers1::Servers1(LastExpressEngine *engine) : Entity(engine, kEntityServers1) { - ADD_CALLBACK_FUNCTION(Servers1, updateFromTime); - ADD_CALLBACK_FUNCTION(Servers1, draw); - ADD_CALLBACK_FUNCTION(Servers1, updatePosition); - ADD_CALLBACK_FUNCTION(Servers1, callbackActionOnDirection); - ADD_CALLBACK_FUNCTION(Servers1, callSavepoint); - ADD_CALLBACK_FUNCTION(Servers1, playSound); - ADD_CALLBACK_FUNCTION(Servers1, function7); - ADD_CALLBACK_FUNCTION(Servers1, chapter1); - ADD_CALLBACK_FUNCTION(Servers1, function9); - ADD_CALLBACK_FUNCTION(Servers1, function10); - ADD_CALLBACK_FUNCTION(Servers1, function11); - ADD_CALLBACK_FUNCTION(Servers1, function12); - ADD_CALLBACK_FUNCTION(Servers1, function13); - ADD_CALLBACK_FUNCTION(Servers1, chapter1Handler); - ADD_CALLBACK_FUNCTION(Servers1, function15); - ADD_CALLBACK_FUNCTION(Servers1, function16); - ADD_CALLBACK_FUNCTION(Servers1, chapter2); - ADD_CALLBACK_FUNCTION(Servers1, chapter2Handler); - ADD_CALLBACK_FUNCTION(Servers1, function19); - ADD_CALLBACK_FUNCTION(Servers1, function20); - ADD_CALLBACK_FUNCTION(Servers1, function21); - ADD_CALLBACK_FUNCTION(Servers1, chapter3); - ADD_CALLBACK_FUNCTION(Servers1, chapter3Handler); - ADD_CALLBACK_FUNCTION(Servers1, function24); - ADD_CALLBACK_FUNCTION(Servers1, chapter4); - ADD_CALLBACK_FUNCTION(Servers1, chapter4Handler); - ADD_CALLBACK_FUNCTION(Servers1, function27); - ADD_CALLBACK_FUNCTION(Servers1, function28); - ADD_CALLBACK_FUNCTION(Servers1, function29); - ADD_CALLBACK_FUNCTION(Servers1, chapter5); - ADD_CALLBACK_FUNCTION(Servers1, chapter5Handler); - ADD_NULL_FUNCTION() -} - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION_NOSETUP(1, Servers1, updateFromTime) - Entity::updateFromTime(savepoint); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION_S(2, Servers1, draw) - Entity::draw(savepoint, true); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION_SII(3, Servers1, updatePosition, CarIndex, Position) - Entity::updatePosition(savepoint, true); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(4, Servers1, callbackActionOnDirection) - if (savepoint.action == kActionExcuseMeCath) { - if (!params->param1) { - getSound()->excuseMe(kEntityServers1); - params->param1 = 1; - } - } - - Entity::callbackActionOnDirection(savepoint); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION_SIIS(5, Servers1, callSavepoint, EntityIndex, ActionIndex) - Entity::callSavepoint(savepoint, true); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION_S(6, Servers1, playSound) - Entity::playSound(savepoint); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(7, Servers1, function7) - switch (savepoint.action) { - default: - break; - - case kActionDefault: - getData()->entityPosition = kPosition_5800; - getData()->location = kLocationOutsideCompartment; - - setCallback(1); - setup_draw("924"); - break; - - case kActionCallback: - switch (getCallback()) { - default: - break; - - case 1: - getSavePoints()->push(kEntityServers1, kEntityBoutarel, kAction122358304); - setCallback(2); - setup_draw("008C"); - break; - - case 2: - getSavePoints()->push(kEntityServers1, kEntityBoutarel, kAction122288808); - setCallback(2); - setup_draw("926"); - break; - - case 3: - getEntities()->clearSequences(kEntityServers1); - getData()->entityPosition = kPosition_5900; - ENTITY_PARAM(1, 2) = 0; - - callbackAction(); - break; - } - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(8, Servers1, chapter1) - switch (savepoint.action) { - default: - break; - - case kActionNone: - setup_chapter1Handler(); - break; - - case kActionDefault: - getSavePoints()->addData(kEntityServers1, kAction223002560, 0); - getSavePoints()->addData(kEntityServers1, kAction302996448, 2); - getSavePoints()->addData(kEntityServers1, kAction269485588, 3); - getSavePoints()->addData(kEntityServers1, kAction326144276, 4); - getSavePoints()->addData(kEntityServers1, kAction302203328, 5); - getSavePoints()->addData(kEntityServers1, kAction189688608, 6); - getSavePoints()->addData(kEntityServers1, kAction236237423, 7); - getSavePoints()->addData(kEntityServers1, kAction219377792, 8); - getSavePoints()->addData(kEntityServers1, kAction256200848, 9); - getSavePoints()->addData(kEntityServers1, kAction291721418, 10); - getSavePoints()->addData(kEntityServers1, kAction258136010, 11); - - getData()->entityPosition = kPosition_5900; - getData()->location = kLocationOutsideCompartment; - getData()->car = kCarRestaurant; - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(9, Servers1, function9) - switch (savepoint.action) { - default: - break; - - case kActionDefault: - getData()->entityPosition = kPosition_5800; - getData()->location = kLocationOutsideCompartment; - - setCallback(1); - setup_draw("924"); - break; - - case kActionCallback: - switch (getCallback()) { - default: - break; - - case 1: - getEntities()->drawSequenceLeft(kEntityMilos, "BLANK"); - getEntities()->drawSequenceLeft(kEntityServers1, "009B"); - - setCallback(2); - setup_playSound("WAT1001"); - break; - - case 2: - getEntities()->drawSequenceLeft(kEntityMilos, "009A"); - - setCallback(3); - setup_draw("926"); - break; - - case 3: - getEntities()->clearSequences(kEntityServers1); - getData()->entityPosition = kPosition_5900; - ENTITY_PARAM(0, 1) = 0; - - callbackAction(); - break; - } - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(10, Servers1, function10) - switch (savepoint.action) { - default: - break; - - case kActionDefault: - getData()->entityPosition = kPosition_5800; - getData()->location = kLocationOutsideCompartment; - - setCallback(1); - setup_draw("924"); - break; - - case kActionCallback: - switch (getCallback()) { - default: - break; - - case 1: - getEntities()->drawSequenceLeft(kEntityBoutarel, "BLANK"); - getEntities()->drawSequenceLeft(kEntityServers1, "008C"); - - setCallback(2); - setup_playSound("MRB1077"); - break; - - case 2: - getSavePoints()->push(kEntityServers1, kEntityBoutarel, kAction168717392); - - setCallback(3); - setup_draw("926"); - break; - - case 3: - getEntities()->clearSequences(kEntityServers1); - getData()->entityPosition = kPosition_5900; - ENTITY_PARAM(0, 2) = 0; - - callbackAction(); - break; - } - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(11, Servers1, function11) - serveTable(savepoint, "919", kEntityTables1, "005H", "005J", "921", &ENTITY_PARAM(0, 3), 63); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(12, Servers1, function12) - serveTable(savepoint, "923", kEntityTables2, "009F", "009G", "926", &ENTITY_PARAM(0, 4)); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(13, Servers1, function13) - serveTable(savepoint, "923", kEntityTables2, "009F", "009G", "926", &ENTITY_PARAM(0, 5)); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(14, Servers1, chapter1Handler) -switch (savepoint.action) { - default: - break; - - case kActionDefault: - if (!getEntities()->isInKitchen(kEntityServers1) || !getEntities()->isSomebodyInsideRestaurantOrSalon()) - break; - - if (ENTITY_PARAM(0, 1)) { - setCallback(1); - setup_function9(); - break; - } - - if (ENTITY_PARAM(1, 2)) { - setCallback(2); - setup_function10(); - break; - } - - if (ENTITY_PARAM(0, 3)) { - setCallback(3); - setup_function11(); - break; - } - - if (ENTITY_PARAM(0, 4)) { - setCallback(4); - setup_function12(); - break; - } - - if (ENTITY_PARAM(0, 5)) { - setCallback(5); - setup_function13(); - } - break; - - case kActionCallback: - if (getCallback() == 5) { - getSavePoints()->push(kEntityServers1, kEntityPascale, kAction352768896); - setup_function15(); - } - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(15, Servers1, function15) - switch (savepoint.action) { - default: - break; - - case kActionDefault: - getData()->entityPosition = kPosition_5900; - break; - - case kAction101632192: - setup_function16(); - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(16, Servers1, function16) - if (savepoint.action == kActionDefault) { - getData()->entityPosition = kPosition_5900; - getData()->location = kLocationOutsideCompartment; - getData()->car = kCarRestaurant; - - getEntities()->clearSequences(kEntityServers1); - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(17, Servers1, chapter2) - switch (savepoint.action) { - default: - break; - - case kActionNone: - setup_chapter2Handler(); - break; - - case kActionDefault: - getEntities()->clearSequences(kEntityServers1); - - getData()->entityPosition = kPosition_5900; - getData()->location = kLocationOutsideCompartment; - getData()->car = kCarRestaurant; - getData()->clothes = kClothes1; - getData()->inventoryItem = kItemNone; - - ENTITY_PARAM(0, 6) = 0; - ENTITY_PARAM(0, 7) = 0; - ENTITY_PARAM(0, 8) = 0; - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(18, Servers1, chapter2Handler) - switch (savepoint.action) { - default: - break; - - case kActionNone: - if (!getEntities()->isInKitchen(kEntityServers1) || !getEntities()->isSomebodyInsideRestaurantOrSalon()) - break; - - if (ENTITY_PARAM(0, 6)) { - setCallback(1); - setup_function19(); - break; - } - -label_callback_1: - if (ENTITY_PARAM(0, 7)) { - setCallback(2); - setup_function20(); - break; - } - -label_callback_2: - if (ENTITY_PARAM(0, 8) || ENTITY_PARAM(0, 5)) { - setCallback(3); - setup_function21(); - } - break; - - case kActionCallback: - switch (getCallback()) { - default: - break; - - case 1: - goto label_callback_1; - - case 2: - goto label_callback_2; - - case 4: - getEntities()->clearSequences(kEntityServers1); - getData()->entityPosition = kPosition_5900; - break; - } - break; - - case kAction101106391: - setCallback(4); - setup_draw("975"); - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(19, Servers1, function19) - serveTable(savepoint, "969", kEntityTables1, "005H2", "018A", "971", &ENTITY_PARAM(0, 6), 63); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(20, Servers1, function20) - switch (savepoint.action) { - default: - break; - - case kActionDefault: - getData()->entityPosition = kPosition_5800; - getData()->location = kLocationOutsideCompartment; - - setCallback(1); - setup_draw("973"); - break; - - case kActionCallback: - if (getCallback() == 1) { - getSavePoints()->push(kEntityServers1, kEntityIvo, kAction123712592); - getEntities()->drawSequenceLeft(kEntityServers1, "BLANK"); - ENTITY_PARAM(0, 7) = 0; - - callbackAction(); - } - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(21, Servers1, function21) - serveTable(savepoint, "974", kEntityTables2, "009F2", "009G", "976", &ENTITY_PARAM(0, 8), 0, true, &ENTITY_PARAM(0, 5)); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(22, Servers1, chapter3) - switch (savepoint.action) { - default: - break; - - case kActionNone: - setup_chapter3Handler(); - break; - - case kActionDefault: - getEntities()->clearSequences(kEntityServers1); - - getData()->entityPosition = kPosition_5900; - getData()->location = kLocationOutsideCompartment; - getData()->car = kCarRestaurant; - getData()->clothes = kClothes1; - getData()->inventoryItem = kItemNone; - - ENTITY_PARAM(1, 1) = 0; - ENTITY_PARAM(1, 2) = 0; - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(23, Servers1, chapter3Handler) - if (savepoint.action != kActionNone) - return; - - if (!getEntities()->isInKitchen(kEntityServers1) || !getEntities()->isSomebodyInsideRestaurantOrSalon()) - return; - - if (ENTITY_PARAM(1, 1)) { - setCallback(1); - setup_function24(); - return; - } - - if (ENTITY_PARAM(1, 2)) { - setCallback(2); - setup_function7(); - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(24, Servers1, function24) - serveSalon(savepoint, "927", "Ann3143A", kEntityAnna, "Ann31444", "112C", kAction122288808, "928", &ENTITY_PARAM(1, 1)); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(25, Servers1, chapter4) - switch (savepoint.action) { - default: - break; - - case kActionNone: - setup_chapter4Handler(); - break; - - case kActionDefault: - getEntities()->clearSequences(kEntityServers1); - - getData()->entityPosition = kPosition_5900; - getData()->location = kLocationOutsideCompartment; - getData()->car = kCarRestaurant; - getData()->inventoryItem = kItemNone; - - getEntities()->clearSequences(kEntityServers1); - - ENTITY_PARAM(1, 2) = 0; - ENTITY_PARAM(1, 3) = 0; - ENTITY_PARAM(1, 4) = 0; - ENTITY_PARAM(1, 5) = 0; - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(26, Servers1, chapter4Handler) - switch (savepoint.action) { - default: - break; - - case kActionNone: - if (params->param2) { - if (Entity::updateParameter(params->param2, getState()->time, 900)) { - ENTITY_PARAM(1, 5) = 1; - params->param1 = 0; - } - } - - if (!getEntities()->isInKitchen(kEntityServers1) || !getEntities()->isSomebodyInsideRestaurantOrSalon()) - break; - - if (ENTITY_PARAM(1, 5)) { - setCallback(2); - setup_function28(); - break; - } - - if (ENTITY_PARAM(1, 4)) { - setCallback(3); - setup_function29(); - break; - } - - if (ENTITY_PARAM(1, 2)) { - setCallback(4); - setup_function7(); - } - break; - - case kActionCallback: - if (getCallback() == 1) - params->param1 = 1; - break; - - case kAction201431954: - ENTITY_PARAM(1, 2) = 0; - ENTITY_PARAM(1, 3) = 0; - ENTITY_PARAM(1, 4) = 0; - ENTITY_PARAM(1, 5) = 0; - - getData()->entityPosition = kPosition_5900; - getData()->location = kLocationOutsideCompartment; - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(27, Servers1, function27) - serveSalon(savepoint, "929", "", kEntityAugust, "Aug4003", "122D", kAction134486752, "930", &ENTITY_PARAM(1, 3)); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(28, Servers1, function28) - serveSalon(savepoint, "931", "", kEntityAugust, "Aug4004", "122E", kAction125826561, "930", &ENTITY_PARAM(1, 5)); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(29, Servers1, function29) - serveSalon(savepoint, "932", "", kEntityAnna, "Ann4151", "127D", kAction122288808, "930", &ENTITY_PARAM(1, 4)); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(30, Servers1, chapter5) - switch (savepoint.action) { - default: - break; - - case kActionNone: - setup_chapter5Handler(); - break; - - case kActionDefault: - getEntities()->clearSequences(kEntityServers1); - - getData()->entityPosition = kPosition_3969; - getData()->location = kLocationInsideCompartment; - getData()->car = kCarRestaurant; - getData()->inventoryItem = kItemNone; - break; - } -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_FUNCTION(31, Servers1, chapter5Handler) - if (savepoint.action == kActionProceedChapter5) - setup_nullfunction(); -IMPLEMENT_FUNCTION_END - -////////////////////////////////////////////////////////////////////////// -IMPLEMENT_NULL_FUNCTION(32, Servers1) - - -////////////////////////////////////////////////////////////////////////// -// Private functions -////////////////////////////////////////////////////////////////////////// -void Servers1::serveTable(const SavePoint &savepoint, const char *seq1, EntityIndex entity, const char *seq2, const char *seq3, const char *seq4, uint *parameter, Position position, bool shouldUpdatePosition, uint *parameter2) { - switch (savepoint.action) { - default: - break; - - case kActionDefault: - if (shouldUpdatePosition) { - getData()->entityPosition = kPosition_5800; - getData()->location = kLocationOutsideCompartment; - } - - setCallback(1); - setup_draw(seq1); - break; - - case kActionCallback: - switch (getCallback()) { - default: - break; - - case 1: - if (position) - getEntities()->updatePositionEnter(kEntityServers1, kCarRestaurant, position); - - getSavePoints()->push(kEntityServers1, entity, kAction136455232); - - setCallback(2); - setup_callSavepoint(seq2, entity, kActionDrawTablesWithChairs, seq3); - break; - - case 2: - if (position) - getEntities()->updatePositionExit(kEntityServers1, kCarRestaurant, position); - - setCallback(3); - setup_draw(seq4); - break; - - case 3: - getData()->entityPosition = kPosition_5900; - getEntities()->clearSequences(kEntityServers1); - *parameter = 0; - - if (parameter2 != NULL) - *parameter2 = 0; - - callbackAction(); - break; - } - break; - } -} - -////////////////////////////////////////////////////////////////////////// -void Servers1::serveSalon(const SavePoint &savepoint, const char *seq1, const char *snd1, EntityIndex entity, const char *snd2, const char *seq2, ActionIndex action, const char *seq3, uint *parameter) { - switch (savepoint.action) { - default: - break; - - case kActionDefault: - getData()->entityPosition = kPosition_5800; - getData()->location = kLocationOutsideCompartment; - - setCallback(1); - setup_draw("816DD"); - break; - - case kActionCallback: - switch (getCallback()) { - default: - break; - - case 1: - getEntities()->drawSequenceRight(kEntityServers1, seq1); - - if (getEntities()->isInRestaurant(kEntityPlayer)) - getEntities()->updateFrame(kEntityServers1); - - if (!strcmp(snd1, "")) - getSound()->playSound(kEntityServers1, snd1); - - setCallback(2); - setup_callbackActionOnDirection(); - break; - - case 2: - getSavePoints()->push(kEntityServers1, entity, kAction122358304); - - getSound()->playSound(kEntityServers1, snd2); - - setCallback(3); - setup_updatePosition(seq2, kCarRestaurant, 57); - break; - - case 3: - getSavePoints()->push(kEntityServers1, entity, action); - - setCallback(4); - setup_draw(seq3); - break; - - case 4: - getEntities()->drawSequenceRight(kEntityServers1, "816UD"); - - if (getEntities()->isInSalon(kEntityPlayer)) - getEntities()->updateFrame(kEntityServers1); - - setCallback(5); - setup_callbackActionOnDirection(); - break; - - case 5: - getEntities()->clearSequences(kEntityServers1); - getData()->entityPosition = kPosition_5900; - *parameter = 0; - - callbackAction(); - break; - } - break; - } -} - -} // End of namespace LastExpress diff --git a/engines/lastexpress/entities/servers1.h b/engines/lastexpress/entities/servers1.h deleted file mode 100644 index 58566cd4d3..0000000000 --- a/engines/lastexpress/entities/servers1.h +++ /dev/null @@ -1,163 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef LASTEXPRESS_SERVERS1_H -#define LASTEXPRESS_SERVERS1_H - -#include "lastexpress/entities/entity.h" - -namespace LastExpress { - -class LastExpressEngine; - -class Servers1 : public Entity { -public: - Servers1(LastExpressEngine *engine); - ~Servers1() {} - - /** - * Updates parameter 2 using time value - * - * @param savepoint The savepoint - * - Time to add - */ - DECLARE_FUNCTION_NOSETUP(updateFromTime) - - /** - * Draws the entity - * - * @param sequence The sequence to draw - */ - DECLARE_FUNCTION_1(draw, const char *sequence) - - /** - * Updates the position - * - * @param sequence1 The sequence to draw - * @param car The car - * @param position The position - */ - DECLARE_FUNCTION_3(updatePosition, const char *sequence, CarIndex car, Position position) - - /** - * Process callback action when the entity direction is not kDirectionRight - */ - DECLARE_FUNCTION(callbackActionOnDirection) - - /** - * Call a savepoint (or draw sequence in default case) - * - * @param sequence1 The sequence to draw in the default case - * @param entity The entity - * @param action The action - * @param sequence2 The sequence name for the savepoint - */ - DECLARE_FUNCTION_4(callSavepoint, const char *sequence1, EntityIndex entity, ActionIndex action, const char *sequence2) - - /** - * Plays sound - * - * @param filename The sound filename - */ - DECLARE_FUNCTION_1(playSound, const char *filename) - - DECLARE_FUNCTION(function7) - - /** - * Setup Chapter 1 - */ - DECLARE_FUNCTION(chapter1) - - DECLARE_FUNCTION(function9) - DECLARE_FUNCTION(function10) - DECLARE_FUNCTION(function11) - DECLARE_FUNCTION(function12) - DECLARE_FUNCTION(function13) - - /** - * Handle Chapter 1 events - */ - DECLARE_FUNCTION(chapter1Handler) - - DECLARE_FUNCTION(function15) - DECLARE_FUNCTION(function16) - - /** - * Setup Chapter 2 - */ - DECLARE_FUNCTION(chapter2) - - /** - * Handle Chapter 2 events - */ - DECLARE_FUNCTION(chapter2Handler) - - DECLARE_FUNCTION(function19) - DECLARE_FUNCTION(function20) - DECLARE_FUNCTION(function21) - - /** - * Setup Chapter 3 - */ - DECLARE_FUNCTION(chapter3) - - /** - * Handle Chapter 3 events - */ - DECLARE_FUNCTION(chapter3Handler) - - DECLARE_FUNCTION(function24) - - /** - * Setup Chapter 4 - */ - DECLARE_FUNCTION(chapter4) - - /** - * Handle Chapter 4 events - */ - DECLARE_FUNCTION(chapter4Handler) - - DECLARE_FUNCTION(function27) - DECLARE_FUNCTION(function28) - DECLARE_FUNCTION(function29) - - /** - * Setup Chapter 5 - */ - DECLARE_FUNCTION(chapter5) - - /** - * Handle Chapter 5 events - */ - DECLARE_FUNCTION(chapter5Handler) - - DECLARE_NULL_FUNCTION() - -private: - void serveTable(const SavePoint &savepoint, const char *seq1, EntityIndex entity, const char *seq2, const char *seq3, const char *seq4, uint *parameter, Position position = 0, bool updatePosition = true, uint *parameter2 = NULL); - void serveSalon(const SavePoint &savepoint, const char *seq1, const char *snd1, EntityIndex entity, const char *snd2, const char *seq2, ActionIndex action, const char *seq3, uint *parameter); -}; - -} // End of namespace LastExpress - -#endif // LASTEXPRESS_SERVERS1_H diff --git a/engines/lastexpress/entities/tatiana.cpp b/engines/lastexpress/entities/tatiana.cpp index c6788fd4b2..951e89d595 100644 --- a/engines/lastexpress/entities/tatiana.cpp +++ b/engines/lastexpress/entities/tatiana.cpp @@ -507,7 +507,7 @@ IMPLEMENT_FUNCTION(20, Tatiana, function20) case 2: getEntities()->updatePositionExit(kEntityTatiana, kCarRestaurant, 67); - getSavePoints()->push(kEntityTatiana, kEntityServers0, kAction188893625); + getSavePoints()->push(kEntityTatiana, kEntityWaiter1, kAction188893625); setCallback(3); setup_function18(); @@ -917,7 +917,7 @@ IMPLEMENT_FUNCTION(29, Tatiana, function29) case 2: getEntities()->updatePositionExit(kEntityTatiana, kCarRestaurant, 63); - getSavePoints()->push(kEntityTatiana, kEntityServers1, kAction302203328); + getSavePoints()->push(kEntityTatiana, kEntityWaiter2, kAction302203328); getEntities()->drawSequenceRight(kEntityTatiana, "805DS"); if (getEntities()->isInRestaurant(kEntityPlayer)) diff --git a/engines/lastexpress/entities/waiter1.cpp b/engines/lastexpress/entities/waiter1.cpp new file mode 100644 index 0000000000..21e40d326d --- /dev/null +++ b/engines/lastexpress/entities/waiter1.cpp @@ -0,0 +1,1034 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "lastexpress/entities/waiter1.h" + +#include "lastexpress/game/entities.h" +#include "lastexpress/game/logic.h" +#include "lastexpress/game/object.h" +#include "lastexpress/game/savepoint.h" +#include "lastexpress/game/state.h" + +#include "lastexpress/lastexpress.h" + +namespace LastExpress { + +#define HANDLE_TABLE(index, param, callback, function) \ + if (ENTITY_PARAM(index, param)) { \ + setCallback(callback); \ + function(); \ + break; \ + } + +Waiter1::Waiter1(LastExpressEngine *engine) : Entity(engine, kEntityWaiter1) { + ADD_CALLBACK_FUNCTION(Waiter1, callSavepoint); + ADD_CALLBACK_FUNCTION(Waiter1, updateFromTime); + ADD_CALLBACK_FUNCTION(Waiter1, draw); + ADD_CALLBACK_FUNCTION(Waiter1, updatePosition); + ADD_CALLBACK_FUNCTION(Waiter1, callbackActionOnDirection); + ADD_CALLBACK_FUNCTION(Waiter1, playSound); + ADD_CALLBACK_FUNCTION(Waiter1, function7); + ADD_CALLBACK_FUNCTION(Waiter1, function8); + ADD_CALLBACK_FUNCTION(Waiter1, function9); + ADD_CALLBACK_FUNCTION(Waiter1, function10); + ADD_CALLBACK_FUNCTION(Waiter1, chapter1); + ADD_CALLBACK_FUNCTION(Waiter1, function12); + ADD_CALLBACK_FUNCTION(Waiter1, function13); + ADD_CALLBACK_FUNCTION(Waiter1, function14); + ADD_CALLBACK_FUNCTION(Waiter1, function15); + ADD_CALLBACK_FUNCTION(Waiter1, function16); + ADD_CALLBACK_FUNCTION(Waiter1, function17); + ADD_CALLBACK_FUNCTION(Waiter1, function18); + ADD_CALLBACK_FUNCTION(Waiter1, function19); + ADD_CALLBACK_FUNCTION(Waiter1, chapter1Handler); + ADD_CALLBACK_FUNCTION(Waiter1, function21); + ADD_CALLBACK_FUNCTION(Waiter1, function22); + ADD_CALLBACK_FUNCTION(Waiter1, chapter2); + ADD_CALLBACK_FUNCTION(Waiter1, chapter2Handler); + ADD_CALLBACK_FUNCTION(Waiter1, function25); + ADD_CALLBACK_FUNCTION(Waiter1, function26); + ADD_CALLBACK_FUNCTION(Waiter1, chapter3); + ADD_CALLBACK_FUNCTION(Waiter1, chapter3Handler); + ADD_CALLBACK_FUNCTION(Waiter1, augustAnnaDateOrder); + ADD_CALLBACK_FUNCTION(Waiter1, function30); + ADD_CALLBACK_FUNCTION(Waiter1, chapter4); + ADD_CALLBACK_FUNCTION(Waiter1, chapter4Handler); + ADD_CALLBACK_FUNCTION(Waiter1, augustOrderSteak); + ADD_CALLBACK_FUNCTION(Waiter1, augustServeDuck); + ADD_CALLBACK_FUNCTION(Waiter1, function35); + ADD_CALLBACK_FUNCTION(Waiter1, chapter5); + ADD_CALLBACK_FUNCTION(Waiter1, chapter5Handler); + ADD_NULL_FUNCTION(); +} + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION_SIIS(1, Waiter1, callSavepoint, EntityIndex, ActionIndex) + Entity::callSavepoint(savepoint, true); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION_NOSETUP(2, Waiter1, updateFromTime) + Entity::updateFromTime(savepoint); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION_S(3, Waiter1, draw) + Entity::draw(savepoint, true); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION_NOSETUP(4, Waiter1, updatePosition) + Entity::updatePosition(savepoint, true); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION_NOSETUP(5, Waiter1, callbackActionOnDirection) + EXPOSE_PARAMS(EntityData::EntityParametersIIII); + + switch (savepoint.action) { + default: + break; + + case kActionNone: + if (getData()->direction != kDirectionRight) + callbackAction(); + break; + + case kActionExitCompartment: + callbackAction(); + break; + + case kActionExcuseMeCath: + if (!params->param1) { + getSound()->excuseMe(kEntityWaiter1); + params->param1 = 1; + } + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION_S(6, Waiter1, playSound) + Entity::playSound(savepoint); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(7, Waiter1, function7) + switch (savepoint.action) { + default: + break; + + case kActionDefault: + getData()->entityPosition = kPosition_5800; + getData()->location = kLocationOutsideCompartment; + + ENTITY_PARAM(0, 3) = 0; + + setCallback(1); + setup_draw("911"); + break; + + case kActionCallback: + switch (getCallback()) { + default: + break; + + case 1: + getEntities()->clearSequences(kEntityWaiter1); + getSavePoints()->push(kEntityWaiter1, kEntityRebecca, kAction123712592); + break; + + case 2: + getEntities()->clearSequences(kEntityWaiter1); + getData()->entityPosition = kPosition_5900; + callbackAction(); + break; + } + break; + + case kAction136702400: + setCallback(2); + setup_draw("913"); + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(8, Waiter1, function8) + serveTable(savepoint, "911", kEntityTables3, "010L", "010M", "913", &ENTITY_PARAM(1, 2)); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(9, Waiter1, function9) + switch (savepoint.action) { + default: + break; + + case kActionDefault: + getData()->entityPosition = kPosition_5800; + getData()->location = kLocationOutsideCompartment; + + setCallback(1); + setup_draw("915"); + break; + + case kActionCallback: + switch (getCallback()) { + default: + break; + + case 1: + getSavePoints()->push(kEntityWaiter1, kEntityAbbot, kAction122358304); + getEntities()->drawSequenceLeft(kEntityWaiter1, "029D"); + + setCallback(2); + setup_playSound(getProgress().chapter == kChapter3 ? "Abb3016" : "Abb4001"); + break; + + case 2: + getSavePoints()->push(kEntityWaiter1, kEntityAbbot, kAction122288808); + + setCallback(3); + setup_draw("917"); + break; + + case 3: + getData()->entityPosition = kPosition_5900; + getEntities()->clearSequences(kEntityWaiter1); + ENTITY_PARAM(2, 2) = 0; + ENTITY_PARAM(1, 6) = 0; + + callbackAction(); + break; + } + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(10, Waiter1, function10) + serveTable(savepoint, "916", kEntityTables4, "014E", "014F", "918", &ENTITY_PARAM(2, 3), false); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(11, Waiter1, chapter1) + switch (savepoint.action) { + default: + break; + + case kActionNone: + setup_chapter1Handler(); + break; + + case kActionDefault: + getSavePoints()->addData(kEntityWaiter1, kAction270410280, 0); + getSavePoints()->addData(kEntityWaiter1, kAction304061224, 1); + getSavePoints()->addData(kEntityWaiter1, kAction252568704, 10); + getSavePoints()->addData(kEntityWaiter1, kAction286534136, 11); + getSavePoints()->addData(kEntityWaiter1, kAction218983616, 12); + getSavePoints()->addData(kEntityWaiter1, kAction218586752, 13); + getSavePoints()->addData(kEntityWaiter1, kAction207330561, 14); + getSavePoints()->addData(kEntityWaiter1, kAction286403504, 16); + getSavePoints()->addData(kEntityWaiter1, kAction218128129, 17); + getSavePoints()->addData(kEntityWaiter1, kAction270068760, 18); + getSavePoints()->addData(kEntityWaiter1, kAction223712416, 2); + getSavePoints()->addData(kEntityWaiter1, kAction237485916, 5); + getSavePoints()->addData(kEntityWaiter1, kAction188893625, 8); + getSavePoints()->addData(kEntityWaiter1, kAction204704037, 6); + getSavePoints()->addData(kEntityWaiter1, kAction292758554, 7); + getSavePoints()->addData(kEntityWaiter1, kAction337548856, 9); + + getData()->entityPosition = kPosition_5900; + getData()->location = kLocationOutsideCompartment; + getData()->car = kCarRestaurant; + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(12, Waiter1, function12) + handleServer(savepoint, "907", kEntityAnna, kAction268773672, &ENTITY_PARAM(0, 1)); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(13, Waiter1, function13) + handleServer(savepoint, "911", kEntityAugust, kAction268773672, &ENTITY_PARAM(0, 2), "010F"); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(14, Waiter1, function14) + handleServer(savepoint, "908", kEntityAnna, kAction170016384, &ENTITY_PARAM(0, 4)); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(15, Waiter1, function15) + handleServer(savepoint, "912", kEntityAugust, kAction170016384, &ENTITY_PARAM(0, 5)); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(16, Waiter1, function16) + serveTable(savepoint, "907", kEntityTables0, "001N", "001P", "909", &ENTITY_PARAM(0, 6)); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(17, Waiter1, function17) + serveTable(savepoint, "915", kEntityTables4, "014E", "014F", "917", &ENTITY_PARAM(1, 1), true, false, 67); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(18, Waiter1, function18) + serveTable(savepoint, "911", kEntityTables3, "010L", "010H", "913", &ENTITY_PARAM(0, 7)); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(19, Waiter1, function19) + serveTable(savepoint, "911", kEntityTables3, "010L", "010M", "913", &ENTITY_PARAM(0, 8), true, true); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(20, Waiter1, chapter1Handler) + switch (savepoint.action) { + default: + break; + + case kActionNone: + if (params->param2) { + if (Entity::updateParameter(params->param3, getState()->time, 2700)) { + ENTITY_PARAM(0, 4) = 1; + params->param2 = 0; + } + } + + if (params->param1) { + if (Entity::updateParameter(params->param4, getState()->time, 4500)) { + ENTITY_PARAM(0, 5) = 1; + params->param1 = 0; + } + } + + if (!getEntities()->isInKitchen(kEntityWaiter1) && !getEntities()->isSomebodyInsideRestaurantOrSalon()) + break; + + HANDLE_TABLE(0, 1, 1, setup_function12); + HANDLE_TABLE(0, 2, 2, setup_function13); + HANDLE_TABLE(0, 3, 3, setup_function7); + HANDLE_TABLE(0, 4, 4, setup_function14); + HANDLE_TABLE(0, 5, 5, setup_function15); + HANDLE_TABLE(0, 6, 6, setup_function16); + HANDLE_TABLE(1, 1, 7, setup_function17); + HANDLE_TABLE(0, 7, 8, setup_function18); + HANDLE_TABLE(0, 8, 9, setup_function19); + HANDLE_TABLE(1, 2, 10, setup_function8); + break; + + case kActionCallback: + switch (getCallback()) { + default: + break; + + case 10: + getSavePoints()->push(kEntityWaiter1, kEntityPascale, kAction352703104); + setup_function21(); + break; + + case 11: + case 12: + getEntities()->clearSequences(kEntityWaiter1); + getData()->entityPosition = kPosition_5900; + + if (getCallback() == 11) + params->param2 = 1; + else + params->param1 = 1; + break; + + case 13: + case 14: + getEntities()->clearSequences(kEntityWaiter1); + getData()->entityPosition = kPosition_5900; + break; + } + break; + + case kAction136702400: + setCallback(savepoint.entity2 == kEntityAnna ? 13 : 14); + setup_draw(savepoint.entity2 == kEntityAnna ? "909" : "913"); + break; + + case kAction203859488: + setCallback(savepoint.entity2 == kEntityAnna ? 11 : 12); + setup_draw(savepoint.entity2 == kEntityAnna ? "910" : "913"); + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(21, Waiter1, function21) + switch (savepoint.action) { + default: + break; + + case kActionDefault: + getData()->entityPosition = kPosition_5900; + break; + + case kAction101632192: + setup_function22(); + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(22, Waiter1, function22) + if (savepoint.action == kActionDefault) { + getData()->entityPosition = kPosition_5900; + getData()->location = kLocationOutsideCompartment; + getData()->car = kCarRestaurant; + + getEntities()->clearSequences(kEntityWaiter1); + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(23, Waiter1, chapter2) + switch (savepoint.action) { + default: + break; + + case kActionNone: + setup_chapter2Handler(); + break; + + case kActionDefault: + getEntities()->clearSequences(kEntityWaiter1); + + getData()->entityPosition = kPosition_5900; + getData()->location = kLocationOutsideCompartment; + getData()->car = kCarRestaurant; + getData()->clothes = kClothes1; + getData()->inventoryItem = kItemNone; + + ENTITY_PARAM(1, 3) = 0; + ENTITY_PARAM(1, 4) = 0; + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(24, Waiter1, chapter2Handler) + switch (savepoint.action) { + default: + break; + + case kActionNone: + if (!getEntities()->isInKitchen(kEntityWaiter1) || !getEntities()->isSomebodyInsideRestaurantOrSalon()) + break; + + HANDLE_TABLE(1, 3, 1, setup_function25); + HANDLE_TABLE(1, 4, 2, setup_function26); + break; + + case kActionCallback: + if (getCallback() == 1) + HANDLE_TABLE(1, 4, 2, setup_function26); + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(25, Waiter1, function25) + switch (savepoint.action) { + default: + break; + + case kActionDefault: + getData()->entityPosition = kPosition_5800; + getData()->location = kLocationOutsideCompartment; + + setCallback(1); + setup_draw("957"); + break; + + case kActionCallback: + switch (getCallback()) { + default: + break; + + case 1: + getSavePoints()->push(kEntityWaiter1, kEntityAugust, kAction123712592); + getEntities()->drawSequenceLeft(kEntityWaiter1, "BLANK"); + break; + + case 2: + getData()->entityPosition = kPosition_5900; + getEntities()->clearSequences(kEntityWaiter1); + ENTITY_PARAM(1, 3) = 0; + + callbackAction(); + break; + } + break; + + case kAction219522616: + setCallback(2); + setup_draw("959"); + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(26, Waiter1, function26) + serveTable(savepoint, "957", kEntityTables0, "016E", "016D", "959", &ENTITY_PARAM(1, 4)); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(27, Waiter1, chapter3) + switch (savepoint.action) { + default: + break; + + case kActionNone: + setup_chapter3Handler(); + break; + + case kActionDefault: + getEntities()->clearSequences(kEntityWaiter1); + + getData()->entityPosition = kPosition_5900; + getData()->location = kLocationOutsideCompartment; + getData()->car = kCarRestaurant; + getData()->clothes = kClothes1; + getData()->inventoryItem = kItemNone; + + ENTITY_PARAM(0, 3) = 0; + ENTITY_PARAM(1, 2) = 0; + ENTITY_PARAM(1, 5) = 0; + ENTITY_PARAM(1, 6) = 0; + ENTITY_PARAM(2, 3) = 0; + ENTITY_PARAM(2, 4) = 0; + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(28, Waiter1, chapter3Handler) + switch (savepoint.action) { + default: + break; + + case kActionNone: + if (!getEntities()->isInKitchen(kEntityWaiter2) || !getEntities()->isSomebodyInsideRestaurantOrSalon()) + break; + + if (ENTITY_PARAM(1, 5)) { + setCallback(1); + setup_augustAnnaDateOrder(); + break; + } + +label_callback_1: + if (ENTITY_PARAM(1, 6)) { + setCallback(2); + setup_function9(); + break; + } + +label_callback_2: + if (ENTITY_PARAM(2, 4)) { + setCallback(3); + setup_function30(); + break; + } + +label_callback_3: + if (ENTITY_PARAM(2, 3)) { + setCallback(4); + setup_function10(); + break; + } + +label_callback_4: + if (ENTITY_PARAM(0, 3)) { + setCallback(5); + setup_function7(); + break; + } + +label_callback_5: + if (ENTITY_PARAM(1, 2)) { + setCallback(6); + setup_function8(); + break; + } + break; + + case kActionCallback: + switch (getCallback()) { + default: + break; + + case 1: + goto label_callback_1; + + case 2: + goto label_callback_2; + + case 3: + goto label_callback_3; + + case 4: + goto label_callback_4; + + case 5: + goto label_callback_5; + } + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(29, Waiter1, augustAnnaDateOrder) + switch (savepoint.action) { + default: + break; + + case kActionDefault: + getData()->entityPosition = kPosition_5800; + getData()->location = kLocationOutsideCompartment; + + setCallback(1); + setup_draw("911"); + break; + + case kActionCallback: + switch (getCallback()) { + default: + break; + + case 1: + getSavePoints()->push(kEntityWaiter1, kEntityAnna, kAction122358304); + getEntities()->drawSequenceLeft(kEntityWaiter1, "026D"); + + setCallback(2); + setup_playSound("Ann3138"); + break; + + case 2: + getSavePoints()->push(kEntityWaiter1, kEntityAnna, kAction122288808); + + setCallback(3); + setup_draw("913"); + break; + + case 3: + getData()->entityPosition = kPosition_5900; + getEntities()->clearSequences(kEntityWaiter1); + ENTITY_PARAM(1, 5) = 0; + + callbackAction(); + break; + } + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(30, Waiter1, function30) + switch (savepoint.action) { + default: + break; + + case kActionDefault: + getData()->entityPosition = kPosition_5800; + getData()->location = kLocationOutsideCompartment; + + setCallback(1); + setup_draw("916"); + break; + + case kActionCallback: + switch (getCallback()) { + default: + break; + + case 1: + getSavePoints()->push(kEntityWaiter1, kEntityAbbot, kAction122358304); + getEntities()->drawSequenceLeft(kEntityWaiter1, "029D"); + + setCallback(2); + setup_playSound("Abb3016a"); + break; + + case 2: + getSavePoints()->push(kEntityWaiter1, kEntityAbbot, kAction122288808); + + setCallback(3); + setup_draw("918"); + break; + + case 3: + getData()->entityPosition = kPosition_5900; + getEntities()->clearSequences(kEntityWaiter1); + ENTITY_PARAM(2, 4) = 0; + + callbackAction(); + break; + } + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(31, Waiter1, chapter4) + switch (savepoint.action) { + default: + break; + + case kActionNone: + setup_chapter4Handler(); + break; + + case kActionDefault: + getEntities()->clearSequences(kEntityWaiter1); + + getData()->entityPosition = kPosition_5900; + getData()->location = kLocationOutsideCompartment; + getData()->car = kCarRestaurant; + getData()->clothes = kClothesDefault; + getData()->inventoryItem = kItemNone; + + ENTITY_PARAM(0, 3) = 0; + ENTITY_PARAM(1, 7) = 0; + ENTITY_PARAM(1, 8) = 0; + ENTITY_PARAM(2, 1) = 0; + ENTITY_PARAM(2, 2) = 0; + ENTITY_PARAM(2, 3) = 0; + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(32, Waiter1, chapter4Handler) + switch (savepoint.action) { + default: + break; + + case kActionNone: + if (Entity::updateParameter(params->param2, getState()->time, 3600)) { + ENTITY_PARAM(1, 8) = 1; + params->param1 = 0; + } + + if (!getEntities()->isInKitchen(kEntityWaiter2) || !getEntities()->isSomebodyInsideRestaurantOrSalon()) + break; + + if (ENTITY_PARAM(1, 7)) { + setCallback(1); + setup_augustOrderSteak(); + break; + } + +label_callback_1: + if (ENTITY_PARAM(1, 8)) { + setCallback(2); + setup_augustServeDuck(); + break; + } + +label_callback_2: + if (ENTITY_PARAM(2, 1)) { + setCallback(3); + setup_function35(); + break; + } + +label_callback_3: + if (ENTITY_PARAM(2, 2)) { + setCallback(4); + setup_function9(); + break; + } + +label_callback_4: + if (ENTITY_PARAM(2, 3)) { + setCallback(5); + setup_function10(); + break; + } + +label_callback_5: + if (ENTITY_PARAM(0, 3)) { + setCallback(6); + setup_function7(); + break; + } + break; + + case kActionCallback: + switch (getCallback()) { + default: + break; + + case 1: + params->param1 = 1; + goto label_callback_1; + + case 2: + goto label_callback_2; + + case 3: + goto label_callback_3; + + case 4: + goto label_callback_4; + + case 5: + goto label_callback_5; + } + break; + + case kAction201431954: + ENTITY_PARAM(0, 3) = 0; + ENTITY_PARAM(1, 7) = 0; + ENTITY_PARAM(1, 8) = 0; + ENTITY_PARAM(2, 1) = 0; + ENTITY_PARAM(2, 3) = 0; + params->param1 = 0; + + getData()->entityPosition = kPosition_5900; + getData()->location = kLocationOutsideCompartment; + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(33, Waiter1, augustOrderSteak) + switch (savepoint.action) { + default: + break; + + case kActionDefault: + setCallback(1); + setup_draw("911"); + break; + + case kActionCallback: + switch (getCallback()) { + default: + break; + + case 1: + getEntities()->drawSequenceLeft(kEntityWaiter1, "010F3"); + getEntities()->drawSequenceLeft(kEntityAugust, "010D3"); + + setCallback(2); + setup_playSound("AUG4002"); + break; + + case 2: + getSavePoints()->push(kEntityWaiter1, kEntityAugust, kAction122288808); + + setCallback(3); + setup_draw("913"); + break; + + case 3: + getData()->entityPosition = kPosition_5900; + getEntities()->clearSequences(kEntityWaiter1); + ENTITY_PARAM(1, 7) = 0; + + callbackAction(); + break; + } + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(34, Waiter1, augustServeDuck) + switch (savepoint.action) { + default: + break; + + case kActionDefault: + setCallback(1); + setup_draw("912"); + break; + + case kActionCallback: + switch (getCallback()) { + default: + break; + + case 1: + getSavePoints()->push(kEntityWaiter1, kEntityAugust, kAction122358304); + getSound()->playSound(kEntityWaiter1, "AUG1053"); + + setCallback(2); + setup_draw("010G3"); + break; + + case 2: + getSavePoints()->push(kEntityWaiter1, kEntityAugust, kAction201964801); + + setCallback(3); + setup_draw("914"); + break; + + case 3: + getData()->entityPosition = kPosition_5900; + getEntities()->clearSequences(kEntityWaiter1); + ENTITY_PARAM(1, 8) = 0; + + callbackAction(); + break; + } + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(35, Waiter1, function35) + serveTable(savepoint, "911", kEntityTables3, "010L", "010M", "914", &ENTITY_PARAM(2, 1), false, true); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(36, Waiter1, chapter5) + switch (savepoint.action) { + default: + break; + + case kActionNone: + setup_chapter5Handler(); + break; + + case kActionDefault: + getEntities()->clearSequences(kEntityWaiter1); + + getData()->entityPosition = kPosition_3969; + getData()->location = kLocationInsideCompartment; + getData()->car = kCarRestaurant; + getData()->inventoryItem = kItemNone; + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(37, Waiter1, chapter5Handler) + if (savepoint.action == kActionProceedChapter5) + setup_nullfunction(); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_NULL_FUNCTION(38, Waiter1) + + +////////////////////////////////////////////////////////////////////////// +// Private functions +////////////////////////////////////////////////////////////////////////// +void Waiter1::handleServer(const SavePoint &savepoint, const char *name, EntityIndex entity, ActionIndex action, uint *parameter, const char *name2) { + switch (savepoint.action) { + default: + break; + + case kActionDefault: + getData()->entityPosition = kPosition_5800; + getData()->location = kLocationOutsideCompartment; + + setCallback(1); + setup_draw(name); + break; + + case kActionCallback: + if (getCallback() == 1) { + // Prepare or draw sequences depending of value of string + if (strcmp(name2, "")) + getEntities()->clearSequences(kEntityWaiter1); + else + getEntities()->drawSequenceLeft(kEntityWaiter1, name2); + + getSavePoints()->push(kEntityWaiter1, entity, action); + *parameter = 0; + + callbackAction(); + } + break; + } +} + +////////////////////////////////////////////////////////////////////////// +void Waiter1::serveTable(const SavePoint &savepoint, const char *seq1, EntityIndex entity, const char *seq2, const char *seq3, const char *seq4, uint *parameter, bool shouldUpdatePosition, bool pushSavepoint, Position position) { + switch (savepoint.action) { + default: + break; + + case kActionDefault: + if (shouldUpdatePosition) { + getData()->entityPosition = kPosition_5800; + getData()->location = kLocationOutsideCompartment; + } + + setCallback(1); + setup_draw(seq1); + break; + + case kActionCallback: + switch (getCallback()) { + default: + break; + + case 1: + if (position) + getEntities()->updatePositionEnter(kEntityWaiter1, kCarRestaurant, position); + + getSavePoints()->push(kEntityWaiter1, entity, kAction136455232); + + setCallback(2); + setup_callSavepoint(seq2, entity, kActionDrawTablesWithChairs, seq3); + break; + + case 2: + if (position) + getEntities()->updatePositionExit(kEntityWaiter1, kCarRestaurant, position); + + setCallback(3); + setup_draw(seq4); + break; + + case 3: + getData()->entityPosition = kPosition_5900; + + // Special case for functions 19 & 35 + if (pushSavepoint) + getSavePoints()->push(kEntityWaiter1, kEntityRebecca, kAction224253538); + + getEntities()->clearSequences(kEntityWaiter1); + *parameter = 0; + + callbackAction(); + break; + } + break; + } +} + +} // End of namespace LastExpress diff --git a/engines/lastexpress/entities/waiter1.h b/engines/lastexpress/entities/waiter1.h new file mode 100644 index 0000000000..2a0c56e8ab --- /dev/null +++ b/engines/lastexpress/entities/waiter1.h @@ -0,0 +1,168 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef LASTEXPRESS_WAITER1_H +#define LASTEXPRESS_WAITER1_H + +#include "lastexpress/entities/entity.h" + +namespace LastExpress { + +class LastExpressEngine; + +class Waiter1 : public Entity { +public: + Waiter1(LastExpressEngine *engine); + ~Waiter1() {} + + /** + * Call a savepoint (or draw sequence in default case) + * + * @param sequence1 The sequence to draw in the default case + * @param entity The entity + * @param action The action + * @param sequence2 The sequence name for the savepoint + */ + DECLARE_FUNCTION_4(callSavepoint, const char *sequence1, EntityIndex entity, ActionIndex action, const char *sequence2) + + /** + * Updates parameter 2 using time value + * + * @param savepoint The savepoint + * - Time to add + */ + DECLARE_FUNCTION_NOSETUP(updateFromTime) + + /** + * Draws the entity + * + * @param sequence The sequence to draw + */ + DECLARE_FUNCTION_1(draw, const char *sequence) + + /** + * Updates the position + * + * @param sequence1 The sequence to draw + * @param car The car + * @param position The position + */ + DECLARE_FUNCTION_3(updatePosition, const char *sequence1, CarIndex car, Position position) + + /** + * Process callback action when the entity direction is not kDirectionRight + */ + DECLARE_FUNCTION_NOSETUP(callbackActionOnDirection) + + /** + * Plays sound + * + * @param filename The sound filename + */ + DECLARE_FUNCTION_1(playSound, const char *filename) + + DECLARE_FUNCTION(function7) + DECLARE_FUNCTION(function8) + DECLARE_FUNCTION(function9) + DECLARE_FUNCTION(function10) + + /** + * Setup Chapter 1 + */ + DECLARE_FUNCTION(chapter1) + DECLARE_FUNCTION(function12) + DECLARE_FUNCTION(function13) + DECLARE_FUNCTION(function14) + DECLARE_FUNCTION(function15) + DECLARE_FUNCTION(function16) + DECLARE_FUNCTION(function17) + DECLARE_FUNCTION(function18) + DECLARE_FUNCTION(function19) + + /** + * Handle Chapter 1 events + */ + DECLARE_FUNCTION(chapter1Handler) + + DECLARE_FUNCTION(function21) + DECLARE_FUNCTION(function22) + + /** + * Setup Chapter 2 + */ + DECLARE_FUNCTION(chapter2) + + /** + * Handle Chapter 2 events + */ + DECLARE_FUNCTION(chapter2Handler) + + DECLARE_FUNCTION(function25) + DECLARE_FUNCTION(function26) + + /** + * Setup Chapter 3 + */ + DECLARE_FUNCTION(chapter3) + + /** + * Handle Chapter 3 events + */ + DECLARE_FUNCTION(chapter3Handler) + + DECLARE_FUNCTION(augustAnnaDateOrder) + DECLARE_FUNCTION(function30) + + /** + * Setup Chapter 4 + */ + DECLARE_FUNCTION(chapter4) + + /** + * Handle Chapter 4 events + */ + DECLARE_FUNCTION(chapter4Handler) + + DECLARE_FUNCTION(augustOrderSteak) + DECLARE_FUNCTION(augustServeDuck) + DECLARE_FUNCTION(function35) + + /** + * Setup Chapter 5 + */ + DECLARE_FUNCTION(chapter5) + + /** + * Handle Chapter 5 events + */ + DECLARE_FUNCTION(chapter5Handler) + + DECLARE_NULL_FUNCTION() + +private: + void handleServer(const SavePoint &savepoint, const char *name, EntityIndex entity, ActionIndex action, uint *parameter, const char *name2 = ""); + void serveTable(const SavePoint &savepoint, const char *seq1, EntityIndex entity, const char *seq2, const char *seq3, const char *seq4, uint *parameter, bool shouldUpdatePosition = true, bool pushSavepoint = false, Position position = 0); +}; + +} // End of namespace LastExpress + +#endif // LASTEXPRESS_WAITER1_H diff --git a/engines/lastexpress/entities/waiter2.cpp b/engines/lastexpress/entities/waiter2.cpp new file mode 100644 index 0000000000..8641818454 --- /dev/null +++ b/engines/lastexpress/entities/waiter2.cpp @@ -0,0 +1,782 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "lastexpress/entities/waiter2.h" + +#include "lastexpress/game/entities.h" +#include "lastexpress/game/logic.h" +#include "lastexpress/game/object.h" +#include "lastexpress/game/savepoint.h" +#include "lastexpress/game/state.h" + +#include "lastexpress/lastexpress.h" + +namespace LastExpress { + +Waiter2::Waiter2(LastExpressEngine *engine) : Entity(engine, kEntityWaiter2) { + ADD_CALLBACK_FUNCTION(Waiter2, updateFromTime); + ADD_CALLBACK_FUNCTION(Waiter2, draw); + ADD_CALLBACK_FUNCTION(Waiter2, updatePosition); + ADD_CALLBACK_FUNCTION(Waiter2, callbackActionOnDirection); + ADD_CALLBACK_FUNCTION(Waiter2, callSavepoint); + ADD_CALLBACK_FUNCTION(Waiter2, playSound); + ADD_CALLBACK_FUNCTION(Waiter2, function7); + ADD_CALLBACK_FUNCTION(Waiter2, chapter1); + ADD_CALLBACK_FUNCTION(Waiter2, function9); + ADD_CALLBACK_FUNCTION(Waiter2, function10); + ADD_CALLBACK_FUNCTION(Waiter2, function11); + ADD_CALLBACK_FUNCTION(Waiter2, function12); + ADD_CALLBACK_FUNCTION(Waiter2, function13); + ADD_CALLBACK_FUNCTION(Waiter2, chapter1Handler); + ADD_CALLBACK_FUNCTION(Waiter2, function15); + ADD_CALLBACK_FUNCTION(Waiter2, function16); + ADD_CALLBACK_FUNCTION(Waiter2, chapter2); + ADD_CALLBACK_FUNCTION(Waiter2, chapter2Handler); + ADD_CALLBACK_FUNCTION(Waiter2, function19); + ADD_CALLBACK_FUNCTION(Waiter2, function20); + ADD_CALLBACK_FUNCTION(Waiter2, function21); + ADD_CALLBACK_FUNCTION(Waiter2, chapter3); + ADD_CALLBACK_FUNCTION(Waiter2, chapter3Handler); + ADD_CALLBACK_FUNCTION(Waiter2, function24); + ADD_CALLBACK_FUNCTION(Waiter2, chapter4); + ADD_CALLBACK_FUNCTION(Waiter2, chapter4Handler); + ADD_CALLBACK_FUNCTION(Waiter2, function27); + ADD_CALLBACK_FUNCTION(Waiter2, function28); + ADD_CALLBACK_FUNCTION(Waiter2, function29); + ADD_CALLBACK_FUNCTION(Waiter2, chapter5); + ADD_CALLBACK_FUNCTION(Waiter2, chapter5Handler); + ADD_NULL_FUNCTION() +} + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION_NOSETUP(1, Waiter2, updateFromTime) + Entity::updateFromTime(savepoint); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION_S(2, Waiter2, draw) + Entity::draw(savepoint, true); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION_SII(3, Waiter2, updatePosition, CarIndex, Position) + Entity::updatePosition(savepoint, true); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(4, Waiter2, callbackActionOnDirection) + if (savepoint.action == kActionExcuseMeCath) { + if (!params->param1) { + getSound()->excuseMe(kEntityWaiter2); + params->param1 = 1; + } + } + + Entity::callbackActionOnDirection(savepoint); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION_SIIS(5, Waiter2, callSavepoint, EntityIndex, ActionIndex) + Entity::callSavepoint(savepoint, true); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION_S(6, Waiter2, playSound) + Entity::playSound(savepoint); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(7, Waiter2, function7) + switch (savepoint.action) { + default: + break; + + case kActionDefault: + getData()->entityPosition = kPosition_5800; + getData()->location = kLocationOutsideCompartment; + + setCallback(1); + setup_draw("924"); + break; + + case kActionCallback: + switch (getCallback()) { + default: + break; + + case 1: + getSavePoints()->push(kEntityWaiter2, kEntityBoutarel, kAction122358304); + setCallback(2); + setup_draw("008C"); + break; + + case 2: + getSavePoints()->push(kEntityWaiter2, kEntityBoutarel, kAction122288808); + setCallback(2); + setup_draw("926"); + break; + + case 3: + getEntities()->clearSequences(kEntityWaiter2); + getData()->entityPosition = kPosition_5900; + ENTITY_PARAM(1, 2) = 0; + + callbackAction(); + break; + } + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(8, Waiter2, chapter1) + switch (savepoint.action) { + default: + break; + + case kActionNone: + setup_chapter1Handler(); + break; + + case kActionDefault: + getSavePoints()->addData(kEntityWaiter2, kAction223002560, 0); + getSavePoints()->addData(kEntityWaiter2, kAction302996448, 2); + getSavePoints()->addData(kEntityWaiter2, kAction269485588, 3); + getSavePoints()->addData(kEntityWaiter2, kAction326144276, 4); + getSavePoints()->addData(kEntityWaiter2, kAction302203328, 5); + getSavePoints()->addData(kEntityWaiter2, kAction189688608, 6); + getSavePoints()->addData(kEntityWaiter2, kAction236237423, 7); + getSavePoints()->addData(kEntityWaiter2, kAction219377792, 8); + getSavePoints()->addData(kEntityWaiter2, kAction256200848, 9); + getSavePoints()->addData(kEntityWaiter2, kAction291721418, 10); + getSavePoints()->addData(kEntityWaiter2, kAction258136010, 11); + + getData()->entityPosition = kPosition_5900; + getData()->location = kLocationOutsideCompartment; + getData()->car = kCarRestaurant; + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(9, Waiter2, function9) + switch (savepoint.action) { + default: + break; + + case kActionDefault: + getData()->entityPosition = kPosition_5800; + getData()->location = kLocationOutsideCompartment; + + setCallback(1); + setup_draw("924"); + break; + + case kActionCallback: + switch (getCallback()) { + default: + break; + + case 1: + getEntities()->drawSequenceLeft(kEntityMilos, "BLANK"); + getEntities()->drawSequenceLeft(kEntityWaiter2, "009B"); + + setCallback(2); + setup_playSound("WAT1001"); + break; + + case 2: + getEntities()->drawSequenceLeft(kEntityMilos, "009A"); + + setCallback(3); + setup_draw("926"); + break; + + case 3: + getEntities()->clearSequences(kEntityWaiter2); + getData()->entityPosition = kPosition_5900; + ENTITY_PARAM(0, 1) = 0; + + callbackAction(); + break; + } + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(10, Waiter2, function10) + switch (savepoint.action) { + default: + break; + + case kActionDefault: + getData()->entityPosition = kPosition_5800; + getData()->location = kLocationOutsideCompartment; + + setCallback(1); + setup_draw("924"); + break; + + case kActionCallback: + switch (getCallback()) { + default: + break; + + case 1: + getEntities()->drawSequenceLeft(kEntityBoutarel, "BLANK"); + getEntities()->drawSequenceLeft(kEntityWaiter2, "008C"); + + setCallback(2); + setup_playSound("MRB1077"); + break; + + case 2: + getSavePoints()->push(kEntityWaiter2, kEntityBoutarel, kAction168717392); + + setCallback(3); + setup_draw("926"); + break; + + case 3: + getEntities()->clearSequences(kEntityWaiter2); + getData()->entityPosition = kPosition_5900; + ENTITY_PARAM(0, 2) = 0; + + callbackAction(); + break; + } + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(11, Waiter2, function11) + serveTable(savepoint, "919", kEntityTables1, "005H", "005J", "921", &ENTITY_PARAM(0, 3), 63); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(12, Waiter2, function12) + serveTable(savepoint, "923", kEntityTables2, "009F", "009G", "926", &ENTITY_PARAM(0, 4)); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(13, Waiter2, function13) + serveTable(savepoint, "923", kEntityTables2, "009F", "009G", "926", &ENTITY_PARAM(0, 5)); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(14, Waiter2, chapter1Handler) +switch (savepoint.action) { + default: + break; + + case kActionDefault: + if (!getEntities()->isInKitchen(kEntityWaiter2) || !getEntities()->isSomebodyInsideRestaurantOrSalon()) + break; + + if (ENTITY_PARAM(0, 1)) { + setCallback(1); + setup_function9(); + break; + } + + if (ENTITY_PARAM(1, 2)) { + setCallback(2); + setup_function10(); + break; + } + + if (ENTITY_PARAM(0, 3)) { + setCallback(3); + setup_function11(); + break; + } + + if (ENTITY_PARAM(0, 4)) { + setCallback(4); + setup_function12(); + break; + } + + if (ENTITY_PARAM(0, 5)) { + setCallback(5); + setup_function13(); + } + break; + + case kActionCallback: + if (getCallback() == 5) { + getSavePoints()->push(kEntityWaiter2, kEntityPascale, kAction352768896); + setup_function15(); + } + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(15, Waiter2, function15) + switch (savepoint.action) { + default: + break; + + case kActionDefault: + getData()->entityPosition = kPosition_5900; + break; + + case kAction101632192: + setup_function16(); + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(16, Waiter2, function16) + if (savepoint.action == kActionDefault) { + getData()->entityPosition = kPosition_5900; + getData()->location = kLocationOutsideCompartment; + getData()->car = kCarRestaurant; + + getEntities()->clearSequences(kEntityWaiter2); + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(17, Waiter2, chapter2) + switch (savepoint.action) { + default: + break; + + case kActionNone: + setup_chapter2Handler(); + break; + + case kActionDefault: + getEntities()->clearSequences(kEntityWaiter2); + + getData()->entityPosition = kPosition_5900; + getData()->location = kLocationOutsideCompartment; + getData()->car = kCarRestaurant; + getData()->clothes = kClothes1; + getData()->inventoryItem = kItemNone; + + ENTITY_PARAM(0, 6) = 0; + ENTITY_PARAM(0, 7) = 0; + ENTITY_PARAM(0, 8) = 0; + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(18, Waiter2, chapter2Handler) + switch (savepoint.action) { + default: + break; + + case kActionNone: + if (!getEntities()->isInKitchen(kEntityWaiter2) || !getEntities()->isSomebodyInsideRestaurantOrSalon()) + break; + + if (ENTITY_PARAM(0, 6)) { + setCallback(1); + setup_function19(); + break; + } + +label_callback_1: + if (ENTITY_PARAM(0, 7)) { + setCallback(2); + setup_function20(); + break; + } + +label_callback_2: + if (ENTITY_PARAM(0, 8) || ENTITY_PARAM(0, 5)) { + setCallback(3); + setup_function21(); + } + break; + + case kActionCallback: + switch (getCallback()) { + default: + break; + + case 1: + goto label_callback_1; + + case 2: + goto label_callback_2; + + case 4: + getEntities()->clearSequences(kEntityWaiter2); + getData()->entityPosition = kPosition_5900; + break; + } + break; + + case kAction101106391: + setCallback(4); + setup_draw("975"); + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(19, Waiter2, function19) + serveTable(savepoint, "969", kEntityTables1, "005H2", "018A", "971", &ENTITY_PARAM(0, 6), 63); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(20, Waiter2, function20) + switch (savepoint.action) { + default: + break; + + case kActionDefault: + getData()->entityPosition = kPosition_5800; + getData()->location = kLocationOutsideCompartment; + + setCallback(1); + setup_draw("973"); + break; + + case kActionCallback: + if (getCallback() == 1) { + getSavePoints()->push(kEntityWaiter2, kEntityIvo, kAction123712592); + getEntities()->drawSequenceLeft(kEntityWaiter2, "BLANK"); + ENTITY_PARAM(0, 7) = 0; + + callbackAction(); + } + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(21, Waiter2, function21) + serveTable(savepoint, "974", kEntityTables2, "009F2", "009G", "976", &ENTITY_PARAM(0, 8), 0, true, &ENTITY_PARAM(0, 5)); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(22, Waiter2, chapter3) + switch (savepoint.action) { + default: + break; + + case kActionNone: + setup_chapter3Handler(); + break; + + case kActionDefault: + getEntities()->clearSequences(kEntityWaiter2); + + getData()->entityPosition = kPosition_5900; + getData()->location = kLocationOutsideCompartment; + getData()->car = kCarRestaurant; + getData()->clothes = kClothes1; + getData()->inventoryItem = kItemNone; + + ENTITY_PARAM(1, 1) = 0; + ENTITY_PARAM(1, 2) = 0; + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(23, Waiter2, chapter3Handler) + if (savepoint.action != kActionNone) + return; + + if (!getEntities()->isInKitchen(kEntityWaiter2) || !getEntities()->isSomebodyInsideRestaurantOrSalon()) + return; + + if (ENTITY_PARAM(1, 1)) { + setCallback(1); + setup_function24(); + return; + } + + if (ENTITY_PARAM(1, 2)) { + setCallback(2); + setup_function7(); + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(24, Waiter2, function24) + serveSalon(savepoint, "927", "Ann3143A", kEntityAnna, "Ann31444", "112C", kAction122288808, "928", &ENTITY_PARAM(1, 1)); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(25, Waiter2, chapter4) + switch (savepoint.action) { + default: + break; + + case kActionNone: + setup_chapter4Handler(); + break; + + case kActionDefault: + getEntities()->clearSequences(kEntityWaiter2); + + getData()->entityPosition = kPosition_5900; + getData()->location = kLocationOutsideCompartment; + getData()->car = kCarRestaurant; + getData()->inventoryItem = kItemNone; + + getEntities()->clearSequences(kEntityWaiter2); + + ENTITY_PARAM(1, 2) = 0; + ENTITY_PARAM(1, 3) = 0; + ENTITY_PARAM(1, 4) = 0; + ENTITY_PARAM(1, 5) = 0; + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(26, Waiter2, chapter4Handler) + switch (savepoint.action) { + default: + break; + + case kActionNone: + if (params->param2) { + if (Entity::updateParameter(params->param2, getState()->time, 900)) { + ENTITY_PARAM(1, 5) = 1; + params->param1 = 0; + } + } + + if (!getEntities()->isInKitchen(kEntityWaiter2) || !getEntities()->isSomebodyInsideRestaurantOrSalon()) + break; + + if (ENTITY_PARAM(1, 5)) { + setCallback(2); + setup_function28(); + break; + } + + if (ENTITY_PARAM(1, 4)) { + setCallback(3); + setup_function29(); + break; + } + + if (ENTITY_PARAM(1, 2)) { + setCallback(4); + setup_function7(); + } + break; + + case kActionCallback: + if (getCallback() == 1) + params->param1 = 1; + break; + + case kAction201431954: + ENTITY_PARAM(1, 2) = 0; + ENTITY_PARAM(1, 3) = 0; + ENTITY_PARAM(1, 4) = 0; + ENTITY_PARAM(1, 5) = 0; + + getData()->entityPosition = kPosition_5900; + getData()->location = kLocationOutsideCompartment; + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(27, Waiter2, function27) + serveSalon(savepoint, "929", "", kEntityAugust, "Aug4003", "122D", kAction134486752, "930", &ENTITY_PARAM(1, 3)); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(28, Waiter2, function28) + serveSalon(savepoint, "931", "", kEntityAugust, "Aug4004", "122E", kAction125826561, "930", &ENTITY_PARAM(1, 5)); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(29, Waiter2, function29) + serveSalon(savepoint, "932", "", kEntityAnna, "Ann4151", "127D", kAction122288808, "930", &ENTITY_PARAM(1, 4)); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(30, Waiter2, chapter5) + switch (savepoint.action) { + default: + break; + + case kActionNone: + setup_chapter5Handler(); + break; + + case kActionDefault: + getEntities()->clearSequences(kEntityWaiter2); + + getData()->entityPosition = kPosition_3969; + getData()->location = kLocationInsideCompartment; + getData()->car = kCarRestaurant; + getData()->inventoryItem = kItemNone; + break; + } +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_FUNCTION(31, Waiter2, chapter5Handler) + if (savepoint.action == kActionProceedChapter5) + setup_nullfunction(); +IMPLEMENT_FUNCTION_END + +////////////////////////////////////////////////////////////////////////// +IMPLEMENT_NULL_FUNCTION(32, Waiter2) + + +////////////////////////////////////////////////////////////////////////// +// Private functions +////////////////////////////////////////////////////////////////////////// +void Waiter2::serveTable(const SavePoint &savepoint, const char *seq1, EntityIndex entity, const char *seq2, const char *seq3, const char *seq4, uint *parameter, Position position, bool shouldUpdatePosition, uint *parameter2) { + switch (savepoint.action) { + default: + break; + + case kActionDefault: + if (shouldUpdatePosition) { + getData()->entityPosition = kPosition_5800; + getData()->location = kLocationOutsideCompartment; + } + + setCallback(1); + setup_draw(seq1); + break; + + case kActionCallback: + switch (getCallback()) { + default: + break; + + case 1: + if (position) + getEntities()->updatePositionEnter(kEntityWaiter2, kCarRestaurant, position); + + getSavePoints()->push(kEntityWaiter2, entity, kAction136455232); + + setCallback(2); + setup_callSavepoint(seq2, entity, kActionDrawTablesWithChairs, seq3); + break; + + case 2: + if (position) + getEntities()->updatePositionExit(kEntityWaiter2, kCarRestaurant, position); + + setCallback(3); + setup_draw(seq4); + break; + + case 3: + getData()->entityPosition = kPosition_5900; + getEntities()->clearSequences(kEntityWaiter2); + *parameter = 0; + + if (parameter2 != NULL) + *parameter2 = 0; + + callbackAction(); + break; + } + break; + } +} + +////////////////////////////////////////////////////////////////////////// +void Waiter2::serveSalon(const SavePoint &savepoint, const char *seq1, const char *snd1, EntityIndex entity, const char *snd2, const char *seq2, ActionIndex action, const char *seq3, uint *parameter) { + switch (savepoint.action) { + default: + break; + + case kActionDefault: + getData()->entityPosition = kPosition_5800; + getData()->location = kLocationOutsideCompartment; + + setCallback(1); + setup_draw("816DD"); + break; + + case kActionCallback: + switch (getCallback()) { + default: + break; + + case 1: + getEntities()->drawSequenceRight(kEntityWaiter2, seq1); + + if (getEntities()->isInRestaurant(kEntityPlayer)) + getEntities()->updateFrame(kEntityWaiter2); + + if (!strcmp(snd1, "")) + getSound()->playSound(kEntityWaiter2, snd1); + + setCallback(2); + setup_callbackActionOnDirection(); + break; + + case 2: + getSavePoints()->push(kEntityWaiter2, entity, kAction122358304); + + getSound()->playSound(kEntityWaiter2, snd2); + + setCallback(3); + setup_updatePosition(seq2, kCarRestaurant, 57); + break; + + case 3: + getSavePoints()->push(kEntityWaiter2, entity, action); + + setCallback(4); + setup_draw(seq3); + break; + + case 4: + getEntities()->drawSequenceRight(kEntityWaiter2, "816UD"); + + if (getEntities()->isInSalon(kEntityPlayer)) + getEntities()->updateFrame(kEntityWaiter2); + + setCallback(5); + setup_callbackActionOnDirection(); + break; + + case 5: + getEntities()->clearSequences(kEntityWaiter2); + getData()->entityPosition = kPosition_5900; + *parameter = 0; + + callbackAction(); + break; + } + break; + } +} + +} // End of namespace LastExpress diff --git a/engines/lastexpress/entities/waiter2.h b/engines/lastexpress/entities/waiter2.h new file mode 100644 index 0000000000..0ed85cd1a0 --- /dev/null +++ b/engines/lastexpress/entities/waiter2.h @@ -0,0 +1,163 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef LASTEXPRESS_WAITER2_H +#define LASTEXPRESS_WAITER2_H + +#include "lastexpress/entities/entity.h" + +namespace LastExpress { + +class LastExpressEngine; + +class Waiter2 : public Entity { +public: + Waiter2(LastExpressEngine *engine); + ~Waiter2() {} + + /** + * Updates parameter 2 using time value + * + * @param savepoint The savepoint + * - Time to add + */ + DECLARE_FUNCTION_NOSETUP(updateFromTime) + + /** + * Draws the entity + * + * @param sequence The sequence to draw + */ + DECLARE_FUNCTION_1(draw, const char *sequence) + + /** + * Updates the position + * + * @param sequence1 The sequence to draw + * @param car The car + * @param position The position + */ + DECLARE_FUNCTION_3(updatePosition, const char *sequence, CarIndex car, Position position) + + /** + * Process callback action when the entity direction is not kDirectionRight + */ + DECLARE_FUNCTION(callbackActionOnDirection) + + /** + * Call a savepoint (or draw sequence in default case) + * + * @param sequence1 The sequence to draw in the default case + * @param entity The entity + * @param action The action + * @param sequence2 The sequence name for the savepoint + */ + DECLARE_FUNCTION_4(callSavepoint, const char *sequence1, EntityIndex entity, ActionIndex action, const char *sequence2) + + /** + * Plays sound + * + * @param filename The sound filename + */ + DECLARE_FUNCTION_1(playSound, const char *filename) + + DECLARE_FUNCTION(function7) + + /** + * Setup Chapter 1 + */ + DECLARE_FUNCTION(chapter1) + + DECLARE_FUNCTION(function9) + DECLARE_FUNCTION(function10) + DECLARE_FUNCTION(function11) + DECLARE_FUNCTION(function12) + DECLARE_FUNCTION(function13) + + /** + * Handle Chapter 1 events + */ + DECLARE_FUNCTION(chapter1Handler) + + DECLARE_FUNCTION(function15) + DECLARE_FUNCTION(function16) + + /** + * Setup Chapter 2 + */ + DECLARE_FUNCTION(chapter2) + + /** + * Handle Chapter 2 events + */ + DECLARE_FUNCTION(chapter2Handler) + + DECLARE_FUNCTION(function19) + DECLARE_FUNCTION(function20) + DECLARE_FUNCTION(function21) + + /** + * Setup Chapter 3 + */ + DECLARE_FUNCTION(chapter3) + + /** + * Handle Chapter 3 events + */ + DECLARE_FUNCTION(chapter3Handler) + + DECLARE_FUNCTION(function24) + + /** + * Setup Chapter 4 + */ + DECLARE_FUNCTION(chapter4) + + /** + * Handle Chapter 4 events + */ + DECLARE_FUNCTION(chapter4Handler) + + DECLARE_FUNCTION(function27) + DECLARE_FUNCTION(function28) + DECLARE_FUNCTION(function29) + + /** + * Setup Chapter 5 + */ + DECLARE_FUNCTION(chapter5) + + /** + * Handle Chapter 5 events + */ + DECLARE_FUNCTION(chapter5Handler) + + DECLARE_NULL_FUNCTION() + +private: + void serveTable(const SavePoint &savepoint, const char *seq1, EntityIndex entity, const char *seq2, const char *seq3, const char *seq4, uint *parameter, Position position = 0, bool updatePosition = true, uint *parameter2 = NULL); + void serveSalon(const SavePoint &savepoint, const char *seq1, const char *snd1, EntityIndex entity, const char *snd2, const char *seq2, ActionIndex action, const char *seq3, uint *parameter); +}; + +} // End of namespace LastExpress + +#endif // LASTEXPRESS_WAITER2_H diff --git a/engines/lastexpress/game/entities.cpp b/engines/lastexpress/game/entities.cpp index b4b5527f8d..26a82884b1 100644 --- a/engines/lastexpress/game/entities.cpp +++ b/engines/lastexpress/game/entities.cpp @@ -51,8 +51,6 @@ #include "lastexpress/entities/pascale.h" #include "lastexpress/entities/rebecca.h" #include "lastexpress/entities/salko.h" -#include "lastexpress/entities/servers0.h" -#include "lastexpress/entities/servers1.h" #include "lastexpress/entities/sophie.h" #include "lastexpress/entities/tables.h" #include "lastexpress/entities/tatiana.h" @@ -60,6 +58,8 @@ #include "lastexpress/entities/vassili.h" #include "lastexpress/entities/verges.h" #include "lastexpress/entities/vesna.h" +#include "lastexpress/entities/waiter1.h" +#include "lastexpress/entities/waiter2.h" #include "lastexpress/entities/yasmin.h" // Game @@ -134,8 +134,8 @@ Entities::Entities(LastExpressEngine *engine) : _engine(engine) { ADD_ENTITY(Mertens); ADD_ENTITY(Coudert); ADD_ENTITY(Pascale); - ADD_ENTITY(Servers0); - ADD_ENTITY(Servers1); + ADD_ENTITY(Waiter1); + ADD_ENTITY(Waiter2); ADD_ENTITY(Cooks); ADD_ENTITY(Verges); ADD_ENTITY(Tatiana); diff --git a/engines/lastexpress/lastexpress.cpp b/engines/lastexpress/lastexpress.cpp index 293c3ab725..90b684ab0b 100644 --- a/engines/lastexpress/lastexpress.cpp +++ b/engines/lastexpress/lastexpress.cpp @@ -48,7 +48,7 @@ const char *g_actionNames[] = {"None", "Action1", "Action2", "ExitCompartment", "Action4", "ExcuseMeCath", "ExcuseMe", "INVALID", "Knock", "OpenDoor", "Action10", "Action11", "Default", "INVALID", "INVALID", "INVALID", "Action16", "DrawScene", "Callback"}; const char *g_directionNames[] = { "None", "Up", "Down", "Left", "Right", "Switch"}; -const char *g_entityNames[] = { "Player", "Anna", "August", "Mertens", "Coudert", "Pascale", "Servers0", "Servers1", "Cooks", "Verges", "Tatiana", "Vassili", "Alexei", "Abbot", "Milos", "Vesna", "Ivo", "Salko", "Kronos", "Kahina", "Francois", "MmeBoutarel", "Boutarel", "Rebecca", "Sophie", "Mahmud", "Yasmin", "Hadija", "Alouan", "Gendarmes", "Max", "Chapters", "Train", "Tables0", "Tables1", "Tables2", "Tables3", "Tables4", "Tables5", "Entity39"}; +const char *g_entityNames[] = { "Player", "Anna", "August", "Mertens", "Coudert", "Pascale", "Waiter1", "Waiter2", "Cooks", "Verges", "Tatiana", "Vassili", "Alexei", "Abbot", "Milos", "Vesna", "Ivo", "Salko", "Kronos", "Kahina", "Francois", "MmeBoutarel", "Boutarel", "Rebecca", "Sophie", "Mahmud", "Yasmin", "Hadija", "Alouan", "Gendarmes", "Max", "Chapters", "Train", "Tables0", "Tables1", "Tables2", "Tables3", "Tables4", "Tables5", "Entity39"}; namespace LastExpress { diff --git a/engines/lastexpress/module.mk b/engines/lastexpress/module.mk index 8b3287d5d7..afce0b0749 100644 --- a/engines/lastexpress/module.mk +++ b/engines/lastexpress/module.mk @@ -35,8 +35,6 @@ MODULE_OBJS := \ entities/pascale.o \ entities/rebecca.o \ entities/salko.o \ - entities/servers0.o \ - entities/servers1.o \ entities/sophie.o \ entities/tables.o \ entities/tatiana.o \ @@ -44,6 +42,8 @@ MODULE_OBJS := \ entities/vassili.o \ entities/verges.o \ entities/vesna.o \ + entities/waiter1.o \ + entities/waiter2.o \ entities/yasmin.o \ fight/fight.o \ fight/fighter.o \ diff --git a/engines/lastexpress/shared.h b/engines/lastexpress/shared.h index c0099db7ac..724c4b3fb4 100644 --- a/engines/lastexpress/shared.h +++ b/engines/lastexpress/shared.h @@ -1006,8 +1006,8 @@ enum EntityIndex { kEntityMertens, kEntityCoudert, kEntityPascale, // 5 - kEntityServers0, - kEntityServers1, + kEntityWaiter1, + kEntityWaiter2, kEntityCooks, kEntityVerges, kEntityTatiana, // 10 @@ -1409,7 +1409,7 @@ enum ActionIndex { kAction169032608 = 169032608, kAction189426612 = 189426612, kAction203859488 = 203859488, - kAction219522616 = 219522616, // Servers0 + kAction219522616 = 219522616, // Waiter1 kAction225182640 = 225182640, kAction235257824 = 235257824, @@ -1520,7 +1520,7 @@ enum ActionIndex { kAction71277948 = 71277948, kAction158007856 = 158007856, kAction101687594 = 101687594, - kAction122358304 = 122358304, // also Servers1/Boutarel? + kAction122358304 = 122358304, // also Waiter2/Boutarel? kActionMaxFreeFromCage = 135204609, kAction156622016 = 156622016, diff --git a/engines/lastexpress/sound/sound.cpp b/engines/lastexpress/sound/sound.cpp index 5f55f4e74e..3a2d0c075c 100644 --- a/engines/lastexpress/sound/sound.cpp +++ b/engines/lastexpress/sound/sound.cpp @@ -984,22 +984,22 @@ void SoundManager::excuseMe(EntityIndex entity, EntityIndex entity2, SoundFlag f playSound(kEntityPlayer, (rnd(2) ? "HDE1002" : "HED1002A"), flag); break; - case kEntityServers0: - case kEntityServers1: + case kEntityWaiter1: + case kEntityWaiter2: switch(rnd(3)) { default: break; case 0: - playSound(kEntityPlayer, (entity == kEntityServers0) ? "WAT1002" : "WAT1003", flag); + playSound(kEntityPlayer, (entity == kEntityWaiter1) ? "WAT1002" : "WAT1003", flag); break; case 1: - playSound(kEntityPlayer, (entity == kEntityServers0) ? "WAT1002A" : "WAT1003A", flag); + playSound(kEntityPlayer, (entity == kEntityWaiter1) ? "WAT1002A" : "WAT1003A", flag); break; case 2: - playSound(kEntityPlayer, (entity == kEntityServers0) ? "WAT1002B" : "WAT1003B", flag); + playSound(kEntityPlayer, (entity == kEntityWaiter1) ? "WAT1002B" : "WAT1003B", flag); break; } break; -- cgit v1.2.3