FULLPIPE: Initial engine skeleton with detection
This commit is contained in:
parent
b4bf88be46
commit
26e6f50860
3 changed files with 273 additions and 0 deletions
112
engines/fullpipe/detection.cpp
Normal file
112
engines/fullpipe/detection.cpp
Normal file
|
@ -0,0 +1,112 @@
|
||||||
|
/* ScummVM - Graphic Adventure Engine
|
||||||
|
*
|
||||||
|
* ScummVM is the legal property of its developers, whose names
|
||||||
|
* are too numerous to list here. Please refer to the COPYRIGHT
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "base/plugins.h"
|
||||||
|
|
||||||
|
#include "engines/advancedDetector.h"
|
||||||
|
#include "common/file.h"
|
||||||
|
|
||||||
|
#include "fullpipe/fullpipe.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace Fullpipe {
|
||||||
|
|
||||||
|
const char *FullpipeEngine::getGameId() const {
|
||||||
|
return _gameDescription->gameid;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static const PlainGameDescriptor fullpipeGames[] = {
|
||||||
|
{"fullpipe", "Full Pipe"},
|
||||||
|
{0, 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
namespace Fullpipe {
|
||||||
|
|
||||||
|
static const ADGameDescription gameDescriptions[] = {
|
||||||
|
|
||||||
|
// Fullpipe Russian version
|
||||||
|
{
|
||||||
|
"fullpipe",
|
||||||
|
0,
|
||||||
|
AD_ENTRY1s("0654.sc2", "099f54f86d33ad2395f3b854b7e05058", 2272),
|
||||||
|
Common::RU_RUS,
|
||||||
|
Common::kPlatformWindows,
|
||||||
|
ADGF_NO_FLAGS,
|
||||||
|
GUIO1(GUIO_NONE)
|
||||||
|
},
|
||||||
|
|
||||||
|
// Fullpipe German version
|
||||||
|
{
|
||||||
|
"fullpipe",
|
||||||
|
0,
|
||||||
|
AD_ENTRY1s("0654.sc2", "d8743351fc53d205f42d91f6d791e51b", 2272),
|
||||||
|
Common::RU_RUS,
|
||||||
|
Common::kPlatformWindows,
|
||||||
|
ADGF_NO_FLAGS,
|
||||||
|
GUIO1(GUIO_NONE)
|
||||||
|
},
|
||||||
|
|
||||||
|
AD_TABLE_END_MARKER
|
||||||
|
};
|
||||||
|
|
||||||
|
} // End of namespace Fullpipe
|
||||||
|
|
||||||
|
class FullpipeMetaEngine : public AdvancedMetaEngine {
|
||||||
|
public:
|
||||||
|
FullpipeMetaEngine() : AdvancedMetaEngine(Fullpipe::gameDescriptions, sizeof(ADGameDescription), fullpipeGames) {
|
||||||
|
_singleid = "fullpipe";
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual const char *getName() const {
|
||||||
|
return "Fullpipe Engine";
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual const char *getOriginalCopyright() const {
|
||||||
|
return "Fullpipe Engine (C) Pipe Studio";
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual bool hasFeature(MetaEngineFeature f) const;
|
||||||
|
virtual bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
bool FullpipeMetaEngine::hasFeature(MetaEngineFeature f) const {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Fullpipe::FullpipeEngine::hasFeature(EngineFeature f) const {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool FullpipeMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const {
|
||||||
|
if (desc) {
|
||||||
|
*engine = new Fullpipe::FullpipeEngine(syst, desc);
|
||||||
|
}
|
||||||
|
return desc != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if PLUGIN_ENABLED_DYNAMIC(FULLPIPE)
|
||||||
|
REGISTER_PLUGIN_DYNAMIC(FULLPIPE, PLUGIN_TYPE_ENGINE, FullpipeMetaEngine);
|
||||||
|
#else
|
||||||
|
REGISTER_PLUGIN_STATIC(FULLPIPE, PLUGIN_TYPE_ENGINE, FullpipeMetaEngine);
|
||||||
|
#endif
|
81
engines/fullpipe/fullpipe.cpp
Normal file
81
engines/fullpipe/fullpipe.cpp
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
/* ScummVM - Graphic Adventure Engine
|
||||||
|
*
|
||||||
|
* ScummVM is the legal property of its developers, whose names
|
||||||
|
* are too numerous to list here. Please refer to the COPYRIGHT
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "base/plugins.h"
|
||||||
|
|
||||||
|
#include "common/config-manager.h"
|
||||||
|
|
||||||
|
#include "engines/util.h"
|
||||||
|
|
||||||
|
#include "fullpipe/fullpipe.h"
|
||||||
|
|
||||||
|
namespace Fullpipe {
|
||||||
|
|
||||||
|
FullpipeEngine::FullpipeEngine(OSystem *syst, const ADGameDescription *gameDesc) : Engine(syst), _gameDescription(gameDesc) {
|
||||||
|
// Setup mixer
|
||||||
|
if (!_mixer->isReady()) {
|
||||||
|
warning("Sound initialization failed.");
|
||||||
|
}
|
||||||
|
|
||||||
|
_mixer->setVolumeForSoundType(Audio::Mixer::kSFXSoundType, ConfMan.getInt("sfx_volume"));
|
||||||
|
_mixer->setVolumeForSoundType(Audio::Mixer::kMusicSoundType, ConfMan.getInt("music_volume"));
|
||||||
|
|
||||||
|
_rnd = new Common::RandomSource("fullpipe");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
FullpipeEngine::~FullpipeEngine() {
|
||||||
|
delete _rnd;
|
||||||
|
}
|
||||||
|
|
||||||
|
Common::Error FullpipeEngine::run() {
|
||||||
|
// Initialize backend
|
||||||
|
initGraphics(800, 600, true);
|
||||||
|
|
||||||
|
_isSaveAllowed = false;
|
||||||
|
|
||||||
|
return Common::kNoError;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FullpipeEngine::updateEvents() {
|
||||||
|
Common::Event event;
|
||||||
|
Common::EventManager *eventMan = _system->getEventManager();
|
||||||
|
|
||||||
|
while (eventMan->pollEvent(event)) {
|
||||||
|
switch (event.type) {
|
||||||
|
case Common::EVENT_KEYDOWN:
|
||||||
|
_keyState = event.kbd.keycode;
|
||||||
|
break;
|
||||||
|
case Common::EVENT_KEYUP:
|
||||||
|
_keyState = Common::KEYCODE_INVALID;
|
||||||
|
break;
|
||||||
|
case Common::EVENT_MOUSEMOVE:
|
||||||
|
_mouseX = event.mouse.x;
|
||||||
|
_mouseY = event.mouse.y;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} // End of namespace Fullpipe
|
80
engines/fullpipe/fullpipe.h
Normal file
80
engines/fullpipe/fullpipe.h
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
/* ScummVM - Graphic Adventure Engine
|
||||||
|
*
|
||||||
|
* ScummVM is the legal property of its developers, whose names
|
||||||
|
* are too numerous to list here. Please refer to the COPYRIGHT
|
||||||
|
* 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 FULLPIPE_H
|
||||||
|
#define FULLPIPE_H
|
||||||
|
|
||||||
|
#include "common/scummsys.h"
|
||||||
|
#include "common/events.h"
|
||||||
|
#include "common/keyboard.h"
|
||||||
|
#include "common/random.h"
|
||||||
|
#include "common/savefile.h"
|
||||||
|
#include "common/system.h"
|
||||||
|
|
||||||
|
#include "audio/mixer.h"
|
||||||
|
|
||||||
|
#include "graphics/surface.h"
|
||||||
|
|
||||||
|
#include "engines/engine.h"
|
||||||
|
|
||||||
|
struct ADGameDescription;
|
||||||
|
|
||||||
|
namespace Fullpipe {
|
||||||
|
|
||||||
|
enum FullpipeGameFeatures {
|
||||||
|
};
|
||||||
|
|
||||||
|
class FullpipeEngine : public ::Engine {
|
||||||
|
protected:
|
||||||
|
|
||||||
|
Common::Error run();
|
||||||
|
|
||||||
|
public:
|
||||||
|
FullpipeEngine(OSystem *syst, const ADGameDescription *gameDesc);
|
||||||
|
virtual ~FullpipeEngine();
|
||||||
|
|
||||||
|
// Detection related functions
|
||||||
|
const ADGameDescription *_gameDescription;
|
||||||
|
const char *getGameId() const;
|
||||||
|
Common::Platform getPlatform() const;
|
||||||
|
bool hasFeature(EngineFeature f) const;
|
||||||
|
|
||||||
|
Common::RandomSource *_rnd;
|
||||||
|
|
||||||
|
int _mouseX, _mouseY;
|
||||||
|
Common::KeyCode _keyState;
|
||||||
|
uint16 _buttonState;
|
||||||
|
|
||||||
|
void updateEvents();
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
bool _isSaveAllowed;
|
||||||
|
|
||||||
|
bool canLoadGameStateCurrently() { return _isSaveAllowed; }
|
||||||
|
bool canSaveGameStateCurrently() { return _isSaveAllowed; }
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
} // End of namespace Fullpipe
|
||||||
|
|
||||||
|
#endif /* FULLPIPE_H */
|
Loading…
Add table
Add a link
Reference in a new issue