aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/supernova2/rooms.cpp9
-rw-r--r--engines/supernova2/state.cpp19
2 files changed, 20 insertions, 8 deletions
diff --git a/engines/supernova2/rooms.cpp b/engines/supernova2/rooms.cpp
index 2e594287ce..e9ede99b58 100644
--- a/engines/supernova2/rooms.cpp
+++ b/engines/supernova2/rooms.cpp
@@ -1394,6 +1394,8 @@ void Checkout::shouting() {
}
void Checkout::appearance() {
+ _vm->_allowSaveGame = false;
+ _vm->_allowLoadGame = false;
int xp = 0;
CursorMan.showMouse(false);
_vm->playSound(kMusicMadMonkeys);
@@ -1599,6 +1601,8 @@ void Checkout::appearance() {
_vm->_screen->setViewportBrightness(1);
_vm->paletteBrightness();
_gm->drawGUI();
+ _vm->_allowSaveGame = true;
+ _vm->_allowLoadGame = true;
}
City1::City1(Supernova2Engine *vm, GameManager *gm) {
@@ -1702,7 +1706,6 @@ void Elevator::onEntrance() {
_objectState[5]._type &= ~OPENED;
else
_objectState[5]._type |= OPENED;
- setRoomSeen(true);
}
void Elevator::animation() {
@@ -3970,10 +3973,14 @@ bool Museum::interact(Action verb, Object &obj1, Object &obj2) {
_vm->paletteFadeOut();
_vm->_system->fillScreen(kColorBlack);
_vm->_screen->setViewportBrightness(255);
+ _vm->_screen->setGuiBrightness(255);
+ _vm->_screen->paletteBrightness();
_vm->renderMessage(kStringMuseum13);
_gm->waitOnInput(_gm->_messageDuration);
_vm->removeMessage();
_vm->_screen->setViewportBrightness(0);
+ _vm->_screen->setGuiBrightness(0);
+ _vm->_screen->paletteBrightness();
bool hasDinosaurHead = false;
if (_gm->_rooms[MUS_ROUND]->getObject(4)->_type & CARRIED)
hasDinosaurHead = true;
diff --git a/engines/supernova2/state.cpp b/engines/supernova2/state.cpp
index 1652170e9e..9f25e15ec6 100644
--- a/engines/supernova2/state.cpp
+++ b/engines/supernova2/state.cpp
@@ -37,7 +37,7 @@ bool GameManager::serialize(Common::WriteStream *out) {
// GameState
out->writeSint16LE(_state._money);
- out->writeSint32LE(_state._startTime);
+ out->writeSint32LE(_state._startTime - g_system->getMillis());
out->writeByte(_state._addressKnown);
out->writeByte(_state._poleMagnet);
out->writeByte(_state._admission);
@@ -55,7 +55,7 @@ bool GameManager::serialize(Common::WriteStream *out) {
out->writeByte(_state._pressureCounter);
out->writeByte(_state._sirenOn);
out->writeSint16LE(_state._pyraDirection);
- out->writeUint32LE(_state._eventTime);
+ out->writeUint32LE(_state._eventTime - g_system->getMillis());
out->writeSint32LE(_state._eventCallback);
out->writeByte(_state._taxiPossibility);
for (int i = 0; i < 15; i++) {
@@ -89,7 +89,7 @@ bool GameManager::deserialize(Common::ReadStream *in, int version) {
// GameState
_state._money = in->readSint16LE();
- _state._startTime = in->readSint32LE();
+ _state._startTime = in->readSint32LE() + g_system->getMillis();
_state._addressKnown = in->readByte();
_state._poleMagnet = in->readByte();
_state._admission = in->readByte();
@@ -107,7 +107,7 @@ bool GameManager::deserialize(Common::ReadStream *in, int version) {
_state._pressureCounter = in->readByte();
_state._sirenOn = in->readByte();
_state._pyraDirection = in->readSint16LE();
- _state._eventTime = in->readUint32LE();
+ _state._eventTime = in->readUint32LE() + g_system->getMillis();
_state._eventCallback = (EventFunction)in->readSint32LE();
_state._taxiPossibility = in->readByte();
for (int i = 0; i < 15; i++)
@@ -524,6 +524,8 @@ void GameManager::initGui() {
}
void GameManager::updateEvents() {
+ if (_currentRoom == _rooms[ELEVATOR])
+ debug("%d %d", _state._elevatorE, _state._elevatorNumber);
handleTime();
if (_animationEnabled && !_vm->_screen->isMessageShown() && _animationTimer == 0)
_currentRoom->animation();
@@ -879,6 +881,7 @@ void GameManager::edit(Common::String &input, int x, int y, uint length) {
int overdrawWidth = ((int)((length + 1) * (kFontWidth + 2)) > (kScreenWidth - x)) ?
kScreenWidth - x : (length + 1) * (kFontWidth + 2);
+ _guiEnabled = false;
while (isEditing) {
_vm->_screen->setTextCursorPos(x, y);
_vm->_screen->setTextCursorColor(kColorWhite99);
@@ -938,6 +941,7 @@ void GameManager::edit(Common::String &input, int x, int y, uint length) {
break;
}
}
+ _guiEnabled = true;
}
void GameManager::takeMoney(int amount) {
@@ -1496,7 +1500,7 @@ void GameManager::handleInput() {
byte i = _inputObject[0]->_click;
_inputObject[0]->_click = _inputObject[0]->_click2;
_inputObject[0]->_click2 = i;
- //_sound->play(kAudioDoorOpen);
+ _vm->_sound->play(kAudioTaxiOpen);
}
break;
@@ -1515,7 +1519,7 @@ void GameManager::handleInput() {
byte i = _inputObject[0]->_click;
_inputObject[0]->_click = _inputObject[0]->_click2;
_inputObject[0]->_click2 = i;
- //_sound->play(kAudioDoorClose);
+ _vm->_sound->play(kAudioElevator1);
}
break;
@@ -1729,6 +1733,7 @@ void GameManager::taxi() {
_vm->renderImage(0);
_vm->renderImage(1);
_vm->renderImage(6);
+ _vm->playSound(kAudioSuccess);
taxiPayment(14, answer);
break;
default:
@@ -2112,7 +2117,7 @@ void GameManager::caught2() {
_state._sirenOn = false;
_mapOn = false;
_state._haste = false;
- //dead(kStringMuseum9);
+ dead(kStringMuseum9);
}
void GameManager::drawClock() {