Skip to content

Commit

Permalink
PLUMBERS: Add engine for Plumbers Don't Wear Ties
Browse files Browse the repository at this point in the history
  • Loading branch information
Retro-Junk authored and criezy committed May 2, 2017
1 parent ee0ac26 commit e4ab357
Show file tree
Hide file tree
Showing 7 changed files with 719 additions and 0 deletions.
3 changes: 3 additions & 0 deletions engines/plumbers/configure.engine
@@ -0,0 +1,3 @@
# This file is included from the main "configure" script
# add_engine [name] [desc] [build-by-default] [subengines] [base games] [deps]
add_engine plumbers "Plumbers Don't Wear Ties" no "" "" ""
47 changes: 47 additions & 0 deletions engines/plumbers/console.cpp
@@ -0,0 +1,47 @@
/* 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 "gui/debugger.h"

#include "plumbers/plumbers.h"
#include "plumbers/console.h"

namespace Plumbers {

Console::Console(Plumbers::PlumbersGame *vm) : _vm(vm) {
_allowSkip = false;
registerCmd("allowSkip", WRAP_METHOD(Console, Cmd_allowSkip));
}

bool Console::Cmd_allowSkip(int argc, const char** argv) {
if (argc != 1) {
debugPrintf("Usage: %s\n", argv[0]);
debugPrintf("Enables/Disables the possibility to skip screen delays\n");
return true;
}

_allowSkip ^= true;
debugPrintf("Skipping delay is now %s\n", _allowSkip ? "Enabled" : "Disabled");
return true;
}

} // End of namespace Plumbers
46 changes: 46 additions & 0 deletions engines/plumbers/console.h
@@ -0,0 +1,46 @@
/* 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 PLUMBERS_CONSOLE_H
#define PLUMBERS_CONSOLE_H

#include "gui/debugger.h"

namespace Plumbers {

class PlumbersGame;

class Console : public GUI::Debugger {
private:
PlumbersGame *_vm;

public:
bool _allowSkip;

explicit Console(Plumbers::PlumbersGame *vm);
virtual ~Console(void) {}

bool Cmd_allowSkip(int argc, const char** argv);
};
}

#endif
106 changes: 106 additions & 0 deletions engines/plumbers/detection.cpp
@@ -0,0 +1,106 @@
/* 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 "plumbers/plumbers.h"


namespace Plumbers {
const char *PlumbersGame::getGameId() const { return _gameDescription->gameId; }
Common::Platform PlumbersGame::getPlatform() const { return _gameDescription->platform; }
}

static const PlainGameDescriptor plumbersGames[] = {
{"plumbers", "Plumbers Don't Wear Ties!"},
{0, 0}
};

namespace Plumbers {

static const ADGameDescription gameDescriptions[] = {
// Plumbers PC version
{
"plumbers",
0,
AD_ENTRY1s("GAME.BIN", 0, 41622),
Common::EN_ANY,
Common::kPlatformWindows,
ADGF_UNSTABLE,
GUIO1(GUIO_NONE)
},

/*
// Plumbers 3DO version
{
"plumbers",
0,
AD_ENTRY1s("launchme", 0, 143300),
Common::EN_ANY,
Common::kPlatform3DO,
ADGF_UNSTABLE,
GUIO1(GUIO_NONE)
},
*/

AD_TABLE_END_MARKER
};

} // End of namespace Plumbers

class PlumbersMetaEngine : public AdvancedMetaEngine {
public:
PlumbersMetaEngine() : AdvancedMetaEngine(Plumbers::gameDescriptions, sizeof(ADGameDescription), plumbersGames) {
_singleId = "plumbers";
}

virtual const char *getName() const {
return "Plumbers Don't Wear Ties' Engine";
}

virtual const char *getOriginalCopyright() const {
return "Plumbers Don't Wear Ties (C) 1993-94 Kirin Entertainment";
}

virtual bool hasFeature(MetaEngineFeature f) const;
virtual bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const;
};

bool PlumbersMetaEngine::hasFeature(MetaEngineFeature f) const {
return false;
}

bool PlumbersMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const {
if (desc)
*engine = new Plumbers::PlumbersGame(syst, desc);

return desc != nullptr;
}

#if PLUGIN_ENABLED_DYNAMIC(PLUMBERS)
REGISTER_PLUGIN_DYNAMIC(PLUMBERS, PLUGIN_TYPE_ENGINE, PlumbersMetaEngine);
#else
REGISTER_PLUGIN_STATIC(PLUMBERS, PLUGIN_TYPE_ENGINE, PlumbersMetaEngine);
#endif
14 changes: 14 additions & 0 deletions engines/plumbers/module.mk
@@ -0,0 +1,14 @@
MODULE := engines/plumbers

MODULE_OBJS = \
plumbers.o \
console.o \
detection.o

# This module can be built as a plugin
ifeq ($(ENABLE_PLUMBERS), DYNAMIC_PLUGIN)
PLUGIN := 1
endif

# Include common rules
include $(srcdir)/rules.mk

0 comments on commit e4ab357

Please sign in to comment.