aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2015-07-26 16:40:34 -0400
committerPaul Gilbert2015-07-26 16:40:34 -0400
commit7648a70eb45ad1b000b3bfbb140d77dbbe176c0d (patch)
tree247619355c20f11ec1c85aa0971be583c3c7db54
parent3e0ba9feee2a9b1be641d8310ee7ee500ad2f554 (diff)
downloadscummvm-rg350-7648a70eb45ad1b000b3bfbb140d77dbbe176c0d.tar.gz
scummvm-rg350-7648a70eb45ad1b000b3bfbb140d77dbbe176c0d.tar.bz2
scummvm-rg350-7648a70eb45ad1b000b3bfbb140d77dbbe176c0d.zip
SHERLOCK: RT: Increase size of _sceneStats
-rw-r--r--engines/sherlock/scene.cpp13
-rw-r--r--engines/sherlock/sherlock.h1
2 files changed, 8 insertions, 6 deletions
diff --git a/engines/sherlock/scene.cpp b/engines/sherlock/scene.cpp
index 592c96f527..f56a5109f5 100644
--- a/engines/sherlock/scene.cpp
+++ b/engines/sherlock/scene.cpp
@@ -207,11 +207,12 @@ Scene *Scene::init(SherlockEngine *vm) {
Scene::Scene(SherlockEngine *vm): _vm(vm) {
_sceneStats = new bool *[SCENES_COUNT];
- _sceneStats[0] = new bool[SCENES_COUNT * 65];
- Common::fill(&_sceneStats[0][0], &_sceneStats[0][SCENES_COUNT * 65], false);
+ _sceneStats[0] = new bool[SCENES_COUNT * (MAX_BGSHAPES + 1)];
+ Common::fill(&_sceneStats[0][0], &_sceneStats[0][SCENES_COUNT * (MAX_BGSHAPES + 1)], false);
for (int idx = 1; idx < SCENES_COUNT; ++idx) {
- _sceneStats[idx] = _sceneStats[idx - 1] + 65;
+ _sceneStats[idx] = _sceneStats[idx - 1] + (MAX_BGSHAPES + 1);
}
+
_currentScene = -1;
_goToScene = -1;
_loadingSavedGame = false;
@@ -1050,7 +1051,7 @@ void Scene::loadSceneSounds() {
}
void Scene::checkSceneStatus() {
- if (_sceneStats[_currentScene][64]) {
+ if (_sceneStats[_currentScene][MAX_BGSHAPES]) {
for (uint idx = 0; idx < 64; ++idx) {
bool flag = _sceneStats[_currentScene][idx];
@@ -1076,7 +1077,7 @@ void Scene::checkSceneStatus() {
void Scene::saveSceneStatus() {
// Flag any objects for the scene that have been altered
- int count = MIN((int)_bgShapes.size(), 64);
+ int count = MIN((int)_bgShapes.size(), MAX_BGSHAPES);
for (int idx = 0; idx < count; ++idx) {
Object &obj = _bgShapes[idx];
_sceneStats[_currentScene][idx] = obj._type == HIDDEN || obj._type == REMOVE
@@ -1380,7 +1381,7 @@ void Scene::synchronize(Serializer &s) {
}
for (int sceneNum = 0; sceneNum < SCENES_COUNT; ++sceneNum) {
- for (int flag = 0; flag < 65; ++flag) {
+ for (int flag = 0; flag <= MAX_BGSHAPES; ++flag) {
s.syncAsByte(_sceneStats[sceneNum][flag]);
}
}
diff --git a/engines/sherlock/sherlock.h b/engines/sherlock/sherlock.h
index 5f888f8c3d..ab2c8be6b6 100644
--- a/engines/sherlock/sherlock.h
+++ b/engines/sherlock/sherlock.h
@@ -68,6 +68,7 @@ enum GameType {
#define SHERLOCK_SCENE_WIDTH _vm->_screen->_backBuffer1.w()
#define SHERLOCK_SCENE_HEIGHT (IS_SERRATED_SCALPEL ? 138 : 480)
#define SCENES_COUNT (IS_SERRATED_SCALPEL ? 63 : 101)
+#define MAX_BGSHAPES (IS_SERRATED_SCALPEL ? 64 : 150)
#define COL_INFO_FOREGROUND (IS_SERRATED_SCALPEL ? (byte)Scalpel::INFO_FOREGROUND : (byte)Tattoo::INFO_FOREGROUND)
#define COL_PEN_COLOR (IS_SERRATED_SCALPEL ? (byte)Scalpel::PEN_COLOR : (byte)Tattoo::PEN_COLOR)