aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/kyra_hof.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/kyra/kyra_hof.h')
-rw-r--r--engines/kyra/kyra_hof.h144
1 files changed, 62 insertions, 82 deletions
diff --git a/engines/kyra/kyra_hof.h b/engines/kyra/kyra_hof.h
index 1e6c23331e..866dd55d16 100644
--- a/engines/kyra/kyra_hof.h
+++ b/engines/kyra/kyra_hof.h
@@ -97,22 +97,17 @@ enum kNestedSequencesDemo {
kSequenceDemoDig
};
-class WSAMovieV2;
+class WSAMovie_v2;
class KyraEngine_HoF;
class TextDisplayer_HoF;
struct TIM;
-typedef int (KyraEngine_HoF::*SeqProc)(WSAMovieV2*, int, int, int);
-
-struct FrameControl {
- uint16 index;
- uint16 delay;
-};
+typedef int (KyraEngine_HoF::*SeqProc)(WSAMovie_v2*, int, int, int);
struct ActiveWSA {
int16 flags;
- WSAMovieV2 *movie;
+ WSAMovie_v2 *movie;
uint16 startFrame;
uint16 endFrame;
uint16 frameDelay;
@@ -179,17 +174,6 @@ struct ItemAnimData_v1 {
const uint16 *frames;
};
-struct ItemAnimData_v2 {
- int16 itemIndex;
- uint8 numFrames;
- const FrameControl *frames;
-};
-
-struct ActiveItemAnim {
- uint16 currentFrame;
- uint32 nextFrame;
-};
-
class KyraEngine_HoF : public KyraEngine_v2 {
friend class Debugger_HoF;
friend class TextDisplayer_HoF;
@@ -198,6 +182,8 @@ public:
KyraEngine_HoF(OSystem *system, const GameFlags &flags);
~KyraEngine_HoF();
+ void pauseEngineIntern(bool pause);
+
Screen *screen() { return _screen; }
Screen_v2 *screen_v2() const { return _screen; }
GUI_v2 *gui_v2() const { return _gui; }
@@ -209,52 +195,52 @@ protected:
// intro/outro
void seq_playSequences(int startSeq, int endSeq = -1);
- int seq_introWestwood(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_introTitle(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_introOverview(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_introLibrary(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_introHand(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_introPoint(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_introZanfaun(WSAMovieV2 *wsaObj, int x, int y, int frm);
-
- int seq_introOver1(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_introOver2(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_introForest(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_introDragon(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_introDarm(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_introLibrary2(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_introMarco(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_introHand1a(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_introHand1b(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_introHand1c(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_introHand2(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_introHand3(WSAMovieV2 *wsaObj, int x, int y, int frm);
-
- int seq_finaleFunters(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_finaleFerb(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_finaleFish(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_finaleFheep(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_finaleFarmer(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_finaleFuards(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_finaleFirates(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_finaleFrash(WSAMovieV2 *wsaObj, int x, int y, int frm);
-
- int seq_finaleFiggle(WSAMovieV2 *wsaObj, int x, int y, int frm);
-
- int seq_demoVirgin(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_demoWestwood(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_demoTitle(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_demoHill(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_demoOuthome(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_demoWharf(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_demoDinob(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_demoFisher(WSAMovieV2 *wsaObj, int x, int y, int frm);
-
- int seq_demoWharf2(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_demoDinob2(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_demoWater(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_demoBail(WSAMovieV2 *wsaObj, int x, int y, int frm);
- int seq_demoDig(WSAMovieV2 *wsaObj, int x, int y, int frm);
+ int seq_introWestwood(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_introTitle(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_introOverview(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_introLibrary(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_introHand(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_introPoint(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_introZanfaun(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+
+ int seq_introOver1(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_introOver2(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_introForest(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_introDragon(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_introDarm(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_introLibrary2(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_introMarco(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_introHand1a(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_introHand1b(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_introHand1c(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_introHand2(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_introHand3(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+
+ int seq_finaleFunters(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_finaleFerb(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_finaleFish(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_finaleFheep(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_finaleFarmer(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_finaleFuards(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_finaleFirates(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_finaleFrash(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+
+ int seq_finaleFiggle(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+
+ int seq_demoVirgin(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_demoWestwood(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_demoTitle(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_demoHill(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_demoOuthome(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_demoWharf(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_demoDinob(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_demoFisher(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+
+ int seq_demoWharf2(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_demoDinob2(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_demoWater(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_demoBail(WSAMovie_v2 *wsaObj, int x, int y, int frm);
+ int seq_demoDig(WSAMovie_v2 *wsaObj, int x, int y, int frm);
void seq_sequenceCommand(int command);
void seq_loadNestedSequence(int wsaNum, int seqNum);
@@ -275,7 +261,7 @@ protected:
char *seq_preprocessString(const char *str, int width);
void seq_printCreditsString(uint16 strIndex, int x, int y, const uint8 *colorMap, uint8 textcolor);
void seq_playWsaSyncDialogue(uint16 strIndex, uint16 vocIndex, int textColor, int x, int y, int width,
- WSAMovieV2 * wsa, int firstframe, int lastframe, int wsaXpos, int wsaYpos);
+ WSAMovie_v2 * wsa, int firstframe, int lastframe, int wsaXpos, int wsaYpos);
void seq_finaleActorScreen();
void seq_displayScrollText(uint8 *data, const ScreenDim *d, int tempPage1, int tempPage2, int speed, int step, Screen::FontId fid1, Screen::FontId fid2, const uint8 *shapeData = 0, const char *const *specialData = 0);
void seq_scrollPage();
@@ -291,8 +277,6 @@ protected:
TextDisplayer_HoF *_text;
TIMInterpreter *_tim;
- uint8 *_mouseSHPBuf;
-
static const int8 _dosTrackMap[];
static const int _dosTrackMapSize;
@@ -329,8 +313,6 @@ protected:
void dinoRide();
- int _mouseState;
-
void handleInput(int x, int y);
bool handleInputUnkSub(int x, int y);
@@ -350,7 +332,7 @@ protected:
uint8 *_sceneShapeTable[50];
- WSAMovieV2 *_wsaSlots[10];
+ WSAMovie_v2 *_wsaSlots[10];
void freeSceneShapePtrs();
@@ -675,9 +657,6 @@ protected:
void setWalkspeed(uint8 speed);
- // delay
- void delay(uint32 millis, bool updateGame = false, bool isMainLoop = false);
-
// ingame static sequence handling
void seq_makeBookOrCauldronAppear(int type);
void seq_makeBookAppear();
@@ -690,7 +669,7 @@ protected:
int delay;
bool running;
uint32 timer;
- WSAMovieV2 *wsa;
+ WSAMovie_v2 *wsa;
} _invWsa;
// TODO: move inside KyraEngine_HoF::InventoryWsa?
@@ -732,7 +711,6 @@ protected:
int o2_wipeDownMouseItem(EMCState *script);
int o2_getElapsedSecs(EMCState *script);
int o2_getTimerDelay(EMCState *script);
- //int o2_playSoundEffect(EMCState *script);
int o2_delaySecs(EMCState *script);
int o2_setTimerDelay(EMCState *script);
int o2_setScaleTableItem(EMCState *script);
@@ -759,17 +737,14 @@ protected:
int o2_setLayerFlag(EMCState *script);
int o2_setZanthiaPos(EMCState *script);
int o2_loadMusicTrack(EMCState *script);
- int o2_playSoundEffect(EMCState *script);
int o2_setSceneAnimPos(EMCState *script);
- int o2_blockInRegion(EMCState *script);
- int o2_blockOutRegion(EMCState *script);
int o2_setCauldronState(EMCState *script);
int o2_showItemString(EMCState *script);
int o2_isAnySoundPlaying(EMCState *script);
int o2_setDrawNoShapeFlag(EMCState *script);
int o2_setRunFlag(EMCState *script);
int o2_showLetter(EMCState *script);
- int o2_fillRect(EMCState *script);
+ int o2_playFireflyScore(EMCState *script);
int o2_encodeShape(EMCState *script);
int o2_defineSceneAnim(EMCState *script);
int o2_updateSceneAnim(EMCState *script);
@@ -805,7 +780,7 @@ protected:
int o2_updateTwoSceneAnims(EMCState *script);
int o2_getRainbowRoomData(EMCState *script);
int o2_drawSceneShapeEx(EMCState *script);
- int o2_getBoolFromStack(EMCState *script);
+ int o2_midiSoundFadeout(EMCState *script);
int o2_getSfxDriver(EMCState *script);
int o2_getVocSupport(EMCState *script);
int o2_getMusicDriver(EMCState *script);
@@ -876,14 +851,19 @@ protected:
static const uint8 _seqTextColorPresets[];
char *_seqProcessedString;
- WSAMovieV2 *_seqWsa;
+ WSAMovie_v2 *_seqWsa;
bool _abortIntroFlag;
int _menuChoice;
uint32 _seqFrameDelay;
uint32 _seqStartTime;
+ uint32 _seqSubFrameStartTime;
uint32 _seqEndTime;
+ uint32 _seqSubFrameEndTimeInternal;
+ uint32 _seqWsaChatTimeout;
+ uint32 _seqWsaChatFrameTimeout;
+
int _seqFrameCounter;
int _seqScrollTextCounter;
int _seqWsaCurrentFrame;