From 1b53cfff49b44004b5afb9944dbf3b2e9137b653 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 25 Mar 2018 16:52:48 +0200 Subject: [PATCH] BLADERUNNER: Added skeleton for Scores class --- engines/bladerunner/bladerunner.cpp | 25 ++++++--- engines/bladerunner/bladerunner.h | 2 + engines/bladerunner/module.mk | 1 + engines/bladerunner/ui/scores.cpp | 78 +++++++++++++++++++++++++++++ engines/bladerunner/ui/scores.h | 61 ++++++++++++++++++++++ 5 files changed, 160 insertions(+), 7 deletions(-) create mode 100644 engines/bladerunner/ui/scores.cpp create mode 100644 engines/bladerunner/ui/scores.h diff --git a/engines/bladerunner/bladerunner.cpp b/engines/bladerunner/bladerunner.cpp index 871931a41c46..5121fa86c65e 100644 --- a/engines/bladerunner/bladerunner.cpp +++ b/engines/bladerunner/bladerunner.cpp @@ -66,6 +66,7 @@ #include "bladerunner/ui/elevator.h" #include "bladerunner/ui/esper.h" #include "bladerunner/ui/kia.h" +#include "bladerunner/ui/scores.h" #include "bladerunner/ui/spinner.h" #include "bladerunner/ui/vk.h" #include "bladerunner/vqa_decoder.h" @@ -396,7 +397,7 @@ bool BladeRunnerEngine::startup(bool hasSavegames) { _elevator = new Elevator(this); - // TODO: Scores + _scores = new Scores(this); _mainFont = new Font(this); _mainFont->open("KIA6PT.FON", 640, 480, -1, 0, 0x252D); @@ -596,7 +597,8 @@ void BladeRunnerEngine::shutdown() { // TODO: Delete Flee waypoints - // TODO: Delete Scores + delete _scores; + _scores = nullptr; delete _elevator; _elevator = nullptr; @@ -753,7 +755,11 @@ void BladeRunnerEngine::gameTick() { return; } - // TODO: Scores + if (_scores->isOpen()) { + _scores->tick(); + _ambientSounds->tick(); + return; + } _actorDialogueQueue->tick(); if (_scene->didPlayerWalkIn()) { @@ -947,7 +953,10 @@ void BladeRunnerEngine::handleKeyUp(Common::Event &event) { return; } - //TODO: scores + if (_scores->isOpen()) { + return; + } + switch (event.kbd.keycode) { case Common::KEYCODE_TAB: _kia->openLastOpened(); @@ -995,7 +1004,9 @@ void BladeRunnerEngine::handleKeyDown(Common::Event &event) { return; } - //TODO: scores + if (_scores->isOpen()) { + return; + } switch (event.kbd.keycode) { case Common::KEYCODE_F1: @@ -1616,7 +1627,7 @@ bool BladeRunnerEngine::saveGame(const Common::String &filename, byte *thumbnail _ambientSounds->save(s); _overlays->save(s); _spinner->save(s); - s.padBytes(0x28); // TODO: _scores->save(s); + _scores->save(s); _dialogueMenu->save(s); _obstacles->save(s); _actorDialogueQueue->save(s); @@ -1694,7 +1705,7 @@ void BladeRunnerEngine::loadGame(const Common::String &filename, byte *thumbnail _ambientSounds->load(s); _overlays->load(s); _spinner->load(s); - s.skip(0x28); // TODO: _scores->load(s); + _scores->load(s); _dialogueMenu->load(s); _obstacles->load(s); _actorDialogueQueue->load(s); diff --git a/engines/bladerunner/bladerunner.h b/engines/bladerunner/bladerunner.h index 32747cc5146b..4dad66ea7404 100644 --- a/engines/bladerunner/bladerunner.h +++ b/engines/bladerunner/bladerunner.h @@ -79,6 +79,7 @@ class PoliceMaze; class Scene; class SceneObjects; class SceneScript; +class Scores; class Settings; class Shape; class SliceAnimations; @@ -137,6 +138,7 @@ class BladeRunnerEngine : public Engine { Scene *_scene; SceneObjects *_sceneObjects; SceneScript *_sceneScript; + Scores *_scores; Settings *_settings; SliceAnimations *_sliceAnimations; SliceRenderer *_sliceRenderer; diff --git a/engines/bladerunner/module.mk b/engines/bladerunner/module.mk index 5fb39b8289d0..672e65277b12 100644 --- a/engines/bladerunner/module.mk +++ b/engines/bladerunner/module.mk @@ -260,6 +260,7 @@ MODULE_OBJS = \ ui/kia_section_settings.o \ ui/kia_section_suspects.o \ ui/kia_shapes.o \ + ui/scores.o \ ui/spinner.o \ ui/ui_check_box.o \ ui/ui_container.o \ diff --git a/engines/bladerunner/ui/scores.cpp b/engines/bladerunner/ui/scores.cpp new file mode 100644 index 000000000000..5f15809c9aaa --- /dev/null +++ b/engines/bladerunner/ui/scores.cpp @@ -0,0 +1,78 @@ +/* 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 "bladerunner/ui/scores.h" + +#include "bladerunner/bladerunner.h" +#include "bladerunner/savefile.h" +#include "bladerunner/vqa_player.h" + +namespace BladeRunner { + +Scores::Scores(BladeRunnerEngine *vm) { + _vm = vm; + reset(); +} + +Scores::~Scores() { +} + +bool Scores::isOpen() const { + return _isOpen; +} + +void Scores::tick() { +} + +void Scores::reset() { + _isOpen = false; + _isLoaded = false; + _vqaPlayer = nullptr; + + for (int i = 0; i < 7; i++) { + _scores[i] = -80; + _scorers[i] = 0; + } + + _lastScoreId = 0; + _lastScoreValue = 0; +} + +void Scores::save(SaveFileWriteStream &f) { + for (int i = 0; i < 7; i++) { + f.writeInt(_scores[i]); + } + + f.writeInt(_lastScoreId); + f.writeInt(_lastScoreValue); +} + +void Scores::load(SaveFileReadStream &f) { + for (int i = 0; i < 7; i++) { + _scores[i] = f.readInt(); + } + + _lastScoreId = f.readInt(); + _lastScoreValue = f.readInt(); +} + +} // End of namespace BladeRunner diff --git a/engines/bladerunner/ui/scores.h b/engines/bladerunner/ui/scores.h new file mode 100644 index 000000000000..a739614e7660 --- /dev/null +++ b/engines/bladerunner/ui/scores.h @@ -0,0 +1,61 @@ +/* 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 BLADERUNNER_SCORES_H +#define BLADERUNNER_SCORES_H + +#include "common/array.h" + +namespace BladeRunner { + +class BladeRunnerEngine; +class Shape; +class SaveFileReadStream; +class SaveFileWriteStream; +class VQAPlayer; +class UIImagePicker; + +class Scores { + BladeRunnerEngine *_vm; + bool _isOpen; + bool _isLoaded; + VQAPlayer *_vqaPlayer; + int _scores[7]; + int _scorers[7]; + + int _lastScoreId; + int _lastScoreValue; + +public: + Scores(BladeRunnerEngine *vm); + ~Scores(); + + bool isOpen() const; + void tick(); + void reset(); + void save(SaveFileWriteStream &f); + void load(SaveFileReadStream &f); +}; + +} // End of namespace BladeRunner + +#endif