2015-03-15 16:52:55 -04:00
|
|
|
/* 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.
|
2015-05-09 18:04:13 +02:00
|
|
|
*
|
2015-03-15 16:52:55 -04:00
|
|
|
* 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.
|
2015-05-09 18:04:13 +02:00
|
|
|
*
|
2015-03-15 16:52:55 -04:00
|
|
|
* 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 SHERLOCK_SCALPEL_H
|
|
|
|
#define SHERLOCK_SCALPEL_H
|
|
|
|
|
|
|
|
#include "sherlock/sherlock.h"
|
2015-03-18 23:01:47 -04:00
|
|
|
#include "sherlock/scalpel/darts.h"
|
2015-03-15 16:52:55 -04:00
|
|
|
|
|
|
|
namespace Sherlock {
|
|
|
|
|
|
|
|
namespace Scalpel {
|
|
|
|
|
2015-05-19 00:23:49 -04:00
|
|
|
enum { BLACKWOOD_CAPTURE = 2, BAKER_STREET = 4, DRAWING_ROOM = 12, STATION = 17, PUB_INTERIOR = 19,
|
2015-05-19 22:30:47 +02:00
|
|
|
LAWYER_OFFICE = 27, BAKER_ST_EXTERIOR = 39, RESCUE_ANNA = 52, MOOREHEAD_DEATH = 53, EXIT_GAME = 55,
|
2015-05-19 00:23:49 -04:00
|
|
|
BRUMWELL_SUICIDE = 70, OVERHEAD_MAP2 = 98, DARTS_GAME = 99, OVERHEAD_MAP = 100 };
|
2015-05-19 22:30:47 +02:00
|
|
|
|
2015-03-15 16:52:55 -04:00
|
|
|
class ScalpelEngine : public SherlockEngine {
|
2015-03-15 21:25:07 -04:00
|
|
|
private:
|
2015-03-18 23:01:47 -04:00
|
|
|
Darts *_darts;
|
2015-04-15 08:22:40 -05:00
|
|
|
int _mapResult;
|
2015-03-18 22:32:41 -04:00
|
|
|
|
2015-05-19 07:37:55 -04:00
|
|
|
/**
|
|
|
|
* Show the starting city cutscene which shows the game title
|
|
|
|
*/
|
2015-03-16 22:42:19 -04:00
|
|
|
bool showCityCutscene();
|
2015-05-19 07:37:55 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Show the back alley where the initial murder takes place
|
|
|
|
*/
|
2015-03-16 22:42:19 -04:00
|
|
|
bool showAlleyCutscene();
|
2015-05-19 07:37:55 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Show the Baker Street outside cutscene
|
|
|
|
*/
|
2015-03-16 22:42:19 -04:00
|
|
|
bool showStreetCutscene();
|
2015-05-19 07:37:55 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Show Holmes and Watson at the breakfast table, lestrade's note, and then the scrolling credits
|
|
|
|
*/
|
2015-03-16 22:42:19 -04:00
|
|
|
bool showOfficeCutscene();
|
2015-05-19 07:37:55 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Show the game credits
|
|
|
|
*/
|
2015-04-20 23:47:34 +02:00
|
|
|
bool scrollCredits();
|
2015-03-29 09:52:23 -04:00
|
|
|
|
2015-05-19 07:37:55 -04:00
|
|
|
/**
|
|
|
|
* Load the default inventory for the game, which includes both the initial active inventory,
|
|
|
|
* as well as special pending inventory items which can appear automatically in the player's
|
|
|
|
* inventory once given required flags are set
|
|
|
|
*/
|
2015-03-29 09:52:23 -04:00
|
|
|
void loadInventory();
|
2015-05-01 15:59:36 -10:00
|
|
|
|
2015-05-19 07:37:55 -04:00
|
|
|
/**
|
|
|
|
* Transition to show an image
|
|
|
|
*/
|
2015-05-01 15:59:36 -10:00
|
|
|
void showLBV(const Common::String &filename);
|
2015-03-15 17:50:10 -04:00
|
|
|
protected:
|
2015-05-19 07:37:55 -04:00
|
|
|
/**
|
|
|
|
* Game initialization
|
|
|
|
*/
|
2015-03-15 17:50:10 -04:00
|
|
|
virtual void initialize();
|
2015-03-15 18:42:24 -04:00
|
|
|
|
2015-05-19 07:37:55 -04:00
|
|
|
/**
|
|
|
|
* Show the opening sequence
|
|
|
|
*/
|
2015-03-15 18:42:24 -04:00
|
|
|
virtual void showOpening();
|
2015-03-18 22:32:41 -04:00
|
|
|
|
2015-05-19 07:37:55 -04:00
|
|
|
/**
|
|
|
|
* Starting a scene within the game
|
|
|
|
*/
|
2015-03-18 22:32:41 -04:00
|
|
|
virtual void startScene();
|
2015-03-15 16:52:55 -04:00
|
|
|
public:
|
2015-03-18 22:32:41 -04:00
|
|
|
ScalpelEngine(OSystem *syst, const SherlockGameDescription *gameDesc);
|
2015-03-18 23:01:47 -04:00
|
|
|
virtual ~ScalpelEngine();
|
2015-03-22 00:52:02 -04:00
|
|
|
|
2015-05-19 07:37:55 -04:00
|
|
|
/**
|
|
|
|
* Takes care of clearing the mirror in scene 12 (mansion drawing room), in case anything drew over it
|
|
|
|
*/
|
2015-03-22 00:52:02 -04:00
|
|
|
void eraseMirror12();
|
2015-05-19 07:37:55 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Takes care of drawing Holme's reflection onto the mirror in scene 12 (mansion drawing room)
|
|
|
|
*/
|
2015-03-22 00:52:02 -04:00
|
|
|
void doMirror12();
|
2015-05-19 07:37:55 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* This clears the mirror in scene 12 (mansion drawing room) in case anything messed draw over it
|
|
|
|
*/
|
2015-03-22 00:52:02 -04:00
|
|
|
void flushMirror12();
|
2015-03-15 16:52:55 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
} // End of namespace Scalpel
|
|
|
|
|
|
|
|
} // End of namespace Sherlock
|
|
|
|
|
|
|
|
#endif
|