aboutsummaryrefslogtreecommitdiff
path: root/engines/supernova2/state.cpp
diff options
context:
space:
mode:
authorJaromir Wysoglad2019-06-12 19:08:44 +0200
committerThierry Crozat2019-07-28 15:09:14 +0100
commitd93656c10a048d3de2ee209c59533dad1f2d7759 (patch)
treefe436e3d16785d86d4c9e41f2ee516070dd56945 /engines/supernova2/state.cpp
parent46fe10db87933ce8325f33b64503f713b6f7f998 (diff)
downloadscummvm-rg350-d93656c10a048d3de2ee209c59533dad1f2d7759.tar.gz
scummvm-rg350-d93656c10a048d3de2ee209c59533dad1f2d7759.tar.bz2
scummvm-rg350-d93656c10a048d3de2ee209c59533dad1f2d7759.zip
SUPERNOVA2: Add rooms Mus2 to Mus7
The rooms aren't tested yet, because the first room after MusEntrance is Mus11, which isn't implemented yet.
Diffstat (limited to 'engines/supernova2/state.cpp')
-rw-r--r--engines/supernova2/state.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/engines/supernova2/state.cpp b/engines/supernova2/state.cpp
index 36dc72c7d6..7e4d0b7171 100644
--- a/engines/supernova2/state.cpp
+++ b/engines/supernova2/state.cpp
@@ -52,6 +52,7 @@ bool GameManager::serialize(Common::WriteStream *out) {
out->writeByte(_state._alarmOn);
out->writeByte(_state._alarmCracked);
out->writeByte(_state._haste);
+ out->writeByte(_state._pressureCounter);
out->writeByte(_state._sirenOn);
out->writeSint16LE(_state._pyraDirection);
out->writeUint32LE(_state._eventTime);
@@ -103,6 +104,7 @@ bool GameManager::deserialize(Common::ReadStream *in, int version) {
_state._alarmOn = in->readByte();
_state._alarmCracked = in->readByte();
_state._haste = in->readByte();
+ _state._pressureCounter = in->readByte();
_state._sirenOn = in->readByte();
_state._pyraDirection = in->readSint16LE();
_state._eventTime = in->readUint32LE();
@@ -394,6 +396,7 @@ void GameManager::initState() {
_state._alarmOn = false;
_state._alarmCracked = false;
_state._haste = false;
+ _state._pressureCounter = 0;
_state._sirenOn = false;
_state._pyraDirection = 0;
_state._eventTime = kMaxTimerValue;
@@ -2272,5 +2275,21 @@ void GameManager::securityEntrance() {
}
}
+void GameManager::pressureAlarmEntrance() {
+ _state._pressureCounter = 0;
+ securityEntrance();
+}
+
+void GameManager::pressureAlarmCount() {
+ if (!(_state._alarmOn ||
+ (_currentRoom == _rooms[MUS22] && _currentRoom->isSectionVisible(6)))) {
+ _state._pressureCounter++;
+ if ((_currentRoom >= _rooms[MUS12] && _state._pressureCounter > 8) ||
+ _state._pressureCounter > 16)
+ alarm();
+ }
+ setAnimationTimer(11);
+}
+
}