Moved more SMUSH/Insane code from ScummEngine_v6 to ScummEngine_v7

svn-id: r24710
This commit is contained in:
Max Horn 2006-11-13 20:12:52 +00:00
parent 1a2853f7e0
commit 12fb12caf5
2 changed files with 217 additions and 204 deletions

View file

@ -584,30 +584,10 @@ protected:
} _akosQueue[32];
int16 _akosQueuePos;
int _smushFrameRate;
/**
* Flag which signals that the SMUSH video playback should end now
* (e.g. because it was aborted by the user or it's simply finished).
*/
bool _smushVideoShouldFinish;
bool _smushActive;
Insane *_insane;
byte _curActor;
int _curVerb;
int _curVerbSlot;
public:
/** This flag tells IMuseDigital that INSANE is running. */
bool _insaneRunning; // Used by IMuseDigital::flushTracks()
SmushMixer *_smixer;
SmushPlayer *_splayer;
public:
ScummEngine_v6(OSystem *syst, const DetectorResult &dr);
@ -817,7 +797,7 @@ protected:
void o6_distObjectObject();
void o6_distObjectPt();
void o6_distPtPt();
void o6_kernelSetFunctions();
virtual void o6_kernelSetFunctions();
void o6_delayFrames();
void o6_pickOneOf();
void o6_pickOneOfDefault();
@ -858,11 +838,34 @@ public:
ScummEngine_v7(OSystem *syst, const DetectorResult &dr);
~ScummEngine_v7();
protected:
int _smushFrameRate;
/**
* Flag which signals that the SMUSH video playback should end now
* (e.g. because it was aborted by the user or it's simply finished).
*/
bool _smushVideoShouldFinish;
bool _smushActive;
Insane *_insane;
public:
/** This flag tells IMuseDigital that INSANE is running. */
bool _insaneRunning; // Used by IMuseDigital::flushTracks()
SmushMixer *_smixer;
SmushPlayer *_splayer;
struct LangIndexNode {
char tag[12+1];
int32 offset;
};
protected:
int _verbCharset, _verbLineSpacing;
bool _existLanguageFile;
char *_languageBuffer;
@ -887,6 +890,7 @@ public:
int _subtitleQueuePos;
SubtitleText _subtitleQueue[20];
public:
void processSubtitleQueue();
void addSubtitleToQueue(const byte *text, const Common::Point &pos, byte color, byte charset);
void clearSubtitleQueue();
@ -924,6 +928,9 @@ protected:
void playSpeech(const byte *ptr);
virtual void drawVerb(int verb, int mode);
virtual void o6_kernelSetFunctions();
};
class ScummEngine_v8 : public ScummEngine_v7 {

View file

@ -2506,19 +2506,18 @@ void ScummEngine_v6::o6_setBlastObjectWindow() {
// So, we just handle this as no-op opcode.
}
void ScummEngine_v6::o6_kernelSetFunctions() {
#ifndef DISABLE_SCUMM_7_8
void ScummEngine_v7::o6_kernelSetFunctions() {
int args[30];
int num;
Actor *a;
num = getStackList(args, ARRAYSIZE(args));
if (_game.version >= 7) {
switch (args[0]) {
case 4:
grabCursor(args[1], args[2], args[3], args[4]);
break;
#ifndef DISABLE_SCUMM_7_8
case 6: {
if (_smushFrameRate == 0)
_smushFrameRate = 14;
@ -2550,7 +2549,6 @@ void ScummEngine_v6::o6_kernelSetFunctions() {
}
}
break;
#endif
case 12:
setCursorFromImg(args[1], (uint) - 1, args[2]);
break;
@ -2602,7 +2600,16 @@ void ScummEngine_v6::o6_kernelSetFunctions() {
error("o6_kernelSetFunctions: default case %d (param count %d)", args[0], num);
break;
}
} else {
}
#endif
void ScummEngine_v6::o6_kernelSetFunctions() {
int args[30];
int num;
Actor *a;
num = getStackList(args, ARRAYSIZE(args));
switch (args[0]) {
case 3:
// Dummy case
@ -2697,7 +2704,6 @@ void ScummEngine_v6::o6_kernelSetFunctions() {
error("o6_kernelSetFunctions: default case %d (param count %d)", args[0], num);
break;
}
}
}
void ScummEngine_v6::o6_kernelGetFunctions() {