aboutsummaryrefslogtreecommitdiff
path: root/engines/lastexpress/game/savegame.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/lastexpress/game/savegame.h')
-rw-r--r--engines/lastexpress/game/savegame.h30
1 files changed, 20 insertions, 10 deletions
diff --git a/engines/lastexpress/game/savegame.h b/engines/lastexpress/game/savegame.h
index dc16a16728..8866fd330d 100644
--- a/engines/lastexpress/game/savegame.h
+++ b/engines/lastexpress/game/savegame.h
@@ -95,9 +95,9 @@ public:
_bufferOffset = -1;
_valueCount = 0;
_previousValue = 0;
- _field_15F = 0;
+ _repeatCount = 0;
_offset = 0;
- _status = 0;
+ _status = kStatusReady;
memset(_buffer, 0, 256);
}
@@ -109,24 +109,34 @@ public:
uint32 read(void *dataPtr, uint32 dataSize);
uint32 write(const void *dataPtr, uint32 dataSize);
- void process();
+ uint32 process();
private:
+ enum CompressedStreamStatus {
+ kStatusReady,
+ kStatusReading,
+ kStatusWriting
+ };
+
+ uint32 readUncompressed(void *dataPtr, uint32 dataSize);
+
// Compressed data
uint32 writeCompressed(const void *dataPtr, uint32 dataSize);
uint32 readCompressed(void *dataPtr, uint32 dataSize);
+ void writeBuffer(uint8 value, bool onlyValue);
+
private:
bool _eos;
// Compression handling
- bool _enableCompression;
- int _bufferOffset;
- int _valueCount;
- byte _previousValue;
- byte _field_15F;
- int _offset;
- int _status;
+ bool _enableCompression;
+ int16 _bufferOffset;
+ byte _valueCount;
+ byte _previousValue;
+ int16 _repeatCount;
+ uint32 _offset;
+ CompressedStreamStatus _status;
byte _buffer[256];
};