Palette fade in when a cutaway starts in IHNM is working now. Also, the fade mode is properly set in all cases where palette fadeout is used. Some code formatting

svn-id: r28904
This commit is contained in:
Filippos Karapetis
2007-09-15 12:09:56 +00:00
parent fef707a2dd
commit 5fa2b1a3c5
11 changed files with 126 additions and 129 deletions
+1 -1
View File
@@ -2415,8 +2415,8 @@ void Actor::moveDragon(ActorData *actor) {
event.param4 = -1; // Object
event.param5 = -1; // With Object
event.param6 = -1; // Actor
_vm->_events->queue(&event);
_dragonHunt = false;
}
} else {
+77 -56
View File
@@ -84,34 +84,38 @@ int Anim::playCutaway(int cut, bool fade) {
Event event;
Event *q_event = NULL;
bool startImmediately = false;
byte *resourceData;
size_t resourceDataLength;
ResourceContext *context = _vm->_resource->getContext(GAME_RESOURCEFILE);
_cutAwayFade = fade;
_vm->_gfx->savePalette();
_vm->_gfx->getCurrentPal(saved_pal);
// TODO: Fade in and fade out at this point are problematic right now, caused
// by the fact that we're trying to mix events with direct calls:
// 1) The background of the animation is shown when _vm->decodeBGImage and
// bgSurface->blit are called below, before palette fadeout starts
// 2) Fade in to the animation is currently problematic (it fades in to white)
// We either have to use non-event calls to fade in/out the palette, or change
// the background display and animation parts to events
fade = false; // remove this once palette fadein-fadeout works
if (fade) {
static PalEntry cur_pal[PAL_ENTRIES];
_vm->_gfx->getCurrentPal(cur_pal);
_vm->_interface->setFadeMode(kFadeOut);
// Fade to black out
_vm->_gfx->getCurrentPal(cur_pal);
event.type = kEvTImmediate;
event.code = kPalEvent;
event.op = kEventPalToBlack;
event.time = 0;
event.duration = kNormalFadeDuration;
event.data = cur_pal;
q_event = _vm->_events->queue(&event);
// set fade mode
event.type = kEvTImmediate;
event.code = kInterfaceEvent;
event.op = kEventSetFadeMode;
event.param = kNoFade;
event.time = 0;
event.duration = 0;
q_event = _vm->_events->chain(q_event, &event);
}
// Prepare cutaway
@@ -131,46 +135,19 @@ int Anim::playCutaway(int cut, bool fade) {
else
_vm->_interface->setMode(kPanelCutaway);
// Set the initial background and palette for the cutaway
ResourceContext *context = _vm->_resource->getContext(GAME_RESOURCEFILE);
byte *resourceData;
size_t resourceDataLength;
_vm->_resource->loadResource(context, _cutawayList[cut].backgroundResourceId, resourceData, resourceDataLength);
byte *buf;
size_t buflen;
int width;
int height;
_vm->decodeBGImage(resourceData, resourceDataLength, &buf, &buflen, &width, &height);
const PalEntry *palette = (const PalEntry *)_vm->getImagePal(resourceData, resourceDataLength);
Surface *bgSurface = _vm->_render->getBackGroundSurface();
const Rect rect(width, height);
bgSurface->blit(rect, buf);
_vm->_frameCount++;
// Handle fade up, if we previously faded down
if (fade) {
// Set the initial background and palette for the cutaway
event.type = kEvTImmediate;
event.code = kPalEvent;
event.op = kEventBlackToPal;
event.code = kCutawayEvent;
event.op = kEventShowCutawayBg;
event.time = 0;
event.duration = kNormalFadeDuration;
event.data = (PalEntry *)palette;
event.duration = 0;
event.param = _cutawayList[cut].backgroundResourceId;
q_event = _vm->_events->chain(q_event, &event);
} else {
_vm->_gfx->setPalette(palette);
showCutawayBg(_cutawayList[cut].backgroundResourceId);
}
free(buf);
free(resourceData);
// Play the animation
int cutawaySlot = -1;
@@ -215,7 +192,10 @@ int Anim::playCutaway(int cut, bool fade) {
event.param = MAX_ANIMATIONS + cutawaySlot;
event.time = (40 / 3) * 1000 / _cutawayList[cut].frameRate;
_vm->_events->queue(&event);
if (fade)
q_event = _vm->_events->chain(q_event, &event);
else
_vm->_events->queue(&event);
}
return MAX_ANIMATIONS + cutawaySlot;
@@ -235,7 +215,6 @@ void Anim::returnFromCutaway(void) {
debug(0, "returnFromCutaway()");
if (_cutawayActive) {
Event event;
Event *q_event = NULL;
@@ -243,16 +222,26 @@ void Anim::returnFromCutaway(void) {
if (_cutAwayFade) {
static PalEntry cur_pal[PAL_ENTRIES];
_vm->_gfx->getCurrentPal(cur_pal);
_vm->_interface->setFadeMode(kFadeOut);
// Fade to black out
_vm->_gfx->getCurrentPal(cur_pal);
event.type = kEvTImmediate;
event.code = kPalEvent;
event.op = kEventPalToBlack;
event.time = 0;
event.duration = kNormalFadeDuration;
event.data = cur_pal;
q_event = _vm->_events->queue(&event);
// set fade mode
event.type = kEvTImmediate;
event.code = kInterfaceEvent;
event.op = kEventSetFadeMode;
event.param = kNoFade;
event.time = 0;
event.duration = 0;
q_event = _vm->_events->chain(q_event, &event);
}
// Clear the cutaway. Note that this sets _cutawayActive to false
@@ -275,7 +264,6 @@ void Anim::returnFromCutaway(void) {
event.op = kEventResumeAll;
event.time = 0;
event.duration = 0;
q_event = _vm->_events->chain(q_event, &event); // chain with the other events
// Draw the scene
@@ -284,7 +272,6 @@ void Anim::returnFromCutaway(void) {
event.op = kEventDraw;
event.time = 0;
event.duration = 0;
q_event = _vm->_events->chain(q_event, &event); // chain with the other events
// Handle fade up, if we previously faded down
@@ -295,16 +282,13 @@ void Anim::returnFromCutaway(void) {
event.time = 0;
event.duration = kNormalFadeDuration;
event.data = saved_pal;
q_event = _vm->_events->chain(q_event, &event);
}
event.type = kEvTOneshot;
event.code = kScriptEvent;
event.op = kEventThreadWake;
event.param = kWaitTypeWakeUp;
q_event = _vm->_events->chain(q_event, &event);
}
}
@@ -336,6 +320,45 @@ void Anim::clearCutaway(void) {
}
}
void Anim::showCutawayBg(int bg) {
ResourceContext *context = _vm->_resource->getContext(GAME_RESOURCEFILE);
byte *resourceData;
size_t resourceDataLength;
byte *buf;
size_t buflen;
int width;
int height;
Event event;
static PalEntry pal[PAL_ENTRIES];
_vm->_resource->loadResource(context, bg, resourceData, resourceDataLength);
_vm->decodeBGImage(resourceData, resourceDataLength, &buf, &buflen, &width, &height);
const byte *palPointer = _vm->getImagePal(resourceData, resourceDataLength);
memcpy(pal, palPointer, sizeof(pal));
Surface *bgSurface = _vm->_render->getBackGroundSurface();
const Rect rect(width, height);
bgSurface->blit(rect, buf);
_vm->_frameCount++;
if (_cutAwayFade) {
// Handle fade up, if we previously faded down
event.type = kEvTImmediate;
event.code = kPalEvent;
event.op = kEventBlackToPal;
event.time = 0;
event.duration = kNormalFadeDuration;
event.data = pal;
_vm->_events->queue(&event);
} else {
_vm->_gfx->setPalette(pal);
}
free(buf);
free(resourceData);
}
void Anim::startVideo(int vid, bool fade) {
debug(0, "startVideo(%d, %d)", vid, fade);
@@ -470,7 +493,6 @@ void Anim::play(uint16 animId, int vectorTime, bool playing) {
event.op = kEventFrame;
event.param = animId;
event.time = 10;
_vm->_events->queue(&event);
// Nothing to render here (apart from the background, which is already rendered),
@@ -503,8 +525,8 @@ void Anim::play(uint16 animId, int vectorTime, bool playing) {
event.op = kEventFrame;
event.param = animId;
event.time = 0;
_vm->_events->queue(&event);
return;
}
@@ -568,7 +590,6 @@ void Anim::play(uint16 animId, int vectorTime, bool playing) {
event.op = kEventFrame;
event.param = animId;
event.time = frameTime;
_vm->_events->queue(&event);
}
+1
View File
@@ -119,6 +119,7 @@ public:
void endCutaway(void);
void returnFromCutaway(void);
void clearCutaway(void);
void showCutawayBg(int bg);
void startVideo(int vid, bool fade);
void endVideo(void);
+3
View File
@@ -549,6 +549,9 @@ int Events::handleOneShot(Event *event) {
case kEventClear:
_vm->_anim->clearCutaway();
break;
case kEventShowCutawayBg:
_vm->_anim->showCutawayBg(event->param);
break;
default:
break;
}
+2 -1
View File
@@ -117,7 +117,8 @@ enum EventOps {
kEventDissolve = 1,
kEventDissolveBGMask = 2,
// CUTAWAY events
kEventClear = 1
kEventClear = 1,
kEventShowCutawayBg = 2
};
enum EventParams {
-1
View File
@@ -1527,7 +1527,6 @@ void Interface::handleChapterSelectionClick(const Point& mousePoint) {
event.param4 = obj; // Object
event.param5 = 0; // With Object
event.param6 = obj; // Actor
_vm->_events->queue(&event);
}
}
+8 -33
View File
@@ -115,7 +115,6 @@ Event *Scene::ITEQueueDialogue(Event *q_event, int n_dialogues, const IntroDialo
event.op = kEventDisplay;
event.data = entry;
event.time = (i == 0) ? 0 : VOICE_PAD;
q_event = _vm->_events->chain(q_event, &event);
// Play voice
@@ -124,7 +123,6 @@ Event *Scene::ITEQueueDialogue(Event *q_event, int n_dialogues, const IntroDialo
event.op = kEventPlay;
event.param = dialogue[i].i_voice_rn;
event.time = 0;
q_event = _vm->_events->chain(q_event, &event);
voice_len = _vm->_sndRes->getVoiceLength(dialogue[i].i_voice_rn);
@@ -138,7 +136,6 @@ Event *Scene::ITEQueueDialogue(Event *q_event, int n_dialogues, const IntroDialo
event.op = kEventRemove;
event.data = entry;
event.time = voice_len;
q_event = _vm->_events->chain(q_event, &event);
}
@@ -265,7 +262,6 @@ Event *Scene::ITEQueueCredits(int delta_time, int duration, int n_credits, const
event.op = kEventDisplay;
event.data = entry;
event.time = delta_time;
q_event = _vm->_events->queue(&event);
// Remove text
@@ -274,7 +270,6 @@ Event *Scene::ITEQueueCredits(int delta_time, int duration, int n_credits, const
event.op = kEventRemove;
event.data = entry;
event.time = duration;
q_event = _vm->_events->chain(q_event, &event);
y += (_vm->_font->getHeight(font) + line_spacing);
@@ -301,7 +296,6 @@ int Scene::ITEIntroAnimProc(int param) {
event.op = kEventDisplay;
event.param = kEvPSetPalette;
event.time = 0;
q_event = _vm->_events->queue(&event);
debug(3, "Intro animation procedure started.");
@@ -340,7 +334,6 @@ int Scene::ITEIntroAnimProc(int param) {
event.op = kEventPlay;
event.param = 0;
event.time = 0;
q_event = _vm->_events->chain(q_event, &event);
// Queue intro music playback
@@ -350,7 +343,6 @@ int Scene::ITEIntroAnimProc(int param) {
event.param2 = MUSIC_LOOP;
event.op = kEventPlay;
event.time = 0;
q_event = _vm->_events->chain(q_event, &event);
}
break;
@@ -427,7 +419,6 @@ int Scene::ITEIntroCave1Proc(int param) {
event.code = kPalAnimEvent;
event.op = kEventCycleStart;
event.time = 0;
q_event = _vm->_events->queue(&event);
// Queue narrator dialogue list
@@ -438,8 +429,8 @@ int Scene::ITEIntroCave1Proc(int param) {
event.code = kSceneEvent;
event.op = kEventEnd;
event.time = VOICE_PAD;
q_event = _vm->_events->chain(q_event, &event);
break;
case SCENE_END:
break;
@@ -504,7 +495,6 @@ int Scene::ITEIntroCave2Proc(int param) {
event.op = kEventDissolve;
event.time = 0;
event.duration = DISSOLVE_DURATION;
q_event = _vm->_events->queue(&event);
// Begin palette cycling animation for candles
@@ -512,7 +502,6 @@ int Scene::ITEIntroCave2Proc(int param) {
event.code = kPalAnimEvent;
event.op = kEventCycleStart;
event.time = 0;
q_event = _vm->_events->chain(q_event, &event);
// Queue narrator dialogue list
@@ -523,8 +512,8 @@ int Scene::ITEIntroCave2Proc(int param) {
event.code = kSceneEvent;
event.op = kEventEnd;
event.time = VOICE_PAD;
q_event = _vm->_events->chain(q_event, &event);
break;
case SCENE_END:
break;
@@ -588,7 +577,6 @@ int Scene::ITEIntroCave3Proc(int param) {
event.op = kEventDissolve;
event.time = 0;
event.duration = DISSOLVE_DURATION;
q_event = _vm->_events->queue(&event);
// Begin palette cycling animation for candles
@@ -596,7 +584,6 @@ int Scene::ITEIntroCave3Proc(int param) {
event.code = kPalAnimEvent;
event.op = kEventCycleStart;
event.time = 0;
q_event = _vm->_events->chain(q_event, &event);
// Queue narrator dialogue list
@@ -607,8 +594,8 @@ int Scene::ITEIntroCave3Proc(int param) {
event.code = kSceneEvent;
event.op = kEventEnd;
event.time = VOICE_PAD;
q_event = _vm->_events->chain(q_event, &event);
break;
case SCENE_END:
break;
@@ -681,7 +668,6 @@ int Scene::ITEIntroCave4Proc(int param) {
event.op = kEventDissolve;
event.time = 0;
event.duration = DISSOLVE_DURATION;
q_event = _vm->_events->queue(&event);
// Begin palette cycling animation for candles
@@ -689,7 +675,6 @@ int Scene::ITEIntroCave4Proc(int param) {
event.code = kPalAnimEvent;
event.op = kEventCycleStart;
event.time = 0;
q_event = _vm->_events->chain(q_event, &event);
// Queue narrator dialogue list
@@ -700,8 +685,8 @@ int Scene::ITEIntroCave4Proc(int param) {
event.code = kSceneEvent;
event.op = kEventEnd;
event.time = VOICE_PAD;
q_event = _vm->_events->chain(q_event, &event);
break;
case SCENE_END:
break;
@@ -747,7 +732,6 @@ int Scene::ITEIntroValleyProc(int param) {
event.op = kEventPlay;
event.param = 0;
event.time = 0;
q_event = _vm->_events->queue(&event);
// Begin ITE title theme music
@@ -759,7 +743,6 @@ int Scene::ITEIntroValleyProc(int param) {
event.param2 = MUSIC_NORMAL;
event.op = kEventPlay;
event.time = 0;
q_event = _vm->_events->chain(q_event, &event);
// Pause animation before logo
@@ -768,7 +751,6 @@ int Scene::ITEIntroValleyProc(int param) {
event.op = kEventStop;
event.param = 0;
event.time = 3000;
q_event = _vm->_events->chain(q_event, &event);
// Display logo
@@ -777,7 +759,6 @@ int Scene::ITEIntroValleyProc(int param) {
event.op = kEventDissolveBGMask;
event.time = 0;
event.duration = LOGO_DISSOLVE_DURATION;
q_event = _vm->_events->chain(q_event, &event);
// Remove logo
@@ -786,7 +767,6 @@ int Scene::ITEIntroValleyProc(int param) {
event.op = kEventDissolve;
event.time = 3000;
event.duration = LOGO_DISSOLVE_DURATION;
q_event = _vm->_events->chain(q_event, &event);
// Unpause animation before logo
@@ -795,7 +775,6 @@ int Scene::ITEIntroValleyProc(int param) {
event.op = kEventPlay;
event.time = 0;
event.param = 0;
q_event = _vm->_events->chain(q_event, &event);
// Queue game credits list
@@ -806,8 +785,8 @@ int Scene::ITEIntroValleyProc(int param) {
event.code = kSceneEvent;
event.op = kEventEnd;
event.time = 1000;
q_event = _vm->_events->chain(q_event, &event);
break;
case SCENE_END:
break;
@@ -870,7 +849,6 @@ int Scene::ITEIntroTreeHouseProc(int param) {
event.op = kEventDissolve;
event.time = 0;
event.duration = DISSOLVE_DURATION;
q_event = _vm->_events->queue(&event);
if (_vm->_anim->hasAnimation(0)) {
@@ -882,7 +860,6 @@ int Scene::ITEIntroTreeHouseProc(int param) {
event.op = kEventPlay;
event.param = 0;
event.time = 0;
q_event = _vm->_events->chain(q_event, &event);
}
@@ -895,8 +872,8 @@ int Scene::ITEIntroTreeHouseProc(int param) {
event.code = kSceneEvent;
event.op = kEventEnd;
event.time = 1000;
q_event = _vm->_events->chain(q_event, &event);
break;
case SCENE_END:
break;
@@ -950,7 +927,6 @@ int Scene::ITEIntroFairePathProc(int param) {
event.op = kEventDissolve;
event.time = 0;
event.duration = DISSOLVE_DURATION;
q_event = _vm->_events->queue(&event);
// Begin title screen background animation
@@ -961,7 +937,6 @@ int Scene::ITEIntroFairePathProc(int param) {
event.op = kEventPlay;
event.param = 0;
event.time = 0;
q_event = _vm->_events->chain(q_event, &event);
// Queue game credits list
@@ -973,8 +948,8 @@ int Scene::ITEIntroFairePathProc(int param) {
event.code = kSceneEvent;
event.op = kEventEnd;
event.time = 1000;
q_event = _vm->_events->chain(q_event, &event);
break;
case SCENE_END:
break;
@@ -1005,7 +980,6 @@ int Scene::ITEIntroFaireTentProc(int param) {
event.op = kEventDissolve;
event.time = 0;
event.duration = DISSOLVE_DURATION;
q_event_start = _vm->_events->queue(&event);
// End scene after momentary pause
@@ -1014,6 +988,7 @@ int Scene::ITEIntroFaireTentProc(int param) {
event.op = kEventEnd;
event.time = 5000;
q_event = _vm->_events->chain(q_event_start, &event);
break;
case SCENE_END:
break;
-2
View File
@@ -131,7 +131,6 @@ int PalAnim::cycleStart() {
event.code = kPalAnimEvent;
event.op = kEventCycleStep;
event.time = PALANIM_CYCLETIME;
_vm->_events->queue(&event);
return SUCCESS;
@@ -178,7 +177,6 @@ int PalAnim::cycleStep(int vectortime) {
event.code = kPalAnimEvent;
event.op = kEventCycleStep;
event.time = vectortime + PALANIM_CYCLETIME;
_vm->_events->queue(&event);
return SUCCESS;
+23 -21
View File
@@ -785,7 +785,6 @@ void Scene::loadScene(LoadSceneParams *loadSceneParams) {
event.param4 = _sceneNumber; // Object
event.param5 = loadSceneParams->actorsEntrance; // With Object
event.param6 = 0; // Actor
q_event = _vm->_events->chain(q_event, &event);
}
@@ -807,7 +806,6 @@ void Scene::loadScene(LoadSceneParams *loadSceneParams) {
event.time = 0;
event.duration = kNormalFadeDuration;
event.data = _bg.pal;
q_event = _vm->_events->chain(q_event, &event);
// set fade mode
@@ -836,14 +834,12 @@ void Scene::loadScene(LoadSceneParams *loadSceneParams) {
event.param2 = MUSIC_DEFAULT;
event.op = kEventPlay;
event.time = 0;
_vm->_events->queue(&event);
} else {
event.type = kEvTOneshot;
event.code = kMusicEvent;
event.op = kEventStop;
event.time = 0;
_vm->_events->queue(&event);
}
}
@@ -854,7 +850,6 @@ void Scene::loadScene(LoadSceneParams *loadSceneParams) {
event.op = kEventDisplay;
event.param = kEvPSetPalette;
event.time = 0;
_vm->_events->queue(&event);
// Begin palette cycle animation if present
@@ -862,7 +857,6 @@ void Scene::loadScene(LoadSceneParams *loadSceneParams) {
event.code = kPalAnimEvent;
event.op = kEventCycleStart;
event.time = 0;
q_event = _vm->_events->queue(&event);
// Start the scene main script
@@ -877,7 +871,6 @@ void Scene::loadScene(LoadSceneParams *loadSceneParams) {
event.param4 = _sceneNumber; // Object
event.param5 = loadSceneParams->actorsEntrance; // With Object
event.param6 = 0; // Actor
_vm->_events->queue(&event);
}
@@ -1326,22 +1319,31 @@ void Scene::clearPlacard() {
Event event;
Event *q_event;
_vm->_gfx->getCurrentPal(cur_pal);
_vm->_interface->setFadeMode(kFadeOut);
// Fade to black out
_vm->_gfx->getCurrentPal(cur_pal);
event.type = kEvTImmediate;
event.code = kPalEvent;
event.op = kEventPalToBlack;
event.time = 0;
event.duration = kNormalFadeDuration;
event.data = cur_pal;
q_event = _vm->_events->queue(&event);
// set fade mode
event.type = kEvTImmediate;
event.code = kInterfaceEvent;
event.op = kEventSetFadeMode;
event.param = kNoFade;
event.time = 0;
event.duration = 0;
q_event = _vm->_events->chain(q_event, &event);
event.type = kEvTOneshot;
event.code = kTextEvent;
event.op = kEventRemove;
event.data = _vm->_script->getPlacardTextEntry();
q_event = _vm->_events->chain(q_event, &event);
event.type = kEvTImmediate;
@@ -1349,7 +1351,6 @@ void Scene::clearPlacard() {
event.op = kEventRestoreMode;
event.time = 0;
event.duration = 0;
q_event = _vm->_events->chain(q_event, &event);
_vm->_scene->getBGPal(pal);
@@ -1360,20 +1361,17 @@ void Scene::clearPlacard() {
event.time = 0;
event.duration = kNormalFadeDuration;
event.data = pal;
q_event = _vm->_events->chain(q_event, &event);
event.type = kEvTOneshot;
event.code = kCursorEvent;
event.op = kEventShow;
q_event = _vm->_events->chain(q_event, &event);
event.type = kEvTOneshot;
event.code = kScriptEvent;
event.op = kEventThreadWake;
event.param = kWaitTypePlacard;
q_event = _vm->_events->chain(q_event, &event);
}
@@ -1395,30 +1393,37 @@ void Scene::showPsychicProfile(const char *text) {
event.type = kEvTOneshot;
event.code = kCursorEvent;
event.op = kEventHide;
q_event = _vm->_events->queue(&event);
_vm->_gfx->getCurrentPal(cur_pal);
_vm->_interface->setFadeMode(kFadeOut);
// Fade to black out
_vm->_gfx->getCurrentPal(cur_pal);
event.type = kEvTImmediate;
event.code = kPalEvent;
event.op = kEventPalToBlack;
event.time = 0;
event.duration = kNormalFadeDuration;
event.data = cur_pal;
q_event = _vm->_events->chain(q_event, &event);
// set fade mode
event.type = kEvTImmediate;
event.code = kInterfaceEvent;
event.op = kEventSetFadeMode;
event.param = kNoFade;
event.time = 0;
event.duration = 0;
q_event = _vm->_events->chain(q_event, &event);
event.type = kEvTOneshot;
event.code = kInterfaceEvent;
event.op = kEventClearStatus;
q_event = _vm->_events->chain(q_event, &event);
// Set the background and palette for the psychic profile
event.type = kEvTOneshot;
event.code = kPsychicProfileBgEvent;
q_event = _vm->_events->chain(q_event, &event);
_vm->_scene->_textList.clear();
@@ -1442,7 +1447,6 @@ void Scene::showPsychicProfile(const char *text) {
event.code = kTextEvent;
event.op = kEventDisplay;
event.data = _psychicProfileTextEntry;
q_event = _vm->_events->chain(q_event, &event);
}
@@ -1454,14 +1458,12 @@ void Scene::showPsychicProfile(const char *text) {
event.time = 0;
event.duration = kNormalFadeDuration;
event.data = pal;
q_event = _vm->_events->chain(q_event, &event);
event.type = kEvTOneshot;
event.code = kScriptEvent;
event.op = kEventThreadWake;
event.param = kWaitTypePlacard;
q_event = _vm->_events->chain(q_event, &event);
}
-1
View File
@@ -505,7 +505,6 @@ void Script::doVerb() {
event.param4 = _pendingObject[0]; // Object
event.param5 = _pendingObject[1]; // With Object
event.param6 = (objectType == kGameObjectActor) ? _pendingObject[0] : ID_PROTAG; // Actor
_vm->_events->queue(&event);
} else {
+11 -13
View File
@@ -431,7 +431,6 @@ void Script::sfScriptDoAction(SCRIPTFUNC_PARAMS) {
event.param4 = theObject; // Object
event.param5 = withObject; // With Object
event.param6 = objectId;
_vm->_events->queue(&event);
}
@@ -1177,24 +1176,32 @@ void Script::sfPlacard(SCRIPTFUNC_PARAMS) {
event.type = kEvTOneshot;
event.code = kCursorEvent;
event.op = kEventHide;
q_event = _vm->_events->queue(&event);
_vm->_gfx->getCurrentPal(cur_pal);
_vm->_interface->setFadeMode(kFadeOut);
// Fade to black out
_vm->_gfx->getCurrentPal(cur_pal);
event.type = kEvTImmediate;
event.code = kPalEvent;
event.op = kEventPalToBlack;
event.time = 0;
event.duration = kNormalFadeDuration;
event.data = cur_pal;
q_event = _vm->_events->chain(q_event, &event);
// set fade mode
event.type = kEvTImmediate;
event.code = kInterfaceEvent;
event.op = kEventSetFadeMode;
event.param = kNoFade;
event.time = 0;
event.duration = 0;
q_event = _vm->_events->chain(q_event, &event);
event.type = kEvTOneshot;
event.code = kInterfaceEvent;
event.op = kEventClearStatus;
q_event = _vm->_events->chain(q_event, &event);
event.type = kEvTOneshot;
@@ -1206,7 +1213,6 @@ void Script::sfPlacard(SCRIPTFUNC_PARAMS) {
event.param3 = _vm->_scene->getHeight();
event.param4 = 0;
event.param5 = _vm->getDisplayWidth();
q_event = _vm->_events->chain(q_event, &event);
// Put the text in the center of the viewport, assuming it will fit on
@@ -1231,25 +1237,21 @@ void Script::sfPlacard(SCRIPTFUNC_PARAMS) {
event.code = kTextEvent;
event.op = kEventDisplay;
event.data = _placardTextEntry;
q_event = _vm->_events->chain(q_event, &event);
_vm->_scene->getBGPal(pal);
event.type = kEvTImmediate;
event.code = kPalEvent;
event.op = kEventBlackToPal;
event.time = 0;
event.duration = kNormalFadeDuration;
event.data = pal;
q_event = _vm->_events->chain(q_event, &event);
event.type = kEvTOneshot;
event.code = kScriptEvent;
event.op = kEventThreadWake;
event.param = kWaitTypePlacard;
q_event = _vm->_events->chain(q_event, &event);
}
@@ -1738,7 +1740,6 @@ void Script::sfScriptFade(SCRIPTFUNC_PARAMS) {
static PalEntry cur_pal[PAL_ENTRIES];
_vm->_gfx->getCurrentPal(cur_pal);
event.type = kEvTImmediate;
event.code = kPalEvent;
event.op = kEventPalFade;
@@ -1749,7 +1750,6 @@ void Script::sfScriptFade(SCRIPTFUNC_PARAMS) {
event.param2 = endingBrightness;
event.param3 = firstPalEntry;
event.param4 = lastPalEntry - firstPalEntry + 1;
_vm->_events->queue(&event);
}
@@ -1798,7 +1798,6 @@ void Script::sfAddIHNMDemoHelpTextLine(SCRIPTFUNC_PARAMS) {
event.code = kTextEvent;
event.op = kEventDisplay;
event.data = _psychicProfileTextEntry;
_vm->_events->queue(&event);
_ihnmDemoCurrentY += 10;
@@ -1932,7 +1931,6 @@ void Script::sfQueueMusic(SCRIPTFUNC_PARAMS) {
// change
// FIXME: If this is too short for other cases apart from chapter
// point change, set it back to 1000
_vm->_events->queue(&event);
if (!_vm->_scene->haveChapterPointsChanged()) {