aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorVladimir Menshakov2009-11-08 23:56:06 +0000
committerVladimir Menshakov2009-11-08 23:56:06 +0000
commit99b68b3a1349f41ea149e48192d750361c088cba (patch)
treeb38f3d5afcc755472daae747499f0df768d485e9 /engines
parent83713e92fac141bfdf79e81ca30d79bed9d1a44e (diff)
downloadscummvm-rg350-99b68b3a1349f41ea149e48192d750361c088cba.tar.gz
scummvm-rg350-99b68b3a1349f41ea149e48192d750361c088cba.tar.bz2
scummvm-rg350-99b68b3a1349f41ea149e48192d750361c088cba.zip
fixed boat bug
svn-id: r45770
Diffstat (limited to 'engines')
-rw-r--r--engines/teenagent/callbacks.cpp6
-rw-r--r--engines/teenagent/scene.cpp11
2 files changed, 9 insertions, 8 deletions
diff --git a/engines/teenagent/callbacks.cpp b/engines/teenagent/callbacks.cpp
index ee31b53fdb..3ef25dc67f 100644
--- a/engines/teenagent/callbacks.cpp
+++ b/engines/teenagent/callbacks.cpp
@@ -1326,9 +1326,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
inventory->add(10);
disableObject(2);
setOns(1, 10);
-
- byte * scene_15_ons = scene->getOns(15); //patch ons for the scene 15
- scene_15_ons[1] = 0;
+ setOns(1, 0, 15);
byte f = GET_FLAG(0xDB98) + 1;
SET_FLAG(0xDB98, f);
if (f >= 2) {
@@ -2373,11 +2371,11 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(20, 9);
playActorAnimation(530);
loadScene(16, 236, 95, 1);
- setOns(0, 9);
playActorAnimation(531);
playSound(36, 4);
playActorAnimation(532);
playActorAnimation(533);
+ setOns(0, 9);
moveTo(236, 95, 1, true);
playMusic(9);
return true;
diff --git a/engines/teenagent/scene.cpp b/engines/teenagent/scene.cpp
index b1abd902e8..a7f3ae0919 100644
--- a/engines/teenagent/scene.cpp
+++ b/engines/teenagent/scene.cpp
@@ -383,6 +383,13 @@ bool Scene::render(OSystem *system) {
Graphics::Surface *surface = system->lockScreen();
+ //render on
+ if (on.pixels != NULL) {
+ if (_id != 16 || getOns(16)[0] != 0) {
+ on.render(surface); //do not render boat on isle. I double checked all callbacks, there's no code switching off the boat :(
+ }
+ }
+
if (ons != NULL) {
for (uint32 i = 0; i < ons_count; ++i) {
Surface *s = ons + i;
@@ -488,10 +495,6 @@ bool Scene::render(OSystem *system) {
}
}
- //render on
- if (on.pixels != NULL) {
- on.render(surface);
- }
if (!message.empty()) {
bool visible = true;