[Scummvm-git-logs] scummvm master -> 41592302ebb5a998e0ea0ddc1174791d2fbc0f3c

madmoose thomas at fach-pedersen.net
Fri Mar 23 23:19:56 CET 2018


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
41592302eb BLADERUNNER: Add Game Time class


Commit: 41592302ebb5a998e0ea0ddc1174791d2fbc0f3c
    https://github.com/scummvm/scummvm/commit/41592302ebb5a998e0ea0ddc1174791d2fbc0f3c
Author: Thomas Fach-Pedersen (thomas at fach-pedersen.net)
Date: 2018-03-23T23:14:34+01:00

Commit Message:
BLADERUNNER: Add Game Time class

Not yet used.

Changed paths:
  A engines/bladerunner/time.cpp
  A engines/bladerunner/time.h
    engines/bladerunner/bladerunner.cpp
    engines/bladerunner/bladerunner.h
    engines/bladerunner/module.mk


diff --git a/engines/bladerunner/bladerunner.cpp b/engines/bladerunner/bladerunner.cpp
index 43f67ea..055c77c 100644
--- a/engines/bladerunner/bladerunner.cpp
+++ b/engines/bladerunner/bladerunner.cpp
@@ -60,6 +60,7 @@
 #include "bladerunner/slice_renderer.h"
 #include "bladerunner/suspects_database.h"
 #include "bladerunner/text_resource.h"
+#include "bladerunner/time.h"
 #include "bladerunner/ui/elevator.h"
 #include "bladerunner/ui/esper.h"
 #include "bladerunner/ui/kia.h"
@@ -253,12 +254,12 @@ bool BladeRunnerEngine::startup(bool hasSavegames) {
 	_surfaceBack.create(640, 480, createRGB555());
 	_surface4.create(640, 480, createRGB555());
 
+	_gameTime = new Time(this);
+
 	r = openArchive("STARTUP.MIX");
 	if (!r)
 		return false;
 
-	// TODO: Timer
-
 	_gameInfo = new GameInfo(this);
 	if (!_gameInfo)
 		return false;
@@ -632,8 +633,8 @@ void BladeRunnerEngine::shutdown() {
 
 	// TODO: Delete MIXArchives here
 
-	// TODO: Delete Timer
-
+	delete _gameTime;
+	_gameTime = nullptr;
 
 	// These are static objects in original game
 
diff --git a/engines/bladerunner/bladerunner.h b/engines/bladerunner/bladerunner.h
index 066e683..6d15a1c 100644
--- a/engines/bladerunner/bladerunner.h
+++ b/engines/bladerunner/bladerunner.h
@@ -85,6 +85,7 @@ class SliceRenderer;
 class Spinner;
 class SuspectsDatabase;
 class TextResource;
+class Time;
 class KIAShapes;
 class Vector3;
 class View;
@@ -139,6 +140,7 @@ public:
 	SliceRenderer      *_sliceRenderer;
 	Spinner            *_spinner;
 	SuspectsDatabase   *_suspectsDatabase;
+	Time               *_gameTime;
 	View               *_view;
 	VK                 *_vk;
 	Waypoints          *_waypoints;
diff --git a/engines/bladerunner/module.mk b/engines/bladerunner/module.mk
index 57fdcc1..aa1fe01 100644
--- a/engines/bladerunner/module.mk
+++ b/engines/bladerunner/module.mk
@@ -244,6 +244,7 @@ MODULE_OBJS = \
 	slice_renderer.o \
 	suspects_database.o \
 	text_resource.o \
+	time.o \
 	ui/elevator.o \
 	ui/esper.o \
 	ui/kia.o \
diff --git a/engines/bladerunner/time.cpp b/engines/bladerunner/time.cpp
new file mode 100644
index 0000000..a395a81
--- /dev/null
+++ b/engines/bladerunner/time.cpp
@@ -0,0 +1,68 @@
+/* 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/time.h"
+
+#include "bladerunner/bladerunner.h"
+
+#include "common/timer.h"
+
+namespace BladeRunner {
+
+Time::Time(BladeRunnerEngine *vm) {
+	_vm = vm;
+
+	_start = _vm->getTotalPlayTime();
+	_pauseCount = 0;
+	_offset = 0;
+	_pauseStart = 0;
+}
+
+int Time::current() {
+	int time = _vm->getTotalPlayTime() - _offset;
+	return time - _start;
+}
+
+int Time::pause() {
+	if (_pauseCount == 0) {
+		_pauseStart = current();
+	}
+	return ++_pauseCount;
+}
+
+int Time::getPauseStart() {
+	return _pauseStart;
+}
+
+int Time::unpause() {
+	assert(_pauseCount > 0);
+	if (--_pauseCount == 0) {
+		_offset += current() - _pauseStart;
+	}
+	return _pauseCount;
+}
+
+bool Time::isLocked() {
+	return _pauseCount > 0;
+}
+
+} // End of namespace BladeRunner
diff --git a/engines/bladerunner/time.h b/engines/bladerunner/time.h
new file mode 100644
index 0000000..bda8c84
--- /dev/null
+++ b/engines/bladerunner/time.h
@@ -0,0 +1,50 @@
+/* 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_TIME_H
+#define BLADERUNNER_TIME_H
+
+namespace BladeRunner {
+
+class BladeRunnerEngine;
+
+class Time {
+	BladeRunnerEngine *_vm;
+
+	int _start;
+	int _pauseCount;
+	int _offset;
+	int _pauseStart;
+
+public:
+	Time(BladeRunnerEngine *vm);
+
+	int  current();
+	int  pause();
+	int  getPauseStart();
+	int  unpause();
+	bool isLocked();
+};
+
+} // End of namespace BladeRunner
+
+#endif





More information about the Scummvm-git-logs mailing list