27 #include "kyra/engine/eobcommon.h" 32 class SegaSequencePlayer;
33 class EoBEngine :
public EoBCoreEngine {
35 friend class GUI_EoB_SegaCD;
36 friend class EoBSeqPlayerCommon;
37 friend class EoBIntroPlayer;
38 friend class EoBPC98FinalePlayer;
39 friend class EoBAmigaFinalePlayer;
40 friend class TextDisplayer_SegaCD;
41 friend class SegaSequencePlayer;
43 EoBEngine(
OSystem *system,
const GameFlags &flags);
44 ~EoBEngine()
override;
49 void initStaticResource();
50 void initSpells()
override;
51 void loadItemsAndDecorationsShapes()
override;
55 int mainMenu()
override;
59 struct RenderModePalFile {
64 struct TitleScreenConfig {
67 const char bmpFile[12];
68 const RenderModePalFile *palFiles;
69 const int pc98PaletteID;
72 const int menu1X, menu1Y, menu1W, menu1H, menu1col1, menu1col2, menu1col3;
73 const int menu2X, menu2Y, menu2W, menu2H, menu2col1, menu2col2, menu2col3;
74 const int versionStrYOffs;
77 static const RenderModePalFile _renderModePalFiles[3];
78 static const TitleScreenConfig _titleConfig[5];
79 const TitleScreenConfig *_ttlCfg;
82 void startupNew()
override;
83 void startupLoad()
override;
84 void startupReset()
override;
93 void seq_playIntro(
int part);
94 void seq_playFinale()
override;
95 void seq_xdeath()
override;
97 void seq_segaOpeningCredits(
bool jumpToTitle);
98 void seq_segaFinalCredits();
99 void seq_segaShowStats();
101 void seq_segaSetupSequence(
int sequenceId);
102 void seq_segaRestoreAfterSequence();
103 bool seq_segaPlaySequence(
int sequenceId,
bool setupScreen =
false);
104 void seq_segaPausePlayer(
bool pause)
override;
106 const char *
const *_finBonusStrings;
107 SegaSequencePlayer *_seqPlayer;
111 void drawNpcScene(
int npcIndex)
override;
112 void encodeDrawNpcSeqShape(
int npcIndex,
int drawX,
int drawY);
113 void runNpcDialogue(
int npcIndex)
override;
115 const uint8 *_npcShpData;
116 const uint8 *_npcSubShpIndex1;
117 const uint8 *_npcSubShpIndex2;
118 const uint8 *_npcSubShpY;
119 const char *
const *_npcStrings[11];
122 void updateUsedCharacterHandItem(
int charIndex,
int slot)
override;
125 void loadMonsterShapes(
const char *filename,
int monsterIndex,
bool hasDecorations,
int encodeTableIndex)
override;
126 void replaceMonster(
int unit, uint16 block,
int d,
int dir,
int type,
int shpIndex,
int mode,
int h2,
int randItem,
int fixedItem)
override;
127 bool killMonsterExtra(EoBMonsterInPlay *m)
override;
128 void updateScriptTimersExtra()
override;
131 void readLevelFileData(
int level)
override;
132 void loadVcnData(
const char *file,
const uint8 *cgaMapping)
override;
134 const uint8 *getBlockFileData(
int level)
override;
136 void loadDecShapesToPage3(
const char *shpFile)
override;
137 const uint8 *loadDoorShapes(
const char *filename,
int doorIndex,
const uint8 *shapeDefs)
override {
return 0; }
138 void loadDoorShapes(
int doorType1,
int shapeId1,
int doorType2,
int shapeId2)
override;
139 void drawDoorIntern(
int type,
int index,
int x,
int y,
int w,
int wall,
int mDim, int16 y1, int16 y2)
override;
140 void setLevelPalettes(
int level)
override;
142 const int16 *_dscDoorCoordsExt;
143 const uint8 *_dscDoorScaleMult4;
144 const uint8 *_dscDoorScaleMult5;
145 const uint8 *_dscDoorScaleMult6;
146 const uint8 *_dscDoorY3;
147 const uint8 *_dscDoorY4;
148 const uint8 *_dscDoorY5;
149 const uint8 *_dscDoorY6;
150 const uint8 *_dscDoorY7;
152 const uint8 *_doorShapeEncodeDefs;
153 const uint8 *_doorSwitchShapeEncodeDefs;
154 const uint8 *_doorSwitchCoords;
156 const uint8 *
const *_doorShapesSrc;
157 const uint8 *
const *_doorSwitchShapesSrc;
162 void playStrikeAnimation(uint8 pos, Item itm)
override;
164 const uint8 *_redGrid;
165 const uint8 **_strikeAnimShapes[7];
166 static const uint8 _monsterAcHitChanceTbl1[];
167 static const uint8 _monsterAcHitChanceTbl2[];
170 void turnUndeadAuto()
override;
171 void turnUndeadAutoHit()
override;
173 const char *
const *_turnUndeadString;
174 const uint8 *_scrYellow;
177 void snd_loadAmigaSounds(
int level,
int)
override;
178 void snd_playLevelScore()
override;
179 void snd_updateLevelScore()
override;
184 void displayParchment(
int id)
override;
185 const uint8 **makePortalShapes()
override;
186 bool checkPartyStatusExtra()
override;
187 int resurrectionSelectDialogue()
override;
190 int _sceneShakeOffsetX;
191 int _sceneShakeOffsetY;
192 uint8 *_shakeBackBuffer1;
193 uint8 *_shakeBackBuffer2;
196 SegaCDResource *_sres;
199 int clickedCamp(
Button *button)
override;
201 void gui_drawPlayField(
bool refresh)
override;
202 void gui_setupPlayFieldHelperPages(
bool keepText =
false)
override;
203 void gui_drawWeaponSlotStatus(
int x,
int y,
int status)
override;
204 void gui_printInventoryDigits(
int x,
int y,
int val)
override;
205 void gui_drawCharacterStatsPage()
override;
206 void gui_displayMap()
override;
207 void gui_drawSpellbook()
override;
208 void gui_updateAnimations()
override;
209 void gui_resetAnimations();
211 void makeNameShapes(
int charId = -1)
override;
212 void makeFaceShapes(
int charId = -1)
override;
213 void printStatsString(
const char *str,
int x,
int y);
214 void printSpellbookString(uint16 *dst,
const char *str, uint16 ntbl);
215 void drawMapButton(
const char *str,
int x,
int y);
216 void drawMapPage(
int level);
217 void drawMapSpots(
int level,
int animState);
218 void drawDialogueButtons()
override;
220 const KyraRpgGUISettings *guiSettings()
const override;
221 void useMainMenuGUISettings(
bool toggle)
override { _useMainMenuGUISettings = toggle; }
223 int _compassDirection2;
224 int _compassAnimDest;
225 int _compassAnimPhase;
226 int _compassAnimStep;
227 int _compassAnimDelayCounter;
228 bool _compassAnimSwitch;
229 bool _compassAnimDone;
230 bool _compassTilesRestore;
233 const char *
const *_mapStrings1;
234 const char *
const *_mapStrings2;
235 const char *
const *_mapStrings3;
236 const uint8 **_invSmallDigits;
237 const uint8 **_weaponSlotShapes;
238 const uint16 *_addrTbl1;
239 const uint16 *_textFieldPattern;
240 const uint16 *_playFldPattern1;
241 const uint16 *_invPattern;
242 const uint16 *_statsPattern;
243 const uint8 *_charTilesTable;
244 uint16 *_playFldPattern2;
245 uint16 *_tempPattern;
247 static const KyraRpgGUISettings _guiSettingsVGA;
248 static const KyraRpgGUISettings _guiSettingsEGA;
249 static const KyraRpgGUISettings _guiSettingsPC98;
250 static const KyraRpgGUISettings _guiSettingsAmiga;
251 static const KyraRpgGUISettings _guiSettingsAmigaMainMenu;
252 static const KyraRpgGUISettings _guiSettingsSegaCD;
253 static const uint8 _egaDefaultPalette[];
254 static const uint8 _redGridTile[8];
255 static const int8 _sceneShakeOffsets[66];
256 static const uint16 _dlgButtonPosX_Sega[18];
257 static const uint8 _dlgButtonPosY_Sega[18];
258 bool _useMainMenuGUISettings;
Definition: detection.h:27
Language
Definition: language.h:45