scummvm/engines/stark/stark.h
Antoniou Athanasios 9fa924c09f
STARK: Detect TLJ Steam version to fix missing bg resource (#3318)
STARK: Detect TLJ Steam version to fix missing bg resource

An alternative fix for bug https://bugs.scummvm.org/ticket/12762 that replaces the previous fix.

This fix will set a flag at detection time (when adding the game to ScummVM)
so that the Steam version will skip trying to load a background image resource
from the exe file (game.exe), since that specific version is missing a valid version
of this resource which leads to an assertion fault.

It wont be necessary to re-add (redetect) the game, if it has already been added before this fix. The current AdvancedDetector implementation takes care of setting the flag at game launch. (As explained by sev) we run detection on every run and returning the relevant detection entry.

The previous fix was this commit which was based only on version info of the exe file:
565a0559ed

That one also works without having to re-add/re-detect the game, but perhaps just checking
version info is not the best approach.
2021-08-29 14:14:29 +03:00

107 lines
2.9 KiB
C++

/* ResidualVM - A 3D game interpreter
*
* ResidualVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the AUTHORS
* file distributed with this source distribution.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
#ifndef STARK_H
#define STARK_H
#include "engines/engine.h"
#include "common/events.h"
#include "common/str-array.h"
#include "stark/detection.h"
struct ADGameDescription;
namespace Common {
class RandomSource;
}
namespace Stark {
namespace Gfx {
class Driver;
class FrameLimiter;
}
class ArchiveLoader;
class Console;
class DialogPlayer;
class Diary;
class FontProvider;
class Global;
class GameInterface;
class Scene;
class StateProvider;
class StaticProvider;
class ResourceProvider;
class UserInterface;
class Settings;
class GameChapter;
class GameMessage;
class StarkEngine : public Engine {
public:
StarkEngine(OSystem *syst, const ADGameDescription *gameDesc);
~StarkEngine() override;
/** Build a save file name for the specified target and slot */
static Common::String formatSaveName(const char *target, int slot);
/** List all the save file names for the specified target */
static Common::StringArray listSaveNames(const char *target);
/** Extract the save slot number from the provided save file name */
static int getSaveNameSlot(const char *target, const Common::String &saveName);
uint32 getGameFlags() const;
protected:
// Engine APIs
Common::Error run() override;
bool hasFeature(EngineFeature f) const override;
bool canLoadGameStateCurrently() override;
bool canSaveGameStateCurrently() override;
Common::Error loadGameState(int slot) override;
Common::Error saveGameState(int slot, const Common::String &desc, bool isAutosave = false) override;
void pauseEngineIntern(bool pause) override;
private:
void mainLoop();
void updateDisplayScene();
void processEvents();
void onScreenChanged() const;
void addModsToSearchPath() const;
static void checkRecommendedDatafiles();
Gfx::FrameLimiter *_frameLimiter;
PauseToken _gamePauseToken;
const ADGameDescription *_gameDescription;
// Double click handling
static const uint _doubleClickDelay = 500; // ms
uint _lastClickTime;
};
} // End of namespace Stark
#endif // STARK_H