aboutsummaryrefslogtreecommitdiff
path: root/engines/sludge
diff options
context:
space:
mode:
authorSimei Yin2018-04-27 19:12:30 +0200
committerSimei Yin2018-04-27 19:48:29 +0200
commitda491601d4fca4deebe8d1a4a18e67fe48dff55d (patch)
tree53d18f67a2893bf3f870d7174a17d84392460d35 /engines/sludge
parent5ced49576924c18dd3d04c08f4e1822f21c52894 (diff)
downloadscummvm-rg350-da491601d4fca4deebe8d1a4a18e67fe48dff55d.tar.gz
scummvm-rg350-da491601d4fca4deebe8d1a4a18e67fe48dff55d.tar.bz2
scummvm-rg350-da491601d4fca4deebe8d1a4a18e67fe48dff55d.zip
SLUDGE: Move global variable brightnessLevel to GraphicsManager and refactor save&load
Diffstat (limited to 'engines/sludge')
-rw-r--r--engines/sludge/backdrop.cpp21
-rw-r--r--engines/sludge/builtin.cpp12
-rw-r--r--engines/sludge/graphics.h13
-rw-r--r--engines/sludge/loadsave.cpp23
-rw-r--r--engines/sludge/transition.cpp13
5 files changed, 46 insertions, 36 deletions
diff --git a/engines/sludge/backdrop.cpp b/engines/sludge/backdrop.cpp
index c1042c7f05..1c618c7da1 100644
--- a/engines/sludge/backdrop.cpp
+++ b/engines/sludge/backdrop.cpp
@@ -504,6 +504,27 @@ void GraphicsManager::saveHSI(Common::WriteStream *stream) {
Image::writePNG(*stream, _backdropSurface);
}
+void GraphicsManager::saveBackdrop(Common::WriteStream *stream) {
+ stream->writeUint16BE(_cameraX);
+ stream->writeUint16BE(_cameraY);
+ stream->writeFloatLE(_cameraZoom);
+ stream->writeByte(_brightnessLevel);
+ saveHSI(stream);
+}
+
+void GraphicsManager::loadBackdrop(int ssgVersion, Common::SeekableReadStream *stream) {
+ _cameraX = stream->readUint16BE();
+ _cameraY = stream->readUint16BE();
+ if (ssgVersion >= VERSION(2, 0)) {
+ _cameraZoom = stream->readFloatLE();
+ } else {
+ _cameraZoom = 1.0;
+ }
+
+ _brightnessLevel = stream->readByte();
+
+ loadHSI(stream, 0, 0, true);
+}
bool GraphicsManager::getRGBIntoStack(uint x, uint y, StackHandler *sH) {
if (x >= _sceneWidth || y >= _sceneHeight) {
diff --git a/engines/sludge/builtin.cpp b/engines/sludge/builtin.cpp
index 909118a2dd..bc635f88cd 100644
--- a/engines/sludge/builtin.cpp
+++ b/engines/sludge/builtin.cpp
@@ -67,7 +67,6 @@ extern int numBIFNames, numUserFunc;
extern Common::String *allUserFunc;
extern Common::String *allBIFNames;
-extern byte brightnessLevel;
extern byte fadeMode;
extern uint16 saveEncoding;
@@ -1971,17 +1970,12 @@ builtIn(setFontSpacing) {
builtIn(transitionLevel) {
UNUSEDALL
- int number;
- if (!getValueType(number, SVT_INT, fun->stack->thisVar))
+ int brightnessLevel;
+ if (!getValueType(brightnessLevel, SVT_INT, fun->stack->thisVar))
return BR_ERROR;
trimStack(fun->stack);
- if (number < 0)
- brightnessLevel = 0;
- else if (number > 255)
- brightnessLevel = 255;
- else
- brightnessLevel = number;
+ g_sludge->_gfxMan->setBrightnessLevel(brightnessLevel);
setVariable(fun->reg, SVT_INT, 1);
return BR_CONTINUE;
diff --git a/engines/sludge/graphics.h b/engines/sludge/graphics.h
index 6c5351cb53..f7ed7d0026 100644
--- a/engines/sludge/graphics.h
+++ b/engines/sludge/graphics.h
@@ -91,6 +91,8 @@ public:
void drawVerticalLine(uint, uint, uint);
void hardScroll(int distance);
bool getRGBIntoStack(uint x, uint y, StackHandler *sH);
+ void saveBackdrop(Common::WriteStream *stream); // To game save
+ void loadBackdrop(int ssgVersion, Common::SeekableReadStream *streamn); // From game save
// Lightmap
int _lightMapMode;
@@ -109,11 +111,6 @@ public:
int getCamX() { return _cameraX; }
int getCamY() { return _cameraY; }
float getCamZoom() { return _cameraZoom; }
- void setCamera(int camerX, int camerY, float camerZ) {
- _cameraX = camerX;
- _cameraY = camerY;
- _cameraZoom = camerZ;
- }
void aimCamera(int cameraX, int cameraY);
void zoomCamera(int z);
@@ -173,6 +170,9 @@ public:
bool skipThumbnail(Common::SeekableReadStream *stream);
void showThumbnail(const Common::String &filename, int x, int y);
+ // Transition
+ void setBrightnessLevel(int brightnessLevel);
+
private:
SludgeEngine *_vm;
@@ -227,6 +227,9 @@ private:
// Thumbnail
int _thumbWidth;
int _thumbHeight;
+
+ // Transition
+ byte _brightnessLevel;
};
} // End of namespace Sludge
diff --git a/engines/sludge/loadsave.cpp b/engines/sludge/loadsave.cpp
index 017be432ab..65ea4742c2 100644
--- a/engines/sludge/loadsave.cpp
+++ b/engines/sludge/loadsave.cpp
@@ -60,7 +60,6 @@ extern int numGlobals; // In sludger.cpp
extern Variable *globalVars; // In sludger.cpp
extern Floor *currentFloor; // In floor.cpp
extern FILETIME fileTime; // In sludger.cpp
-extern byte brightnessLevel; // " " "
extern byte fadeMode; // In transition.cpp
extern bool allowAnyFilename;
extern uint16 saveEncoding; // in savedata.cpp
@@ -363,12 +362,7 @@ bool saveGame(const Common::String &fname) {
g_sludge->_txtMan->saveFont(fp);
// Save backdrop
- fp->writeUint16BE(g_sludge->_gfxMan->getCamX());
- fp->writeUint16BE(g_sludge->_gfxMan->getCamY());
- fp->writeFloatLE(g_sludge->_gfxMan->getCamZoom());
-
- fp->writeByte(brightnessLevel);
- g_sludge->_gfxMan->saveHSI(fp);
+ g_sludge->_gfxMan->saveBackdrop(fp);
// Save event handlers
g_sludge->_evtMan->saveHandlers(fp);
@@ -504,19 +498,10 @@ bool loadGame(const Common::String &fname) {
g_sludge->_regionMan->kill();
- int camerX = fp->readUint16BE();
- int camerY = fp->readUint16BE();
- float camerZ;
- if (ssgVersion >= VERSION(2, 0)) {
- camerZ = fp->readFloatLE();
- } else {
- camerZ = 1.0;
- }
-
- brightnessLevel = fp->readByte();
+ g_sludge->_gfxMan->loadBackdrop(ssgVersion, fp);
- g_sludge->_gfxMan->loadHSI(fp, 0, 0, true);
g_sludge->_evtMan->loadHandlers(fp);
+
g_sludge->_regionMan->loadRegions(fp);
if (!g_sludge->_cursorMan->loadCursor(fp)) {
@@ -598,8 +583,6 @@ bool loadGame(const Common::String &fname) {
delete fp;
- g_sludge->_gfxMan->setCamera(camerX, camerY, camerZ);
-
clearStackLib();
return true;
}
diff --git a/engines/sludge/transition.cpp b/engines/sludge/transition.cpp
index 3a768cb5f4..ddefbe9861 100644
--- a/engines/sludge/transition.cpp
+++ b/engines/sludge/transition.cpp
@@ -22,16 +22,25 @@
#include "sludge/allfiles.h"
#include "sludge/backdrop.h"
+#include "sludge/graphics.h"
#include "sludge/newfatal.h"
namespace Sludge {
-extern byte brightnessLevel;
-
extern float snapTexW, snapTexH;
byte fadeMode = 2;
+void GraphicsManager::setBrightnessLevel(int brightnessLevel)
+{
+ if (brightnessLevel < 0)
+ _brightnessLevel = 0;
+ else if (brightnessLevel > 255)
+ _brightnessLevel = 255;
+ else
+ _brightnessLevel = brightnessLevel;
+}
+
//----------------------------------------------------
// PROPER BRIGHTNESS FADING
//----------------------------------------------------