aboutsummaryrefslogtreecommitdiff
path: root/engines/teenagent
diff options
context:
space:
mode:
authorVladimir Menshakov2009-09-09 20:42:44 +0000
committerVladimir Menshakov2009-09-09 20:42:44 +0000
commit153eba4fcf4ab2c5a146d077a8ab6690c5c14315 (patch)
treeca66e4892723676651659bf375df3785c846c8b3 /engines/teenagent
parent6f6d4df529ea7e84d851c52683974032e65d7e91 (diff)
downloadscummvm-rg350-153eba4fcf4ab2c5a146d077a8ab6690c5c14315.tar.gz
scummvm-rg350-153eba4fcf4ab2c5a146d077a8ab6690c5c14315.tar.bz2
scummvm-rg350-153eba4fcf4ab2c5a146d077a8ab6690c5c14315.zip
moved away actor animation from the "lan" animations. added better handling for the asynchronous events.
svn-id: r44019
Diffstat (limited to 'engines/teenagent')
-rw-r--r--engines/teenagent/callbacks.cpp544
-rw-r--r--engines/teenagent/dialog.cpp4
-rw-r--r--engines/teenagent/scene.cpp133
-rw-r--r--engines/teenagent/scene.h8
-rw-r--r--engines/teenagent/teenagent.cpp14
-rw-r--r--engines/teenagent/teenagent.h3
6 files changed, 367 insertions, 339 deletions
diff --git a/engines/teenagent/callbacks.cpp b/engines/teenagent/callbacks.cpp
index 82a15d849f..17b41f20d8 100644
--- a/engines/teenagent/callbacks.cpp
+++ b/engines/teenagent/callbacks.cpp
@@ -91,9 +91,9 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x4021:
//pulling out mysterious object
if (CHECK_FLAG(0xdbe1, 1)) {
- playAnimation(844);
- playAnimation(846);
- playAnimation(845);
+ playActorAnimation(844);
+ playActorAnimation(846);
+ playActorAnimation(845);
displayMessage(0x5696);
} else {
displayMessage(0x570f);
@@ -106,24 +106,24 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
return true;
} else {
playSound(76);
- playAnimation(864);
- playAnimation(866);
+ playActorAnimation(864);
+ playActorAnimation(866);
//InventoryObject *obj = inventory->selectedObject();
//if (obj != NULL && obj->id == 0x55) {
//implement pause and using real object:
if (inventory->has(0x55)) {
playSound(5, 4);
- playAnimation(867);
+ playActorAnimation(867);
inventory->remove(0x55);
inventory->add(0x56);
moveTo(86, 195, 1, true);
- playAnimation(868);
+ playActorAnimation(868);
SET_FLAG(0xDBE4, 1);
} else {
//fail!
moveTo(86, 195, 1, true);
- playAnimation(868);
+ playActorAnimation(868);
Dialog::pop(scene, 0xDB72);
}
return true;
@@ -132,7 +132,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x419c: //getting the bird
setOns(0, 0);
playSound(56, 10);
- playAnimation(875);
+ playActorAnimation(875);
disableObject(6);
inventory->add(0x5c);
return true;
@@ -142,7 +142,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
moveTo(197, 159, 4);
setOns(0, 0);
playSound(71, 8);
- playAnimation(833);
+ playActorAnimation(833);
moveTo(225, 159, 4);
inventory->add(0x4e);
disableObject(3);
@@ -151,16 +151,16 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x4267:
playSound(23, 8);
setOns(1, 0);
- playAnimation(841);
+ playActorAnimation(841);
setOns(1, 0x61);
setOns(2, 0);
playSound(63, 12);
- playAnimation(842);
+ playActorAnimation(842);
//shown in different positions
displayMessage(0x5656);
displayMessage(0x567a);
displayMessage(0x5682);
- playAnimation(843);
+ playActorAnimation(843);
moveTo(223, 149, 0, true);
disableObject(7);
disableObject(1);
@@ -176,14 +176,14 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x43b5: //HQ, first trial - prison
playSound(70, 6);
- playAnimation(962);
+ playActorAnimation(962);
loadScene(7, 30, 184, 2);
if (res->dseg.get_byte(0xDBDF) < 2) {
moveTo(134, 167, 2);
displayMessage(0x54f7);
setLan(1, 0);
playAnimation(812, 1, true);
- playAnimation(811);
+ playActorAnimation(811);
Dialog::show(scene, 0x6117, 813);
loadScene(6, Common::Point(230, 184));
Dialog::show(scene, 0x626a, 814);
@@ -199,18 +199,18 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x4482:
if (CHECK_FLAG(0xDBDF, 0)) {
- playAnimation(968);
+ playActorAnimation(968);
displayMessage(0x5511);
} else {
playSound(80);
- playAnimation(968);
+ playActorAnimation(968);
loadScene(6, Common::Point(280, 186));
}
return true;
case 0x44fc: //pull out spring from bed
playSound(53, 25);
- playAnimation(839);
+ playActorAnimation(839);
moveTo(278, scene->getPosition().y, 0, true);
inventory->add(0x50);
disableObject(1);
@@ -221,7 +221,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
scene->displayMessage((const char *)res->dseg.ptr(0x57c0));
} else {
playSound(49);
- playAnimation(869);
+ playActorAnimation(869);
inventory->add(0x58);
SET_FLAG(0xDBE5, 1);
}
@@ -235,12 +235,12 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
//playAnimation(825, 1); //very long empty animation. what for?
setLan(1, 0);
playSound(71, 4);
- playAnimation(823);
+ playActorAnimation(823);
//skipped one 826 animation for this scene!
playSound(74, 4); //delay 10 in code
loadScene(5, scene->getPosition());
- playAnimation(826);
+ playActorAnimation(826);
loadScene(6, scene->getPosition());
setOns(3, 0x5b);
displayMessage(0x55db);
@@ -264,7 +264,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
if (CHECK_FLAG(0xDBDD, 3)) {
moveTo(280, 179, 2);
playSound(49, 7);
- playAnimation(827);
+ playActorAnimation(827);
inventory->add(0x4d);
SET_FLAG(0xDBDE, 1);
} else
@@ -275,11 +275,11 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
if (CHECK_FLAG(0xdbdc, 1)) {
displayMessage(0x555d);
setOns(2, 0);
- playAnimation(821);
+ playActorAnimation(821);
setOns(2, 0x5a);
setOns(3, 0);
playSound(22, 2);
- playAnimation(822);
+ playActorAnimation(822);
displayMessage(0x5577);
disableObject(5);
SET_FLAG(0xdbdd, 1);
@@ -291,13 +291,13 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
moveTo(144, 185, 4);
playSound(56, 15);
setOns(0, 86); //hiding lamp
- playAnimation(816, 0, true);
+ playActorAnimation(816, true);
playAnimation(817, 1, true);
waitAnimation();
setOns(0, 87);
playSound(34, 1);
- playAnimation(818);
+ playActorAnimation(818);
playAnimation(819, 1, true);
waitAnimation();
@@ -320,14 +320,14 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x47bc: //prison: examining trash can
playSound(49, 5);
- playAnimation(966);
+ playActorAnimation(966);
displayMessage(0x5955);
return true;
case 0x47db: //prison: use switch
if (CHECK_FLAG(0xDBDF, 1)) {
playSound(71, 4);
- playAnimation(823);
+ playActorAnimation(823);
if (CHECK_FLAG(0xDBDD, 0)) {
displayMessage(0x4d80);
} else {
@@ -344,7 +344,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
return true;
case 0x4871:
- playAnimation(965);
+ playActorAnimation(965);
displayMessage(0x5511);
return true;
@@ -353,11 +353,11 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
SET_FLAG(0xDBE6, 2);
setOns(1, 0x67);
playSound(5, 9);
- playAnimation(872);
+ playActorAnimation(872);
inventory->add(0x5a);
disableObject(7);
} else {
- playAnimation(964);
+ playActorAnimation(964);
displayMessage(0x5511);
}
return true;
@@ -385,11 +385,11 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
Dialog::show(scene, 0x6BD6, 857);
} else {
Dialog::show(scene, 0x69B5, 857); //taking mug
- playAnimation(859, 0, true);
+ playActorAnimation(859, true);
playAnimation(858, 1, true);
waitAnimation();
playSound(75, 6);
- playAnimation(860);
+ playActorAnimation(860);
Dialog::show(scene, 0x69C2, 857);
inventory->add(0x55);
SET_FLAG(0xDBE3, 1);
@@ -414,7 +414,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
return true;
case 0x4bf5:
- playAnimation(959);
+ playActorAnimation(959);
loadScene(8, 40, 152, 3);
return true;
@@ -424,14 +424,14 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x4844:
playSound(80, 4);
- playAnimation(963);
+ playActorAnimation(963);
loadScene(5, 166, 158);
return true;
case 0x48ea:
setOns(0, 0);
playSound(5, 9);
- playAnimation(836);
+ playActorAnimation(836);
inventory->add(0x4f);
disableObject(12);
return true;
@@ -439,7 +439,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x4a8c:
if (CHECK_FLAG(0xDBE9, 1)) {
playSound(89, 5);
- playAnimation(958);
+ playActorAnimation(958);
loadScene(9, 240, 182, 4);
} else if (CHECK_FLAG(0xDBE9, 1)) {
displayMessage(0x5894);
@@ -450,7 +450,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x4af4: //taking the crumbs
setOns(0, 0);
- playAnimation(861);
+ playActorAnimation(861);
playSound(49);
inventory->add(0x57);
disableObject(6);
@@ -458,7 +458,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x4b35:
playSound(15, 7);
- playAnimation(884);
+ playActorAnimation(884);
playSound(55, 1);
playAnimation(885, 1);
Dialog::show(scene, 0x67e5, 886);
@@ -469,7 +469,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
inventory->add(0x1d);
//showFullscreenMessage(0xe45c);
loadScene(1, 198, 186);
- playAnimation(956, 0, true);
+ playActorAnimation(956, true);
Dialog::show(scene, 0x8bc4);
waitAnimation();
loadScene(15, 157, 199, 1);
@@ -478,7 +478,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x4c3e: //get the grenade
playSound(32, 24);
- playAnimation(862);
+ playActorAnimation(862);
reloadLan();
playAnimation(863, 1);
inventory->add(0x54);
@@ -502,7 +502,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
return true;
case 0x4c1c:
- playAnimation(960);
+ playActorAnimation(960);
displayMessage(0x5511);
return true;
@@ -527,7 +527,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(5, 2);
playSound(5, 19);
- playAnimation(550, 0, true);
+ playActorAnimation(550, true);
playAnimation(551, 1, true);
waitAnimation();
@@ -563,7 +563,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x4ee5:
setOns(2, 0);
playSound(5, 12);
- playAnimation(676);
+ playActorAnimation(676);
displayMessage(0x4ab0);
disableObject(15);
inventory->add(51);
@@ -574,7 +574,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
disableObject(2);
setOns(0, 0);
playSound(5, 12);
- playAnimation(547);
+ playActorAnimation(547);
return true;
@@ -583,12 +583,12 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(5, 18);
inventory->add(0x12);
setOns(1, 0);
- playAnimation(549);
+ playActorAnimation(549);
disableObject(13);
return true;
case 0x4f25:
- playAnimation(967);
+ playActorAnimation(967);
displayMessage(0x3542);
return true;
@@ -604,22 +604,22 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(26, 32);
playSound(26, 34);
playSound(26, 36);
- playAnimation(590);
+ playActorAnimation(590);
moveTo(204, 178, 3, true);
playSound(59, 1);
playSound(60, 16);
displayMessage(0x372e);
- playAnimation(591);
+ playActorAnimation(591);
SET_FLAG(0xDBA2, 1);
processCallback(0x9d45);
}
} else {
- playAnimation(49);
+ playActorAnimation(49);
playSound(56, 8);
playSound(56, 12);
playSound(49, 10);
//there's some black magic here! investigate!
- playAnimation(587);
+ playActorAnimation(587);
displayMessage(0x4652);
displayMessage(0x3668);
}
@@ -631,7 +631,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
} else {
SET_FLAG(0xDB9E, 1);
setOns(2, 0);
- playAnimation(552);
+ playActorAnimation(552);
setOns(2, 0x12);
inventory->add(0x14);
}
@@ -650,7 +650,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
enableObject(2);
playAnimation(545, 1);
Dialog::show(scene, 0x0917);
- playAnimation(546);
+ playActorAnimation(546);
SET_FLAG(0xDA96, 1);
SET_FLAG(0xDA97, 0);
return true;
@@ -658,7 +658,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x51f0:
setOns(0, 0);
playSound(5, 11);
- playAnimation(637);
+ playActorAnimation(637);
disableObject(7);
inventory->add(49);
return true;
@@ -675,14 +675,14 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
else {
moveTo(173, 138, 2);
playSound(28, 5);
- playAnimation(583);
- playAnimation(584);
+ playActorAnimation(583);
+ playActorAnimation(584);
debug(0, "FIXME: darken whole screen");
playSound(72, 18);
playSound(73, 39);
- playAnimation(585);
+ playActorAnimation(585);
loadScene(11, 194, 160, 2);
playSound(28, 2);
@@ -720,14 +720,14 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x569c:
playSound(67, 5);
- playAnimation(983);
+ playActorAnimation(983);
displayMessage(0x5955);
return true;
case 0x56b7:
playSound(66, 5);
playSound(67, 11);
- playAnimation(984);
+ playActorAnimation(984);
displayMessage(0x5955);
return true;
@@ -736,7 +736,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
disableObject(14);
setOns(0, 0);
playSound(5, 10);
- playAnimation(566);
+ playActorAnimation(566);
return true;
case 0x5793:
@@ -748,7 +748,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
SET_FLAG(0xDB95, 1);
moveTo(188, 179, 0);
playSound(7, 16);
- playAnimation(519);
+ playActorAnimation(519);
moveTo(168, 179, 2);
inventory->add(3);
}
@@ -785,7 +785,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
disableObject(12);
setOns(0, 0);
playSound(5, 6);
- playAnimation(541);
+ playActorAnimation(541);
}
return true;
@@ -829,12 +829,12 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x65c3:
if (CHECK_FLAG(0xDBA9, 1)) {
- playAnimation(635);
+ playActorAnimation(635);
setOns(5, 0);
playSound(63, 11);
playSound(15, 20);
playSound(32, 31);
- playAnimation(636);
+ playActorAnimation(636);
inventory->add(47);
inventory->add(48);
moveTo(scene->getPosition().x - 1, 139, 1, true);
@@ -918,9 +918,9 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x7b26: //cutting the fence
setOns(0, 0);
playSound(5, 2);
- playAnimation(837);
+ playActorAnimation(837);
playSound(51, 3);
- playAnimation(838);
+ playActorAnimation(838);
setOns(0, 0x60);
moveTo(281, scene->getPosition().y, 0, true);
disableObject(4);
@@ -929,14 +929,14 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x7b89: //digging mysterious object
if (CHECK_FLAG(0xDBE1, 1)) {
- playAnimation(844);
+ playActorAnimation(844);
setOns(1, 0);
playSound(5, 5);
- playAnimation(847);
+ playActorAnimation(847);
playSound(5, 11);
- playAnimation(848);
+ playActorAnimation(848);
setOns(1, 0x64);
- playAnimation(845);
+ playActorAnimation(845);
disableObject(3);
inventory->add(0x52);
inventory->remove(0x51);
@@ -955,7 +955,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(76, 55);
playSound(76, 59);
playSound(76, 63);
- playAnimation(873);
+ playActorAnimation(873);
moveTo(240, 163, 4);
displayMessage(0x5837);
playSound(77, 2);
@@ -969,7 +969,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x7ce5: //put spring on the solid ground
playSound(5, 2);
- playAnimation(840);
+ playActorAnimation(840);
setOns(1, 0x61);
inventory->remove(0x50);
disableObject(2);
@@ -981,7 +981,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(5, 2);
playSound(57, 12);
playSound(70, 19);
- playAnimation(828);
+ playActorAnimation(828);
moveTo(262, 160, 1, true);
disableObject(4);
disableObject(3);
@@ -1013,7 +1013,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(0x5632);
} else {
playSound(5, 6);
- playAnimation(834, 0, true);
+ playActorAnimation(834, true);
playAnimation(835, 1, true);
waitAnimation();
@@ -1027,8 +1027,8 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x7e4f: //giving magazine to captain
playSound(5, 3);
Dialog::show(scene, 0x66c0);
- playAnimation(852, 0, true);
- playAnimation(853, 0, true);
+ playActorAnimation(852, true);
+ playActorAnimation(853, true);
displayMessage(0x5742);
displayMessage(0x5757);
displayMessage(0x5770);
@@ -1036,7 +1036,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(0x5799);
playAnimation(856, 1);
playSound(5, 3);
- //playAnimation(854);
+ //playActorAnimation(854);
Dialog::show(scene, 0x66fe);
playAnimation(855, 1);
moveTo(30, 181, 0);
@@ -1049,7 +1049,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x7fbd: //using bird & bartender
playSound(5, 3);
- playAnimation(876);
+ playActorAnimation(876);
setOns(1, 0);
playAnimation(877, 2);
playAnimation(880, 2, true);
@@ -1066,7 +1066,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x8047:
playSound(32, 5);
- playAnimation(881);
+ playActorAnimation(881);
setOns(2, 0x6b);
inventory->remove(0x56);
inventory->add(0x55);
@@ -1081,7 +1081,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(0x53DD);
playSound(5, 2);
playSound(5, 18);
- playAnimation(810, false);
+ playActorAnimation(810);
Dialog::show(scene, 0x60BF);
SET_FLAG(0xDBDA, 1);
}
@@ -1090,7 +1090,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x80c3: //show kaleydoscope to the guard
Dialog::show(scene, 0x6811, 809);
playSound(5, 3);
- playAnimation(849, 0, true);
+ playActorAnimation(849, true);
playAnimation(851, 1, true);
waitAnimation();
@@ -1110,7 +1110,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
} else {
SET_FLAG(0xDB99, 1);
playSound(57, 6);
- playAnimation(536);
+ playActorAnimation(536);
Dialog::show(scene, 0x30c3);
inventory->add(0x8);
}
@@ -1136,7 +1136,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x5458: {
setOns(2, 0);
playSound(34, 7);
- playAnimation(535);
+ playActorAnimation(535);
inventory->add(11);
disableObject(1);
@@ -1156,7 +1156,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
setOns(1, 0);
setOns(3, 0);
playSound(33, 6);
- playAnimation(534);
+ playActorAnimation(534);
inventory->add(10);
disableObject(2);
setOns(1, 10);
@@ -1175,7 +1175,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x5502:
setOns(0, 0);
loadScene(15, 115, 180, 1);
- playAnimation(568);
+ playActorAnimation(568);
playMusic(6);
return true;
@@ -1195,7 +1195,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x563b:
playSound(5, 10);
setOns(1, 0);
- playAnimation(561);
+ playActorAnimation(561);
inventory->add(26);
disableObject(6);
return true;
@@ -1203,7 +1203,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x56f6:
playSound(32, 7);
setOns(1, 0);
- playAnimation(626);
+ playActorAnimation(626);
disableObject(12);
inventory->add(45);
displayMessage(0x3b04);
@@ -1211,7 +1211,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x5756://Open car door
playSound(11, 4);
- playAnimation(514);
+ playActorAnimation(514);
setOns(4, 8);
setOns(2, 5);
enableObject(14);
@@ -1222,12 +1222,12 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x5805://Enter basketball house
playSound(70, 6);
- playAnimation(513);
+ playActorAnimation(513);
loadScene(22, 51, 180, 2);
return true;
case 0x5832://Ring doorbell
- playAnimation(509);
+ playActorAnimation(509);
displayMessage(0x5dce);
return true;
@@ -1240,7 +1240,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
disableObject(14);
setOns(4,0);
playSound(5, 7);
- playAnimation(521);
+ playActorAnimation(521);
setOns(4, 0);
inventory->add(0x6);
return true;
@@ -1249,12 +1249,12 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
SET_FLAG(0xDB94, 1);
playSound(6, 1);
setOns(3, 6);
- playAnimation(515);
+ playActorAnimation(515);
return true;
case 0x593e://Enter annes house
playSound(89, 4);
- playAnimation(980);
+ playActorAnimation(980);
loadScene(23, 76, 199, 1);
if (CHECK_FLAG(0xDBEE, 1))
playMusic(7);
@@ -1277,7 +1277,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(52, 18);
playSound(52, 21);
playSound(52, 25);
- playAnimation(601);
+ playActorAnimation(601);
moveTo(230, 179, 3);
if (!CHECK_FLAG(0xDBA4, 1))
displayMessage(0x37ea); //it's kinda dark here
@@ -1292,14 +1292,14 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(0x3c16);
} else if (!CHECK_FLAG(0xDBA3, 1)) {//Dog has bone
playSound(28, 3);
- playAnimation(596);
+ playActorAnimation(596);
setOns(1, 30);
SET_FLAG(0xDBA3, 1);
enableObject(8);
} else {
setOns(1, 0);
playSound(4, 4);
- playAnimation(597);
+ playActorAnimation(597);
SET_FLAG(0xDBA3, 0);
disableObject(8);
displayMessage(0x37b8);
@@ -1317,13 +1317,13 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
Dialog::show(scene, 0x2dc2);
moveRel(0, -12, 0);
playSound(34, 5);
- playAnimation(607);
+ playActorAnimation(607);
setOns(0, 0);
- playAnimation(608);
- playAnimation(609);
- playAnimation(610);
+ playActorAnimation(608);
+ playActorAnimation(609);
+ playActorAnimation(610);
playSound(5, 25);
- playAnimation(611);
+ playActorAnimation(611);
moveTo(16, scene->getPosition().y, 4);
inventory->add(38);
disableObject(12);
@@ -1341,7 +1341,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
Dialog::show(scene, 0x15a0); //can I search your drawers?
playSound(66);
- playAnimation(631);
+ playActorAnimation(631);
inventory->add(47);
SET_FLAG(0xDBA7, 1);
}
@@ -1353,7 +1353,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
disableObject(7);
playSound(32);
setOns(0, 0);
- playAnimation(520);
+ playActorAnimation(520);
} else {
Dialog::pop(scene, 0xDACE);
}
@@ -1361,7 +1361,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x5cf0://Exit basketball house
playSound(88, 5);
- playAnimation(981);
+ playActorAnimation(981);
loadScene(20, 161, 165);
return true;
@@ -1369,7 +1369,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
if (CHECK_FLAG(0xDB92, 1)) {
setLan(2, 0);
playSound(32);
- playAnimation(508);
+ playActorAnimation(508);
disableObject(13);
inventory->add(7);
} else {
@@ -1391,16 +1391,16 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
SET_FLAG(0xDBEE, 1);
for(byte i = 3; i <= 17; i += 2)
playSound(56, i);
- playAnimation(525);
+ playActorAnimation(525);
for(byte i = 1; i <= 13; i += 2)
playSound(56, i);
playSound(40, 15);
playSound(40, 18);
playSound(40, 22);
- playAnimation(526);
+ playActorAnimation(526);
playSound(54, 1);
playSound(55, 5);
- playAnimation(527);
+ playActorAnimation(527);
Dialog::show(scene, 0x2219);
strcpy(scene->getObject(2)->name, (const char *)res->dseg.ptr(0x9820));
}
@@ -1429,7 +1429,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
if (CHECK_FLAG(0xDBA4, 1)) {
setOns(0, 0);
playSound(56, 10);
- playAnimation(599);
+ playActorAnimation(599);
inventory->add(37);
disableObject(2);
} else
@@ -1463,7 +1463,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(52, 25);
playSound(52, 28);
playSound(52, 32);
- playAnimation(600);
+ playActorAnimation(600);
loadScene(21, 297, 178, 3);
return true;
@@ -1473,7 +1473,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
return true;
}
playSound(71, 6);
- playAnimation(598);
+ playActorAnimation(598);
loadScene(24, scene->getPosition());
setOns(2, 0);
setLan(1, 0);
@@ -1528,7 +1528,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
setOns(3, 36);
playSound(56, 7);
playSound(5, 15);
- playAnimation(613);
+ playActorAnimation(613);
inventory->add(39);
disableObject(5);
displayMessage(0x387c);
@@ -1541,7 +1541,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
setOns(2, 35);
playSound(63, 8);
playSound(24, 10);
- playAnimation(612);
+ playActorAnimation(612);
inventory->add(40);
disableObject(6);
} else
@@ -1558,13 +1558,13 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x62d0://Get bone from under rock
playSound(26, 6);
setOns(0, 0);
- playAnimation(594);
+ playActorAnimation(594);
setOns(0, 29);
displayMessage(0x463c);
disableObject(1);
inventory->add(36);
playSound(5, 3);
- playAnimation(595);
+ playActorAnimation(595);
displayMessage(0x3790);
return true;
@@ -1579,7 +1579,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x63ea:
playSound(5, 10);
setOns(0, 0);
- playAnimation(640);
+ playActorAnimation(640);
inventory->add(50);
disableObject(6);
return true;
@@ -1592,7 +1592,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
SET_FLAG(0xdb93, 1);
playSound(30, 26);
displayMessage(0x3dc6);
- playAnimation(500, 0, true);
+ playActorAnimation(500, true);
playAnimation(501, 1, true);
waitAnimation();
setOns(0, 1);
@@ -1604,7 +1604,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x6592: //Rake
setOns(1, 0);
playSound(18, 10);
- playAnimation(553);
+ playActorAnimation(553);
inventory->add(0x15);
displayMessage(0x3605);
disableObject(11);
@@ -1612,14 +1612,14 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x66b5:
playSound(89, 5);
- playAnimation(969);
+ playActorAnimation(969);
loadScene(33, 319, 181, 4);
return true;
case 0x6519://Sickle
setOns(4, 0);
playSound(5, 11);
- playAnimation(625);
+ playActorAnimation(625);
inventory->add(0x2c);
disableObject(8);
return true;
@@ -1631,7 +1631,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
} else {
SET_FLAG(0xdabb, 1);
playSound(49, 3);
- playAnimation(548);
+ playActorAnimation(548);
inventory->add(0x11);
displayMessage(0x35b2);
return true;
@@ -1640,14 +1640,14 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x663c://Feather
setOns(0, 0);
playSound(5, 9);
- playAnimation(511);
+ playActorAnimation(511);
inventory->add(1);
disableObject(15);
return true;
case 0x667c:
playSound(70, 4);
- playAnimation(972);
+ playActorAnimation(972);
loadScene(29, 160, 199, 1);
return true;
@@ -1658,7 +1658,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x66e2:
playSound(88, 4);
- playAnimation(970);
+ playActorAnimation(970);
loadScene(35, 160, 199, 1);
return true;
@@ -1673,7 +1673,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
} else {
displayMessage(0x4fb1);
playSound(32, 6);
- playAnimation(717);
+ playActorAnimation(717);
inventory->add(66);
SET_FLAG(0xDBCE, 1);
}
@@ -1716,7 +1716,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
if (CHECK_FLAG(0xDBCF, 1)) {
playSound(89, 4);
- playAnimation(719);
+ playActorAnimation(719);
setOns(4, 67);
++ *res->dseg.ptr(READ_LE_UINT16(res->dseg.ptr(0x6746 + (scene->getId() - 1) * 2)));
disableObject(5);
@@ -1725,7 +1725,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(89, 4);
playSound(89, 4);
playSound(87, 45);
- playAnimation(718);
+ playActorAnimation(718);
displayMessage(0x4fcb); //fixme: move it to animation
displayMessage(0x4fe2);
SET_FLAG(0xDBCF, 1);
@@ -1735,7 +1735,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x71eb:
setOns(2, 0);
playSound(32, 7);
- playAnimation(710);
+ playActorAnimation(710);
inventory->add(62);
disableObject(7);
enableObject(8);
@@ -1751,11 +1751,11 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
if (CHECK_FLAG(0xDBD0, 1)) {
setOns(4, 69);
playSound(32, 5);
- playAnimation(725);
+ playActorAnimation(725);
disableObject(12);
inventory->add(69);
} else {
- playAnimation(721);
+ playActorAnimation(721);
displayMessage(0x505e);
}
return true;
@@ -1763,7 +1763,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x721c:
setOns(3, 0);
playSound(32, 7);
- playAnimation(715);
+ playActorAnimation(715);
inventory->add(63);
disableObject(9);
return true;
@@ -1772,7 +1772,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
setOns(1, 0);
playSound(5, 42);
displayMessage(0x4d02);
- playAnimation(697);
+ playActorAnimation(697);
inventory->add(56);
disableObject(1);
return true;
@@ -1783,14 +1783,14 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
//call 73e6
playSound(71, 3);
- playAnimation(700);
+ playActorAnimation(700);
} else {
SET_FLAG(0xdbc5, 1);
//call 73e6
playSound(71, 3);
- playAnimation(700);
+ playActorAnimation(700);
playAnimation(CHECK_FLAG(0xDBC6, 0)? 701:702, 1);
@@ -1802,7 +1802,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x7381:
playSound(5, 12);
- playAnimation(704);
+ playActorAnimation(704);
disableObject(2);
inventory->add(58);
return true;
@@ -1818,7 +1818,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(26, 37);
playSound(26, 43);
playSound(52, 34);
- playAnimation(698);
+ playActorAnimation(698);
setOns(0, 52);
setOns(2, 61);
Dialog::show(scene, 0x38b6);
@@ -1835,7 +1835,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
Dialog::show(scene, 0x3aca);
playSound(61, 5);
playSound(5, 14);
- playAnimation(705);
+ playActorAnimation(705);
displayMessage(0x4dd3);
inventory->add(59);
}
@@ -1844,7 +1844,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x74d1:
setOns(2, 0);
playSound(5, 12);
- playAnimation(699);
+ playActorAnimation(699);
inventory->add(57);
disableObject(11);
return true;
@@ -1853,10 +1853,10 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
if (CHECK_FLAG(0xDBD7, 1)) {
if (CHECK_FLAG(0xDBD8, 1)) {
playSound(88, 4);
- playAnimation(979);
+ playActorAnimation(979);
loadScene(37, 51, 183);
Dialog::show(scene, 0x54ea, 768, 769);
- playAnimation(770, 0, true);
+ playActorAnimation(770, true);
playAnimation(771, 1, true);
waitAnimation();
Dialog::show(scene, 0x5523, 768, 769);
@@ -1864,16 +1864,16 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(56, 12);
playSound(23, 20);
playSound(75, 25);
- playAnimation(772);
+ playActorAnimation(772);
- playAnimation(774, 0, true);
+ playActorAnimation(774, true);
playAnimation(773, 1, true);
waitAnimation();
setOns(0, 74);
Dialog::show(scene, 0x5556, 775);
playAnimation(776, 1);
Dialog::show(scene, 0x55f7, 777, 778);
- playAnimation(779, 0, true);
+ playActorAnimation(779, true);
playAnimation(780, 1, true);
waitAnimation();
@@ -1960,9 +1960,9 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(46, 56);
playSound(46, 85);
playSound(46, 117);
- playAnimation(870);
+ playActorAnimation(870);
playSound(54, 15);
- playAnimation(871);
+ playActorAnimation(871);
SET_FLAG(0xDBE6, 1);
setOns(1, 0x66);
moveTo(224, 194, 0, true);
@@ -1988,7 +1988,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
processCallback(0x505c);
setOns(1, 0);
playSound(5, 10);
- playAnimation(543);
+ playActorAnimation(543);
inventory->add(15);
disableObject(9);
return true;
@@ -1999,7 +1999,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(0x52f6);
else {
playSound(71, 4);
- playAnimation(796);
+ playActorAnimation(796);
setLan(1, 0);
SET_FLAG(0xDBD8, 1);
}
@@ -2063,7 +2063,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(5, 2);
playSound(5, 44);
playAnimation(642, 1, true);
- playAnimation(641, 0, true);
+ playActorAnimation(641, true);
waitAnimation();
Dialog::show(scene, 0x0aff, 529);
Dialog::show(scene, 0x0ba0, 529);
@@ -2080,7 +2080,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(5, 9);
playSound(14, 19);
playSound(5, 50);
- playAnimation(542);
+ playActorAnimation(542);
setOns(1, 15);
disableObject(3);
enableObject(9);
@@ -2098,7 +2098,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(56, 144);
playSound(56, 147);
playAnimation(589, 1, true);
- playAnimation(588, 0, true);
+ playActorAnimation(588, true);
waitAnimation();
displayMessage(0x367f);
inventory->remove(34);
@@ -2110,14 +2110,14 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
for(byte i = 16; i <= 28; i += 2)
playSound(65, i);
playSound(47, 33);
- playAnimation(620);
+ playActorAnimation(620);
for(byte i = 3; i <= 18; i += 3)
playSound(56, i);
- playAnimation(621, 0, true);
+ playActorAnimation(621, true);
playAnimation(623, 1, true);
waitAnimation();
playSound(35);
- playAnimation(622, 0, true);
+ playActorAnimation(622, true);
playAnimation(624, 1, true);
displayMessage(0x3afd);
inventory->remove(43);
@@ -2138,7 +2138,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(22, 102);
playSound(26, 114);
playSound(24, 124);
- playAnimation(562, 0, true);
+ playActorAnimation(562, true);
playAnimation(563, 1, true);
waitAnimation();
@@ -2152,12 +2152,12 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
inventory->remove(32);
playSound(37, 14);
playSound(16, 17);
- playAnimation(564, 0, true);
+ playActorAnimation(564, true);
playAnimation(565, 2, true);
waitAnimation();
setOns(0, 24);
playSound(39, 5);
- playAnimation(582);
+ playActorAnimation(582);
moveTo(63, 195, 1);
playAnimation(571, 1);
playAnimation(572, 1);
@@ -2180,13 +2180,13 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x84c7:
playSound(20, 9);
- playAnimation(530);
+ playActorAnimation(530);
loadScene(16, 236, 95, 1);
setOns(0, 9);
- playAnimation(531);
+ playActorAnimation(531);
playSound(36, 4);
- playAnimation(532);
- playAnimation(533);
+ playActorAnimation(532);
+ playActorAnimation(533);
moveTo(236, 95, 1, true);
playMusic(9);
return true;
@@ -2199,7 +2199,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(14, 14);
playSound(14, 33);
playSound(5, 43);
- playAnimation(643);
+ playActorAnimation(643);
setOns(2, 43);
moveTo(236, 179, 3);
inventory->remove(0x2c);
@@ -2212,7 +2212,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(25, 10);
playSound(25, 14);
playSound(25, 18);
- playAnimation(559);
+ playActorAnimation(559);
setOns(1, 23);
SET_FLAG(0xDBB0, 2);
} else
@@ -2224,7 +2224,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(12, 4);
playSound(50, 20);
playSound(50, 29);
- playAnimation(554);
+ playActorAnimation(554);
inventory->remove(19);
inventory->add(22);
return true;
@@ -2233,7 +2233,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(5, 3);
for (byte i = 12; i <= 24; i += 2)
playSound(56, i);
- playAnimation(567);
+ playActorAnimation(567);
inventory->remove(12);
inventory->add(33);
return true;
@@ -2249,7 +2249,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(1, 29);
playSound(1, 34);
playAnimation(506, 1);
- playAnimation(504);
+ playActorAnimation(504);
setOns(0, 0);
playSound(24, 2);
playSound(22, 24);
@@ -2259,7 +2259,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(5, 43);
playSound(61, 70);
playSound(61, 91);
- playAnimation(505);
+ playActorAnimation(505);
displayMessage(0x3cfb);
playAnimation(507, 1);
setOns(0, 4);
@@ -2308,7 +2308,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x88de:
playSound(5);
Dialog::show(scene, 0x1B5F, 523);
- playAnimation(537);
+ playActorAnimation(537);
playAnimation(538, 1);
Dialog::show(scene, 0x1BE0, 523);
return true;
@@ -2338,7 +2338,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x8942:
Dialog::show(scene, 0x2293);
playSound(5, 10);
- playAnimation(540, 0, true);
+ playActorAnimation(540, true);
playAnimation(539, 1, true);
waitAnimation();
Dialog::show(scene, 0x24b1);
@@ -2365,10 +2365,10 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
inventory->remove(23);
playSound(5, 6);
Dialog::show(scene, 0x2634);
- playAnimation(555, 0, true);
+ playActorAnimation(555, true);
playAnimation(556, 1, true);
waitAnimation();
- playAnimation(557, 0, true);
+ playActorAnimation(557, true);
playAnimation(558, 1, true);
waitAnimation();
Dialog::show(scene, 0x2971);
@@ -2377,7 +2377,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x8a22:
playSound(45, 16);
- playAnimation(560);
+ playActorAnimation(560);
inventory->remove(26);
inventory->add(27);
Dialog::show(scene, 0x1ecd);
@@ -2390,19 +2390,19 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
Dialog::show(scene, 0x2992);
playSound(5, 3);
playSound(5, 20);
- playAnimation(671, 0, true);
+ playActorAnimation(671, true);
playAnimation(670, 1, true);
waitAnimation();
playAnimation(672, 1);
Dialog::show(scene, 0x2a00, 672);
//fixme: skipped some text
playSound(83, 12);
- playAnimation(673);
+ playActorAnimation(673);
loadScene(11, scene->getPosition());
playSound(24, 31);
playSound(24, 48);
playSound(79, 50);
- playAnimation(674, 0, true);
+ playActorAnimation(674, true);
playAnimation(675, 1, true);
waitAnimation();
loadScene(28, 0, 167, 2);
@@ -2418,9 +2418,9 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x8b82: //use fan on laundry
setOns(0, 0);
playSound(5);
- playAnimation(602);
+ playActorAnimation(602);
displayMessage(0x464a);
- playAnimation(603);
+ playActorAnimation(603);
setOns(0, 27);
SET_FLAG(0xDBA5, 1);
return true;
@@ -2428,7 +2428,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x8bfc://Give bone to dog
displayMessage(0x3c31);
playSound(5, 3);
- playAnimation(657, 0, true);
+ playActorAnimation(657, true);
playAnimation(658, 1, true);
waitAnimation();
@@ -2442,9 +2442,9 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x8c6e://Use car jack on rock
playSound(5, 3);
- playAnimation(592);
+ playActorAnimation(592);
playSound(1, 5);
- playAnimation(593);
+ playActorAnimation(593);
setOns(0, 28);
disableObject(35);
enableObject(1);
@@ -2453,18 +2453,18 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x8cc8://Cut bush with sickle
playSound(5, 3);
- playAnimation(644);
+ playActorAnimation(644);
setOns(1, 45);
playSound(56, 2);
playSound(26, 4);
- playAnimation(645);
+ playActorAnimation(645);
playSound(56, 1);
playSound(56, 6);
playSound(26, 3);
playSound(26, 8);
- playAnimation(646);
+ playActorAnimation(646);
playSound(5, 21);
- playAnimation(647);
+ playActorAnimation(647);
SET_FLAG(0xdaca, 1);
inventory->remove(0x2e);
disableObject(2);
@@ -2473,14 +2473,14 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x8d57:
playSound(5, 2);
playSound(15, 12);
- playAnimation(638);
+ playActorAnimation(638);
inventory->remove(48);
//fixme: add time challenge here!
/*
inventory->add(48);
playSound(24, 26);
- playAnimation(650, 0, true);
+ playActorAnimation(650, true);
playAnimation(651, 2, true);
waitAnimation();
*/
@@ -2490,7 +2490,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
inventory->remove(49);
//third part
- playAnimation(649);
+ playActorAnimation(649);
setOns(1, 47);
for (byte i = 1; i <= 37; i += 4)
playSound(68, i);
@@ -2510,7 +2510,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(56, i);
playSound(2, 64);
playSound(3, 74);
- playAnimation(516, 0, true);
+ playActorAnimation(516, true);
playAnimation(517, 2, true);
playAnimation(518, 3, true);
waitAnimation();
@@ -2523,7 +2523,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x8fc8:
displayMessage(0x3b2f);
playSound(5, 3);
- playAnimation(627, 0, true);
+ playActorAnimation(627, true);
playAnimation(629, 1, true);
waitAnimation();
playSound(41, 10);
@@ -2531,14 +2531,14 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(55, 52);
if (CHECK_FLAG(0xDBA8, 1)) {
setLan(2, 0);
- playAnimation(628, 0, true);
+ playActorAnimation(628, true);
playAnimation(634, 1, true);
waitAnimation();
disableObject(4);
displayMessage(0x3b6c);
SET_FLAG(0xDBA9, 1);
} else {
- playAnimation(628, 0, true);
+ playActorAnimation(628, true);
playAnimation(630, 1, true);
waitAnimation();
displayMessage(0x3b59);
@@ -2552,10 +2552,10 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(5, 11);
playSound(49, 21);
moveTo(scene->getPosition().x, 99, 0);
- playAnimation(632);
+ playActorAnimation(632);
setOns(5, 40);
moveTo(239, 139, 0, true);
- playAnimation(633);
+ playActorAnimation(633);
SET_FLAG(0xDBA8, 1);
inventory->remove(47);
if (!CHECK_FLAG(0xDBAA, 1)) {
@@ -2584,7 +2584,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(24, 29);
playSound(23, 21);
playSound(74, 25);
- playAnimation(716);
+ playActorAnimation(716);
setOns(1, 66);
SET_FLAG(0xDBCD, 1);
return true;
@@ -2594,7 +2594,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
return true;
playSound(5, 3);
playSound(86, 11);
- playAnimation(720);
+ playActorAnimation(720);
inventory->add(68);
inventory->remove(55);
return true;
@@ -2602,14 +2602,14 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x93d5: //burning sheet + plate
setOns(4, 0);
playSound(87, 7);
- playAnimation(722);
+ playActorAnimation(722);
playSound(5, 3);
playSound(88, 12);
playSound(87, 24);
- playAnimation(723);
+ playActorAnimation(723);
displayMessage(0x502b);
playSound(89, 4);
- playAnimation(724);
+ playActorAnimation(724);
setOns(4, 68);
displayMessage(0x503e);
inventory->remove(68);
@@ -2637,7 +2637,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
//very last part of the game:
case 0x671d:
moveTo(153, 163, 4);
- playAnimation(973);
+ playActorAnimation(973);
if (CHECK_FLAG(0xDBC1, 0)) {
SET_FLAG(0xDBC1, random.getRandomNumber(5) + 1);
}
@@ -2646,13 +2646,13 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x67a6:
loadScene(29, 149, 163, 1);
- playAnimation(974);
+ playActorAnimation(974);
moveTo(160, 188, 0);
return true;
case 0x6805:
processCallback(0x6849);
- playAnimation(694);
+ playActorAnimation(694);
playSound(15, 8);
playAnimation(693, 1);
setOns(6, 0);
@@ -2677,7 +2677,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
} else {
playSound(49, 5);
playSound(49, 17);
- playAnimation(691);
+ playActorAnimation(691);
if (!processCallback(0x68e6)) {
if (!CHECK_FLAG(0xDBC0, 1)) {
displayMessage(0x4c61);
@@ -2714,13 +2714,13 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
return true;
}
if (!CHECK_FLAG(0xDBC3, 1)) {
- playAnimation(695);
+ playActorAnimation(695);
Dialog::show(scene, 0x386a);
SET_FLAG(0xDBC3, 1);
}
playSound(5, 11);
- playAnimation(696);
+ playActorAnimation(696);
inventory->add(55);
return true;
@@ -2728,13 +2728,13 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
if (CHECK_FLAG(0xDBB7, 1)) {
setOns(0, 0);
playSound(67, 4);
- playAnimation(678);
+ playActorAnimation(678);
SET_FLAG(0xDBB7, 0);
} else if (CHECK_FLAG(0xDBB8, 1)) {
processCallback(0x6b86);
} else {
playSound(66, 4);
- playAnimation(677);
+ playActorAnimation(677);
setOns(0, 53);
SET_FLAG(0xDBB7, 1);
}
@@ -2744,7 +2744,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
if (CHECK_FLAG(0xDBB8, 1)) {
setOns(1, 0);
playSound(67, 4);
- playAnimation(680);
+ playActorAnimation(680);
SET_FLAG(0xDBB8, 0);
} else if (CHECK_FLAG(0xDBB8, 1)) {
processCallback(0x6b86);
@@ -2752,7 +2752,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
processCallback(0x6b86);
} else {
playSound(66, 5);
- playAnimation(679);
+ playActorAnimation(679);
setOns(1, 54);
SET_FLAG(0xDBB8, 1);
}
@@ -2762,13 +2762,13 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
if (CHECK_FLAG(0xDBB9, 1)) {
setOns(2, 0);
playSound(67, 5);
- playAnimation(682);
+ playActorAnimation(682);
SET_FLAG(0xDBB9, 0);
} else if (CHECK_FLAG(0xDBB8, 1)) {
processCallback(0x6b86);
} else {
playSound(67, 5);
- playAnimation(681);
+ playActorAnimation(681);
setOns(2, 55);
SET_FLAG(0xDBB9, 1);
}
@@ -2778,11 +2778,11 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
if (CHECK_FLAG(0xDBBA, 1)) {
setOns(3, 0);
playSound(67, 4);
- playAnimation(684);
+ playActorAnimation(684);
SET_FLAG(0xDBBA, 0);
} else if (!CHECK_FLAG(0xDBBB, 1)) {
playSound(66, 4);
- playAnimation(683);
+ playActorAnimation(683);
setOns(3, 56);
SET_FLAG(0xDBBA, 1);
} else
@@ -2793,7 +2793,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
if (CHECK_FLAG(0xDBBB, 1)) {
setOns(4, 0);
playSound(67, 4);
- playAnimation(686);
+ playActorAnimation(686);
SET_FLAG(0xDBBB, 0);
} else if (CHECK_FLAG(0xDBBA, 1)) {
processCallback(0x6b86);
@@ -2801,7 +2801,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
processCallback(0x6b86);
} else {
playSound(66, 5);
- playAnimation(685);
+ playActorAnimation(685);
setOns(4, 57);
SET_FLAG(0xDBBB, 1);
}
@@ -2811,13 +2811,13 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
if (CHECK_FLAG(0xdbbc, 1)) {
setOns(5, 0);
playSound(67, 5);
- playAnimation(688);
+ playActorAnimation(688);
SET_FLAG(0xdbbc, 0);
} else if (CHECK_FLAG(0xdbbc, 1)) {
processCallback(0x6b86);
} else {
playSound(66, 6);
- playAnimation(687);
+ playActorAnimation(687);
setOns(5, 58);
SET_FLAG(0xDBBC, 1);
}
@@ -2839,20 +2839,20 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(0x5326); //i'd better catch johnny
} else {
playSound(88);
- playAnimation(808);
+ playActorAnimation(808);
loadScene(36, 41, 195);
}
return true;
case 0x6bad:
playSound(80, 4);
- playAnimation(971);
+ playActorAnimation(971);
loadScene(32, 139, 199, 1);
return true;
case 0x6c45:
playSound(89, 6);
- playAnimation(CHECK_FLAG(0xDBEF, 1)?985: 806);
+ playActorAnimation(CHECK_FLAG(0xDBEF, 1)?985: 806);
loadScene(34, 40, 133, 2);
return true;
@@ -2865,13 +2865,13 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x6c9d: //getting jar
setOns(0, 71);
playSound(32, 5);
- playAnimation(732);
+ playActorAnimation(732);
disableObject(2);
inventory->add(72);
return true;
case 0x6cc4:
- playAnimation(754);
+ playActorAnimation(754);
displayMessage(0x517b); //position 30430
playMusic(3);
@@ -2879,7 +2879,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playAnimation(750, 2);
Dialog::show(scene, 0x4f50, 751, 529);
- playAnimation(752, 0, true);
+ playActorAnimation(752, true);
playAnimation(753, 1, true);
waitAnimation();
Dialog::show(scene, 0x5168, 751, 529);
@@ -2889,28 +2889,28 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(75, 13);
playSound(32, 22);
- playAnimation(735, 0, true);
+ playActorAnimation(735, true);
playAnimation(736, 1, true);
waitAnimation();
Dialog::show(scene, 0x46cf, 737, 738);
playSound(32, 1);
- playAnimation(739, 0, true);
+ playActorAnimation(739, true);
playAnimation(740, 1, true);
waitAnimation();
Dialog::show(scene, 0x4772, 733, 734);
- playAnimation(742, 0, true);
+ playActorAnimation(742, true);
playAnimation(741, 1, true);
waitAnimation();
Dialog::show(scene, 0x481c, 733, 743);
- playAnimation(744, 0, true);
+ playActorAnimation(744, true);
playAnimation(745, 1, true);
waitAnimation();
Dialog::show(scene, 0x4873, 733, 734);
- playAnimation(746, 0, true);
+ playActorAnimation(746, true);
playAnimation(747, 1, true);
waitAnimation();
Dialog::show(scene, 0x4da5, 734);
@@ -2921,7 +2921,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playMusic(10);
loadScene(32, scene->getPosition());
playSound(26, 10);
- playAnimation(755);
+ playActorAnimation(755);
moveRel(0, 0, 3);
Dialog::show(scene, 0x51bf);
@@ -2945,7 +2945,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x6f75: //hiding in left corner
moveRel(0, 0, 3);
- playAnimation(756);
+ playActorAnimation(756);
playAnimation(758, 1);
Dialog::show(scene, 0x52e6, 759);
playSound(40, 5);
@@ -2968,7 +2968,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playAnimation(762, 1);
loadScene(32, scene->getPosition());
setOns(2, 0);
- playAnimation(757);
+ playActorAnimation(757);
moveRel(0, 0, 1);
displayMessage(0x51e7);
enableObject(8);
@@ -2989,14 +2989,14 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
if (CHECK_FLAG(0xDBD5, 1)) {
displayMessage(0x51a7);
} else {
- playAnimation(977);
+ playActorAnimation(977);
displayMessage(0x5511);
}
return true;
case 0x7096:
playSound(32, 5);
- playAnimation(767);
+ playActorAnimation(767);
setOns(1, 0);
inventory->add(73);
disableObject(8);
@@ -3004,7 +3004,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x7291:
playSound(89, 3);
- playAnimation(975);
+ playActorAnimation(975);
loadScene(31, 298, 177, 4);
return true;
@@ -3014,7 +3014,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
} else {
playSound(79, 6);
playSound(84, 9);
- playAnimation(801);
+ playActorAnimation(801);
if (CHECK_FLAG(0xDBD6, 1)) {
displayMessage(0x538d);
SET_FLAG(0xDBD6, 2);
@@ -3026,7 +3026,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x7309:
playSound(66, 5);
playSound(67, 11);
- playAnimation(976);
+ playActorAnimation(976);
displayMessage(0x5955);
return true;
@@ -3050,7 +3050,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
if (!CHECK_FLAG(0xDBBF, 1)) {
displayMessage(0x4c32);
playSound(5, 11);
- playAnimation(690);
+ playActorAnimation(690);
inventory->add(53);
SET_FLAG(0xDBBF, 1);
}
@@ -3085,7 +3085,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
if (!CHECK_FLAG(0xDBBE, 1)) {
displayMessage(0x4c0f); //there's dictaphone inside!
playSound(5, 12);
- playAnimation(689);
+ playActorAnimation(689);
inventory->add(52);
SET_FLAG(0xDBBE, 1);
}
@@ -3121,7 +3121,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
if (CHECK_FLAG(0xDBD2, 0) || CHECK_FLAG(0xDBD3, 0) || CHECK_FLAG(0xDBD4, 0))
return true;
playSound(89, 2);
- playAnimation(731);
+ playActorAnimation(731);
setOns(0, 70);
setLan(1, 0);
disableObject(1);
@@ -3132,7 +3132,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x90bc: //handle on the hole
playSound(5, 3);
playSound(6, 9);
- playAnimation(807);
+ playActorAnimation(807);
setOns(0, 83);
inventory->remove(73);
disableObject(2);
@@ -3159,7 +3159,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(5, 39);
displayMessage(0x5124); //fixme: async! delay 35? position 40388
- playAnimation(728);
+ playActorAnimation(728);
Dialog::show(scene, 0x3d17);
SET_FLAG(0xDBD2, 1);
processCallback(0x9175);
@@ -3176,7 +3176,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(0x5138);
playSound(5, 3);
playSound(5, 23);
- playAnimation(729);
+ playActorAnimation(729);
Dialog::show(scene, 0x3d70);
SET_FLAG(0xDBD3, 1);
processCallback(0x9175);
@@ -3193,7 +3193,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(0x5161);
playSound(5, 3);
playSound(5, 25);
- playAnimation(730);
+ playActorAnimation(730);
Dialog::show(scene, 0x3dd6);
SET_FLAG(0xDBD4, 1);
processCallback(0x9175);
@@ -3203,7 +3203,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
setOns(2, 64);
playSound(5, 3);
playSound(52, 10);
- playAnimation(711);
+ playActorAnimation(711);
moveRel(0, 0, 4);
Dialog::show(scene, 0x3b21);
moveTo(300, 190, 4);
@@ -3232,7 +3232,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x9472:
playSound(5, 4);
playSound(19, 14);
- playAnimation(793);
+ playActorAnimation(793);
displayMessage(0x5218);
inventory->remove(60);
SET_FLAG(0xDBD6, 1);
@@ -3241,7 +3241,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x9449: //meat + stew
playSound(5, 4);
playSound(63, 12);
- playAnimation(726);
+ playActorAnimation(726);
displayMessage(0x508a);
inventory->remove(69);
inventory->add(70);
@@ -3251,7 +3251,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
if (CHECK_FLAG(0xDBD6, 2)) {
playSound(5, 4);
playSound(5, 25);
- playAnimation(802);
+ playActorAnimation(802);
displayMessage(0x5272);
inventory->remove(62);
inventory->add(74);
@@ -3266,7 +3266,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(5, 3);
playSound(5, 18);
playSound(13, 12);
- playAnimation(803);
+ playActorAnimation(803);
disableObject(7);
inventory->remove(70);
inventory->add(71);
@@ -3277,14 +3277,14 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x951b:
playSound(5, 4);
playSound(5, 22);
- playAnimation(804);
+ playActorAnimation(804);
displayMessage(0x528b);
return true;
case 0x9537: //using remote on VCR
playSound(5, 3);
playSound(5, 16);
- playAnimation(703);
+ playActorAnimation(703);
if (CHECK_FLAG(0xDBC8, 1)) {
if (CHECK_FLAG(0xDBC6, 0)) {
if (CHECK_FLAG(0xDBC5, 1)) { //tv on
@@ -3318,7 +3318,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(5, 3);
playSound(5, 24);
playSound(90, 18);
- playAnimation(707);
+ playActorAnimation(707);
inventory->add(61);
SET_FLAG(0xDBCA, 1);
}
@@ -3334,7 +3334,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(0x4e05);
playSound(5, 3);
playSound(5, 27);
- playAnimation(708);
+ playActorAnimation(708);
SET_FLAG(0xDBCB, 1);
}
} else
@@ -3345,7 +3345,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x95c8:
playSound(5, 3);
playSound(91, 12);
- playAnimation(706);
+ playActorAnimation(706);
inventory->remove(54);
SET_FLAG(0xDBC8, 1);
return true;
@@ -3353,13 +3353,13 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x9673:
playSound(5, 3);
playSound(24, 10);
- playAnimation(798);
+ playActorAnimation(798);
playSound(63, 11);
playSound(19, 20);
playAnimation(799, 1);
moveTo(50, 170, 1);
playAnimation(800, 1);
- playAnimation(805);
+ playActorAnimation(805);
moveTo(50, 170, 3);
displayMessage(0x5349);
//moveTo(105, 157, 0, true);
@@ -3368,22 +3368,22 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
Dialog::show(scene, 0x8409, 938);
playAnimation(939, 1, true);
- playAnimation(942, 0, true);
+ playActorAnimation(942, true);
waitAnimation();
playAnimation(939, 1, true);
playAnimation(935, 1, true);
- playAnimation(943, 0, true);
+ playActorAnimation(943, true);
waitAnimation();
playAnimation(940, 1, true);
playAnimation(936, 1, true);
- playAnimation(944, 0, true);
+ playActorAnimation(944, true);
waitAnimation();
playAnimation(941, 1, true);
playAnimation(937, 1, true);
- playAnimation(945, 0, true);
+ playActorAnimation(945, true);
waitAnimation();
playAnimation(945, 1);
@@ -3393,7 +3393,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(24, 7);
playAnimation(948, 1, true);
- playAnimation(947, 0, true);
+ playActorAnimation(947, true);
waitAnimation();
loadScene(40, 198, 186, 1);
@@ -3412,7 +3412,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(40, 14);
playAnimation(951, 1, true);
- playAnimation(952, 0, true);
+ playActorAnimation(952, true);
waitAnimation();
playMusic(11);
@@ -3440,25 +3440,25 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(5, 3);
playSound(38, 16);
playSound(38, 22);
- playAnimation(614);
+ playActorAnimation(614);
playSound(5, 3);
playSound(44, 10);
playSound(20, 26);
- playAnimation(615);
+ playActorAnimation(615);
loadScene(17, p);
playSound(64, 7);
playSound(64, 21);
playSound(64, 42);
playSound(64, 63);
- playAnimation(617);
+ playActorAnimation(617);
//another time challenge!
if (true) {
playSound(64, 7);
- playAnimation(618);
+ playActorAnimation(618);
disableObject(5);
setOns(0, 0);
playSound(31);
- playAnimation(619);
+ playActorAnimation(619);
inventory->add(42);
displayMessage(0x3989);
}
@@ -3473,7 +3473,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(26, 19);
for(uint i = 0; i < 8; ++i)
playSound(26, 30 + i * 11);
- playAnimation(661);
+ playActorAnimation(661);
//cutscene 3c80 at 30484
playSound(56, 10);
playSound(56, 21);
@@ -3483,7 +3483,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(26, 117 + i * 11);
moveRel(-20, 0, 0, true);
- playAnimation(662, 0, true);
+ playActorAnimation(662, true);
playAnimation(663, 2, true);
waitAnimation();
setOns(1, 49);
@@ -3497,7 +3497,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(19, 27);
playSound(24, 38);
playSound(23, 44);
- playAnimation(664);
+ playActorAnimation(664);
playAnimation(665, 2);
displayMessage(0x3cbc);
displayMessage(0x3cea);
@@ -3522,12 +3522,12 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
moveTo(102, 195, 2);
playSound(5, 3);
playSound(75, 12);
- playAnimation(794);
+ playActorAnimation(794);
setLan(1, 0);
//scene->getWalkbox(0)->rect.left = 0;
//scene->getWalkbox(0)->rect.top = 0;
moveTo(151, 197, 2);
- playAnimation(795);
+ playActorAnimation(795);
moveTo(186, 198, 2, true);
moveTo(220, 198, 4);
//scene->getWalkbox(0)->rect.top = 200;
@@ -3569,7 +3569,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x9d90:
loadScene(34, scene->getPosition());
Dialog::show(scene, 0x6f60, 987, 986);
- playAnimation(990, 0, true);
+ playActorAnimation(990, true);
playAnimation(991, 1, true);
waitAnimation();
return true;
@@ -3601,14 +3601,14 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x9ec3:
loadScene(29, scene->getPosition());
- playAnimation(901, 0, true);
+ playActorAnimation(901, true);
playAnimation(900, 1, true);
waitAnimation();
Dialog::show(scene, 0x7161, 902, 903);
for (byte i = 3; i <= 9; i += 2)
playSound(56, i);
- playAnimation(905, 0, true);
+ playActorAnimation(905, true);
playAnimation(904, 1, true);
Dialog::show(scene, 0x71c6, 902, 903);
return true;
diff --git a/engines/teenagent/dialog.cpp b/engines/teenagent/dialog.cpp
index b1794dd5ce..c317d0b581 100644
--- a/engines/teenagent/dialog.cpp
+++ b/engines/teenagent/dialog.cpp
@@ -58,13 +58,13 @@ void Dialog::show(Scene * scene, uint16 addr, uint16 animation, uint16 actor_ani
if (animation != 0) {
SceneEvent e(SceneEvent::PlayAnimation);
e.animation = animation;
- e.color = 0x84; //4th slot, async animation
+ e.color = 0x41;
scene->push(e);
}
if (actor_animation != 0) {
SceneEvent e(SceneEvent::PlayAnimation);
e.animation = actor_animation;
- e.color = 0x80; //1st slot, async animation
+ e.color = 0x40;
scene->push(e);
}
SceneEvent e(SceneEvent::Message);
diff --git a/engines/teenagent/scene.cpp b/engines/teenagent/scene.cpp
index c9ebdcaf35..9a906c1f0d 100644
--- a/engines/teenagent/scene.cpp
+++ b/engines/teenagent/scene.cpp
@@ -99,12 +99,16 @@ void Scene::init(TeenAgentEngine *engine, OSystem * system) {
error("invalid resource data");
teenagent.load(s, Animation::TypeVaria);
+ if (teenagent.empty())
+ error("invalid mark animation");
s = res->varia.getStream(2);
if (s == NULL)
error("invalid resource data");
teenagent_idle.load(s, Animation::TypeVaria);
+ if (teenagent_idle.empty())
+ error("invalid mark animation");
}
byte *Scene::getOns(int id) {
@@ -227,14 +231,23 @@ void Scene::init(int id, const Common::Point &pos) {
_engine->music->load(res->dseg.get_byte(0xDB90));
}
-void Scene::playAnimation(byte idx, uint id) {
- assert(idx < 5);
+void Scene::playAnimation(byte idx, uint id, bool loop) {
+ assert(idx < 4);
Common::SeekableReadStream * s = Resources::instance()->loadLan(id + 1);
if (s == NULL)
error("playing animation %u failed", id);
custom_animations[idx].load(s);
- custom_animations[idx].loop = idx == 4; //looping face animation.
+ custom_animations[idx].loop = loop;
+}
+
+void Scene::playActorAnimation(uint id, bool loop) {
+ Common::SeekableReadStream * s = Resources::instance()->loadLan(id + 1);
+ if (s == NULL)
+ error("playing animation %u failed", id);
+
+ actor_animation.load(s);
+ actor_animation.loop = loop;
}
void Scene::push(const SceneEvent &event) {
@@ -250,7 +263,10 @@ bool Scene::processEvent(const Common::Event &event) {
event.type == Common::EVENT_RBUTTONDOWN
) {
message.clear();
- custom_animations[4].free();
+ for(int i = 0; i < 4; ++i) {
+ if (custom_animations[i].loop)
+ custom_animations[i].free();
+ }
nextEvent();
return true;
}
@@ -274,18 +290,34 @@ bool Scene::render(OSystem * system) {
}
}
+ //render on
+ if (on.pixels != NULL) {
+ on.render(surface);
+ }
+
+ bool got_any_animation = false;
+
for (int i = 3; i >= 0; --i) {
- Animation &a = animations[i];
- Surface *s = a.currentFrame();
+ Animation *a = custom_animations + i;
+ Surface *s = a->currentFrame();
+ if (s != NULL) {
+ s->render(surface);
+ busy = true;
+ got_any_animation = true;
+ continue;
+ }
+
+ a = animations + i;
+ s = a->currentFrame();
if (s == NULL)
continue;
s->render(surface);
- if (a.id == 0)
+ if (a->id == 0)
continue;
- Object * obj = getObject(a.id);
+ Object * obj = getObject(a->id);
if (obj != NULL) {
obj->rect.left = s->x;
obj->rect.top = s->y;
@@ -294,33 +326,34 @@ bool Scene::render(OSystem * system) {
//obj->dump();
}
}
-
- //render on
- if (on.pixels != NULL) {
- on.render(surface);
- }
-
- bool hide_actor = false;
- bool got_any_animation = false;
- for (int i = 3; i >= 0; --i) {
- Animation &a = custom_animations[i];
- Surface *s = a.currentFrame();
- if (s == NULL) {
- if (!a.empty() && current_event.type == SceneEvent::PlayAnimation) {
- debug(0, "animation %u stopped", current_event.animation);
- a.free();
+ Surface * mark = actor_animation.currentFrame();
+ if (mark == NULL) {
+ actor_animation.free();
+
+ if (destination != position) {
+ Common::Point dp(destination.x - position0.x, destination.y - position0.y);
+ int o;
+ if (ABS(dp.x) > ABS(dp.y))
+ o = dp.x > 0? Object::ActorRight: Object::ActorLeft;
+ else
+ o = dp.y > 0? Object::ActorDown: Object::ActorUp;
+
+ position.x = position0.x + dp.x * progress / progress_total;
+ position.y = position0.y + dp.y * progress / progress_total;
+ teenagent.render(surface, position, o, 1);
+ ++progress;
+ if (progress >= progress_total) {
+ position = destination;
+ if (orientation == 0)
+ orientation = o; //save last orientation
nextEvent();
- i = -1;
- }
- continue;
- }
-
- s->render(surface);
- if (i == 0) {
- //debug(0, "animation active @%u,%u, hiding actor", s->x, s->y);
- hide_actor = true;
- }
+ } else
+ busy = true;
+ } else
+ teenagent.render(surface, position, orientation, 0);
+ } else {
+ mark->render(surface);
busy = true;
got_any_animation = true;
}
@@ -328,29 +361,6 @@ bool Scene::render(OSystem * system) {
if (current_event.type == SceneEvent::WaitForAnimation && !got_any_animation) {
nextEvent();
}
-
- if (destination != position) {
- Common::Point dp(destination.x - position0.x, destination.y - position0.y);
- int o;
- if (ABS(dp.x) > ABS(dp.y))
- o = dp.x > 0? Object::ActorRight: Object::ActorLeft;
- else
- o = dp.y > 0? Object::ActorDown: Object::ActorUp;
-
- position.x = position0.x + dp.x * progress / progress_total;
- position.y = position0.y + dp.y * progress / progress_total;
- teenagent.render(surface, position, o, 1);
- ++progress;
- if (progress >= progress_total) {
- position = destination;
- if (orientation == 0)
- orientation = o; //save last orientation
- nextEvent();
- } else
- busy = true;
- } else if (!hide_actor) {
- teenagent.render(surface, position, orientation, 0);
- }
busy |= processEventQueue();
//if (!current_event.empty())
@@ -437,9 +447,14 @@ bool Scene::processEventQueue() {
case SceneEvent::PlayAnimation: {
debug(0, "playing animation %u", current_event.animation);
- playAnimation(current_event.color & 0x7f /*slot actually :)*/, current_event.animation);
- if (current_event.color & 0x80)
- nextEvent();
+ playAnimation(current_event.color & 0x3 /*slot actually :)*/, current_event.animation, (current_event.color & 0x40) != 0);
+ current_event.clear();
+ } break;
+
+ case SceneEvent::PlayActorAnimation: {
+ debug(0, "playing actor animation %u", current_event.animation);
+ playActorAnimation(current_event.animation, (current_event.color & 0x40) != 0);
+ current_event.clear();
} break;
case SceneEvent::PlayMusic: {
diff --git a/engines/teenagent/scene.h b/engines/teenagent/scene.h
index a81932c800..8829cf0dec 100644
--- a/engines/teenagent/scene.h
+++ b/engines/teenagent/scene.h
@@ -40,7 +40,7 @@ class Dialog;
struct SceneEvent {
enum Type {
- None, Message, Walk, PlayAnimation,
+ None, Message, Walk, PlayAnimation, PlayActorAnimation,
LoadScene, SetOn, SetLan, PlayMusic,
PlaySound, EnableObject, WaitForAnimation,
Quit
@@ -104,7 +104,6 @@ public:
void displayMessage(const Common::String &str);
void setOrientation(uint8 o) { orientation = o; }
- void playAnimation(byte idx, uint id);
void push(const SceneEvent &event);
bool processEvent(const Common::Event &event);
@@ -122,6 +121,9 @@ public:
private:
void loadOns();
void loadLans();
+
+ void playAnimation(byte idx, uint id, bool loop);
+ void playActorAnimation(uint id, bool loop);
byte palette[768];
void setPalette(OSystem *system, const byte * palette, unsigned mul = 1);
@@ -141,7 +143,7 @@ private:
Surface on;
Surface *ons;
uint32 ons_count;
- Animation animations[4], custom_animations[5];
+ Animation actor_animation, animations[4], custom_animations[4];
Actor teenagent, teenagent_idle;
Common::Point position0, position, destination;
diff --git a/engines/teenagent/teenagent.cpp b/engines/teenagent/teenagent.cpp
index 909d69f6f6..3aaf33eed4 100644
--- a/engines/teenagent/teenagent.cpp
+++ b/engines/teenagent/teenagent.cpp
@@ -381,11 +381,21 @@ void TeenAgentEngine::playAnimation(uint16 id, byte slot, bool async) {
SceneEvent event(SceneEvent::PlayAnimation);
event.animation = id;
event.color = slot;
- if (async)
- event.color |= 0x80;
scene->push(event);
+ if (!async)
+ waitAnimation();
}
+void TeenAgentEngine::playActorAnimation(uint16 id, bool async) {
+ SceneEvent event(SceneEvent::PlayActorAnimation);
+ event.animation = id;
+ event.color = 0;
+ scene->push(event);
+ if (!async)
+ waitAnimation();
+}
+
+
void TeenAgentEngine::loadScene(byte id, const Common::Point &pos, byte o) {
loadScene(id, pos.x, pos.y, o);
}
diff --git a/engines/teenagent/teenagent.h b/engines/teenagent/teenagent.h
index 9728cbb002..31d29c045f 100644
--- a/engines/teenagent/teenagent.h
+++ b/engines/teenagent/teenagent.h
@@ -71,7 +71,8 @@ public:
void moveTo(uint16 x, uint16 y, byte o, bool warp = false);
void moveTo(Object * obj);
void moveRel(int16 x, int16 y, byte o, bool warp = false);
- void playAnimation(uint16 id, byte slot = 0, bool async = false);
+ void playActorAnimation(uint16 id, bool async = false);
+ void playAnimation(uint16 id, byte slot, bool async = false);
void loadScene(byte id, const Common::Point &pos, byte o = 0);
void loadScene(byte id, uint16 x, uint16 y, byte o = 0);
void setOns(byte id, byte value, byte scene_id = 0);