aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/lol.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/kyra/lol.h')
-rw-r--r--engines/kyra/lol.h100
1 files changed, 64 insertions, 36 deletions
diff --git a/engines/kyra/lol.h b/engines/kyra/lol.h
index 593b04c01b..e117239ef0 100644
--- a/engines/kyra/lol.h
+++ b/engines/kyra/lol.h
@@ -49,7 +49,7 @@ struct LoLCharacter {
uint8 raceClassSex;
int16 id;
uint8 curFaceFrame;
- uint8 nextFaceFrame;
+ uint8 defaultFaceFrame;
uint8 field_12;
const uint16 *defaultModifiers;
uint16 itemsMight[8];
@@ -180,8 +180,8 @@ struct ItemProperty {
struct LevelShapeProperty {
uint16 shapeIndex[10];
uint8 scaleFlag[10];
- uint16 shapeX[10];
- uint16 shapeY[10];
+ int16 shapeX[10];
+ int16 shapeY[10];
int8 next;
uint8 flags;
};
@@ -420,6 +420,8 @@ private:
void gui_toggleButtonDisplayMode(int shapeIndex, int mode);
void gui_toggleFightButtons(bool disable);
void gui_prepareForSequence(int x, int y, int w, int h, int buttonFlags);
+ void gui_specialSceneSuspendControls(int controlMode);
+ void gui_specialSceneRestoreControls(int restoreLamp);
bool _weaponsDisabled;
int _lastButtonShape;
@@ -437,11 +439,12 @@ private:
void gui_triggerEvent(int eventType);
void gui_enableDefaultPlayfieldButtons();
void gui_enableSequenceButtons(int x, int y, int w, int h, int enableFlags);
+ void gui_specialSceneRestoreButtons();
void gui_enableCharInventoryButtons(int charNum);
void gui_resetButtonList();
void gui_initButtonsFromList(const int16 *list);
- void gui_initCharacterControlButtons(int index, int xOffs);
+ void gui_setFaceFramesControlButtons(int index, int xOffs);
void gui_initCharInventorySpecialButtons(int charNum);
void gui_initMagicScrollButtons();
void gui_initMagicSubmenu(int charNum);
@@ -524,7 +527,7 @@ private:
uint16 _currentDirection;
uint16 _currentBlock;
bool _sceneUpdateRequired;
- int16 _currentBlockPropertyIndex[18];
+ int16 _visibleBlockIndex[18];
uint16 _gameFlags[16];
uint16 _globalScriptVars[16];
@@ -542,6 +545,7 @@ private:
int olol_allocItemPropertiesBuffer(EMCState *script);
int olol_setItemProperty(EMCState *script);
int olol_makeItem(EMCState *script);
+ int olol_createLevelItem(EMCState *script);
int olol_getItemPara(EMCState *script);
int olol_getCharacterStat(EMCState *script);
int olol_setCharacterStat(EMCState *script);
@@ -553,10 +557,13 @@ private:
int olol_freeAnimStruct(EMCState *script);
int olol_getDirection(EMCState *script);
int olol_setMusicTrack(EMCState *script);
+ int olol_setSequenceButtons(EMCState *script);
+ int olol_setDefaultButtonState(EMCState *script);
int olol_checkRectForMousePointer(EMCState *script);
int olol_clearDialogueField(EMCState *script);
int olol_setupBackgroundAnimationPart(EMCState *script);
int olol_startBackgroundAnimation(EMCState *script);
+ int olol_fadeToBlack(EMCState *script);
int olol_fadePalette(EMCState *script);
int olol_loadBitmap(EMCState *script);
int olol_stopBackgroundAnimation(EMCState *script);
@@ -572,6 +579,8 @@ private:
int olol_initMonster(EMCState *script);
int olol_fadeClearSceneWindow(EMCState *script);
int olol_fadeSequencePalette(EMCState *script);
+ int olol_redrawPlayfield(EMCState *script);
+ int olol_loadNewLevel(EMCState *script);
int olol_dummy0(EMCState *script);
int olol_loadMonsterProperties(EMCState *script);
int olol_battleHitSkillTest(EMCState *script);
@@ -581,11 +590,12 @@ private:
int olol_checkMoney(EMCState *script);
int olol_setScriptTimer(EMCState *script);
int olol_createHandItem(EMCState *script);
+ int olol_characterJoinsParty(EMCState *script);
int olol_loadTimScript(EMCState *script);
int olol_runTimScript(EMCState *script);
int olol_releaseTimScript(EMCState *script);
- int olol_initAnimatedDialogue(EMCState *script);
- int olol_restoreAfterAnimatedDialogue(EMCState *script);
+ int olol_initSceneWindowDialogue(EMCState *script);
+ int olol_restoreAfterSceneWindowDialogue(EMCState *script);
int olol_getItemInHand(EMCState *script);
int olol_giveItemToMonster(EMCState *script);
int olol_loadLangFile(EMCState *script);
@@ -593,6 +603,7 @@ private:
int olol_processDialogue(EMCState *script);
int olol_stopTimScript(EMCState *script);
int olol_getWallFlags(EMCState *script);
+ int olol_changeMonsterSettings(EMCState *script);
int olol_playCharacterScriptChat(EMCState *script);
int olol_update(EMCState *script);
int olol_drawExitButton(EMCState *script);
@@ -604,17 +615,25 @@ private:
int olol_playDialogueTalkText(EMCState *script);
int olol_checkMonsterTypeHostility(EMCState *script);
int olol_setNextFunc(EMCState *script);
+ int olol_dummy1(EMCState *script);
+ int olol_suspendMonster(EMCState *script);
int olol_setDoorState(EMCState *script);
int olol_processButtonClick(EMCState *script);
int olol_savePage5(EMCState *script);
int olol_restorePage5(EMCState *script);
- int olol_initNonAnimatedDialogue(EMCState *script);
- int olol_restoreAfterNonAnimatedDialogue(EMCState *script);
+ int olol_initDialogueSequence(EMCState *script);
+ int olol_restoreAfterDialogueSequence(EMCState *script);
+ int olol_setSpecialSceneButtons(EMCState *script);
+ int olol_prepareSpecialScene(EMCState *script);
+ int olol_restoreAfterSpecialScene(EMCState *script);
int olol_assignCustomSfx(EMCState *script);
- int olol_resetPortraitsArea(EMCState *script);
+ int olol_resetPortraitsAndDisableSysTimer(EMCState *script);
int olol_enableSysTimer(EMCState *script);
+ int olol_disableControls(EMCState *script);
+ int olol_enableControls(EMCState *script);
int olol_queueSpeech(EMCState *script);
int olol_getItemPrice(EMCState *script);
+ int olol_getLanguage(EMCState *script);
// tim scripts
TIM *_activeTim[10];
@@ -629,8 +648,8 @@ private:
int tlol_processWsaFrame(const TIM *tim, const uint16 *param);
int tlol_displayText(const TIM *tim, const uint16 *param);
- int tlol_initAnimatedDialogue(const TIM *tim, const uint16 *param);
- int tlol_restoreAfterAnimatedDialogue(const TIM *tim, const uint16 *param);
+ int tlol_initSceneWindowDialogue(const TIM *tim, const uint16 *param);
+ int tlol_restoreAfterSceneWindowDialogue(const TIM *tim, const uint16 *param);
int tlol_giveItem(const TIM *tim, const uint16 *param);
int tlol_setPartyPosition(const TIM *tim, const uint16 *param);
int tlol_fadeClearWindow(const TIM *tim, const uint16 *param);
@@ -663,11 +682,11 @@ private:
// graphics
void setupScreenDims();
- void initAnimatedDialogue(int controlMode);
- void restoreAfterAnimatedDialogue(int redraw);
- void initNonAnimatedDialogue(int controlMode, int pageNum);
- void restoreAfterNonAnimatedDialogue(int controlMode);
- void resetPortraitsArea();
+ void initSceneWindowDialogue(int controlMode);
+ void restoreAfterSceneWindowDialogue(int redraw);
+ void initDialogueSequence(int controlMode, int pageNum);
+ void restoreAfterDialogueSequence(int controlMode);
+ void resetPortraitsAndDisableSysTimer();
void toggleSelectedCharacterFrame(bool mode);
void fadeText();
void setPaletteBrightness(uint8 *palette, int brightness, int modifier);
@@ -699,8 +718,8 @@ private:
// characters
bool addCharacter(int id);
- void initCharacter(int charNum, int firstFaceFrame, int unk2, int redraw);
- void initCharacterUnkSub(int charNum, int unk1, int unk2, int unk3);
+ void setFaceFrames(int charNum, int defaultFrame, int unk2, int redraw);
+ void setFaceFramesUnkArrays(int charNum, int unk1, int unk2, int unk3);
int countActiveCharacters();
void loadCharFaceShapes(int charNum, int id);
void calcCharPortraitXpos();
@@ -774,20 +793,20 @@ private:
void loadLevelGraphics(const char *file, int specialColor, int weight, int vcnLen, int vmpLen, const char *palFile);
void resetItems(int flag);
- void resetLvlBuffer();
+ void disableMonsters();
void resetBlockProperties();
bool testWallFlag(int block, int direction, int flag);
bool testWallInvisibility(int block, int direction);
void drawScene(int pageNum);
- void generateBlockDrawingBuffer(int block, int direction);
- void generateBlockDrawingBufferF0(int16 wllOffset, uint8 wllIndex, uint8 wllVmpIndex, int16 vmpOffset, uint8 len, uint8 numEntries);
- void generateBlockDrawingBufferF1(int16 wllOffset, uint8 wllIndex, uint8 wllVmpIndex, int16 vmpOffset, uint8 len, uint8 numEntries);
+ void generateBlockDrawingBuffer();
+ void generateVmpTileData(int16 startBlockX, uint8 startBlockY, uint8 wllVmpIndex, int16 vmpOffset, uint8 numBlocksX, uint8 numBlocksY);
+ void generateVmpTileDataFlipped(int16 startBlockX, uint8 startBlockY, uint8 wllVmpIndex, int16 vmpOffset, uint8 numBlocksX, uint8 numBlocksY);
bool hasWall(int index);
- void assignBlockCaps(int block, int direction);
+ void assignVisibleBlocks(int block, int direction);
- void drawVcnBlocks(uint8 *vcnBlocks, uint16 *blockDrawingBuffer, uint8 *vcnShift, int pageNum);
+ void drawVcnBlocks();
void drawSceneShapes();
void setLevelShapesDim(int index, int16 &x1, int16 &x2, int dim);
void scaleLevelShapesDim(int index, int16 &y1, int16 &y2, int dim);
@@ -798,8 +817,12 @@ private:
void setWallType(int block, int wall, int val);
void updateSceneWindow();
- void setSequenceGui(int x, int y, int w, int h, int enableFlags);
- void restoreDefaultGui();
+ void prepareSpecialScene(int fieldType, int hasDialogue, int suspendGui, int allowSceneUpdate, int controlMode, int fadeFlag);
+ int restoreAfterSpecialScene(int fadeFlag, int redrawPlayField, int releaseTimScripts, int sceneUpdateMode);
+
+ void setSequenceButtons(int x, int y, int w, int h, int enableFlags);
+ void setSpecialSceneButtons(int x, int y, int w, int h, int enableFlags);
+ void setDefaultButtonState();
void updateCompass();
@@ -814,7 +837,7 @@ private:
void calcCoordinatesAddDirectionOffset(int16 &x, int16 &y, int direction);
int clickedWallShape(uint16 block, uint16 direction);
- int clicked2(uint16 block, uint16 direction);
+ int clickedLever(uint16 block, uint16 direction);
int clicked3(uint16 block, uint16 direction);
int clickedWallOnlyScript(uint16 block);
int clickedDoorSwitch(uint16 block, uint16 direction);
@@ -823,6 +846,7 @@ private:
bool clickedShape(int shapeIndex);
void processDoorSwitch(uint16 block, int unk);
void openCloseDoor(uint16 block, int openClose);
+ void resetDoors();
void movePartySmoothScrollBlocked(int speed);
void movePartySmoothScrollUp(int speed);
@@ -874,9 +898,9 @@ private:
int _lastSpecialColor;
int _lastSpecialColorWeight;
- int _sceneDrawVar1;
- int _sceneDrawVar2;
- int _sceneDrawVar3;
+ int _sceneDrawVarDown;
+ int _sceneDrawVarRight;
+ int _sceneDrawVarLeft;
int _wllProcessFlag;
uint8 *_trueLightTable2;
@@ -895,7 +919,7 @@ private:
int16 *_lvlShapeLeftRight;
LevelBlockProperty *_levelBlockProperties;
- LevelBlockProperty *_curBlockCaps[18];
+ LevelBlockProperty *_visibleBlocks[18];
uint16 _partyPosX;
uint16 _partyPosY;
@@ -913,6 +937,7 @@ private:
int _lastMouseRegion;
int _seqWindowX1, _seqWindowY1, _seqWindowX2, _seqWindowY2, _seqTrigger;
+ int _spsWindowX, _spsWindowY, _spsWindowW, _spsWindowH;
uint8 *_tempBuffer5120;
@@ -970,7 +995,8 @@ private:
// items
void giveCredits(int credits, int redraw);
void takeCredits(int credits, int redraw);
- int makeItem(int itemIndex, int curFrame, int flags);
+ int makeItem(int itemType, int curFrame, int flags);
+ void placeMoveLevelItem(int itemIndex, int level, int block, int xOffs, int yOffs, int flyingHeight);
bool addItemToInventory(int itemIndex);
bool testUnkItemFlags(int itemIndex);
void deleteItem(int itemIndex);
@@ -979,7 +1005,7 @@ private:
void setHandItem(uint16 itemIndex);
void setItemPosition(int item, uint16 x, uint16 y, int flyingHeight, int b);
- void pickupItem(int item, int block);
+ void removeLevelItem(int item, int block);
bool throwItem(int a, int item, int x, int y, int flyingHeight, int direction, int, int charNum, int c);
void endObjectFlight(FlyingObject *t, int x, int y, int objectOnNextBlock);
void processObjectFlight(FlyingObject *t, int x, int y);
@@ -1000,10 +1026,11 @@ private:
int _itemInHand;
uint16 _inventory[48];
int _inventoryCurItem;
- int _hideControls;
+ int _currentControlMode;
+ int _specialSceneFlag;
int _lastCharInventory;
- FlyingObject *_flyingItems;
+ FlyingObject *_flyingObjects;
EMCData _itemScript;
@@ -1121,6 +1148,7 @@ private:
const SpellProperty *_spellProperties;
int _spellPropertiesSize;
int _subMenuIndex;
+ uint16 _unkIceSHpFlag;
// unneeded
void setWalkspeed(uint8) {}