25 #include "common/error.h" 26 #include "common/fs.h" 27 #include "common/keyboard.h" 28 #include "common/random.h" 29 #include "common/scummsys.h" 30 #include "common/serializer.h" 31 #include "common/system.h" 32 #include "common/util.h" 33 #include "engines/engine.h" 34 #include "graphics/screen.h" 36 #include "darkseed/animation.h" 37 #include "darkseed/console.h" 38 #include "darkseed/cursor.h" 39 #include "darkseed/cutscene.h" 40 #include "darkseed/detection.h" 41 #include "darkseed/inventory.h" 42 #include "darkseed/menu.h" 43 #include "darkseed/nsp.h" 44 #include "darkseed/objects.h" 45 #include "darkseed/player.h" 46 #include "darkseed/room.h" 47 #include "darkseed/sound.h" 48 #include "darkseed/sprites.h" 49 #include "darkseed/tostext.h" 50 #include "darkseed/usecode.h" 54 struct DarkseedGameDescription;
58 kDarkseedActionSelect,
59 kDarkseedActionChangeCommand,
60 kDarkseedActionTimeAdvance,
64 enum ActionMode : uint8 {
69 kUseHammerAction = 27,
72 enum class FadeDirection : uint8 {
81 Pic *_fullscreenPic =
nullptr;
82 bool _timeAdvanceEventSelected =
false;
83 uint8 _delbertspeech = 0;
85 bool _normalWorldSpritesLoaded =
true;
86 bool _redrawFrame =
true;
87 bool _restartGame =
false;
88 bool _canSaveGame =
false;
90 FadeDirection _fadeDirection = FadeDirection::NONE;
91 uint8 _fadeStepCounter = 0;
93 Pal _fadeTargetPalette;
101 bool _ct_voice_status =
false;
102 bool _isRightMouseClicked =
false;
103 bool _isLeftMouseClicked =
false;
104 Common::KeyCode _lastKeyPressed = Common::KeyCode::KEYCODE_INVALID;
106 Sound *_sound =
nullptr;
112 Room *_room =
nullptr;
113 int _actionMode = kPointerAction;
114 Player *_player =
nullptr;
123 uint8 _currentDay = 1;
124 int _currentTimeInSeconds = 0x7e8e;
127 uint8 _previousRoomNumber = 0;
128 uint16 _targetRoomNumber = 0;
130 uint16 _headAcheMessageCounter = 0;
131 uint8 _headacheMessageIdx = 0;
133 int _sprite_y_scaling_threshold_maybe = 0xf0;
134 int _scaledWalkSpeed_maybe = 0;
135 uint16 _scaledSpriteWidth = 0;
136 uint16 _scaledSpriteHeight = 0;
138 int _frameBottom = 0;
141 bool _doorEnabled =
false;
142 bool _useDoorTarget =
false;
144 int16 _counter_2c85_888b = 0;
146 uint8 _targetPlayerDirection = 0;
148 uint8 _systemTimerCounter = 0;
150 bool _debugShowWalkPath =
false;
151 int _phoneStatus = 0;
153 int16 _soundTimer = 0;
154 bool _printedcomeheredawson =
false;
155 void zeroMouseButtons();
158 void gotoNextMorning();
160 void playDayChangeCutscene();
162 void removeFullscreenPic();
166 void waitForSpeech();
167 void waitForSpeechOrSfx();
169 void syncSoundSettings()
override;
174 uint32 getFeatures()
const;
192 bool isDosVersion()
const {
193 return _gameDescription->
platform == Common::kPlatformDOS;
196 bool isCdVersion()
const {
197 return getFeatures() &
ADGF_CD;
200 bool isDosFloppy()
const {
201 return isDosVersion() && !isCdVersion();
206 (f == kSupportsLoadingDuringRuntime) ||
207 (f == kSupportsSavingDuringRuntime) ||
208 (f == kSupportsReturnToLauncher);
212 return !_animation->_isPlayingAnimation_maybe && !_player->_isAutoWalkingToBed && !_player->_heroWaiting && !_cutscene.isPlaying();
216 return _canSaveGame && !_animation->_isPlayingAnimation_maybe && !_player->_isAutoWalkingToBed && !_player->_heroWaiting && !_cutscene.isPlaying() && !_menu.isOpen();
234 changeToRoom(_room->_roomNumber);
243 void fadeIn(
const Pal &palette);
250 void updateDisplay();
251 void debugTeleportToRoom(
int newRoomNumber,
int entranceNumber);
253 void drawFullscreenPic();
254 void lookCode(
int objNum);
255 void handleObjCollision(
int targetObjNum);
256 void playSound(uint8 sfxId, uint8 unk1, int16 unk2);
257 void nextFrame(
int nspAminIdx);
259 void throwmikeinjail();
261 void getPackageObj(
int packageType);
263 void changeToRoom(
int newRoomNumber,
bool placeDirectly =
false);
264 void waitxticks(
int ticks);
269 void updateBaseSprites();
273 void handlePointerAction();
274 void loadRoom(
int roomNumber);
276 void gotoSleepInJail();
278 void updateHeadache();
280 void initDelbertAtSide();
281 void movePlayerToDelbert();
282 void delbertThrowStick(int16 spriteNum);
288 #define SHOULD_QUIT ::Darkseed::g_engine->shouldQuit()
EngineFeature
Definition: engine.h:253
ErrorCode getCode() const
Definition: error.h:115
Definition: advancedDetector.h:163
No error occurred.
Definition: error.h:48
uint getRandomNumber(uint max)
Definition: serializer.h:79
uint32 getRandomNumber(uint maxNum)
Definition: darkseed.h:188
Common::Language language
Definition: advancedDetector.h:193
Definition: darkseed.h:78
bool hasFeature(EngineFeature f) const override
Definition: darkseed.h:204
Add "-cd" to gameid.
Definition: advancedDetector.h:154
Common::Error saveGameStream(Common::WriteStream *stream, bool isAutosave=false) override
Definition: darkseed.h:225
Definition: cutscene.h:33
bool canLoadGameStateCurrently(Common::U32String *msg) override
Definition: darkseed.h:211
Definition: animation.h:28
Common::Platform platform
Definition: advancedDetector.h:198
Definition: inventory.h:27
Definition: adlib_worx.h:27
bool canSaveGameStateCurrently(Common::U32String *msg) override
Definition: darkseed.h:215
Common::Error loadGameStream(Common::SeekableReadStream *stream) override
Definition: darkseed.h:230
Language
Definition: language.h:45