diff --git a/engines/nancy/action/actionmanager.cpp b/engines/nancy/action/actionmanager.cpp index 5e74523b1de..e66e1e343ac 100644 --- a/engines/nancy/action/actionmanager.cpp +++ b/engines/nancy/action/actionmanager.cpp @@ -288,7 +288,7 @@ void ActionManager::processActionRecords() { break; } case DependencyType::kPlayerTOD: - if (dep.label == NancySceneState._timers.timeOfDay) { + if (dep.label == NancySceneState.getPlayerTOD()) { dep.satisfied = true; } diff --git a/engines/nancy/state/scene.cpp b/engines/nancy/state/scene.cpp index 0cd0525fe20..854b233c8ce 100644 --- a/engines/nancy/state/scene.cpp +++ b/engines/nancy/state/scene.cpp @@ -223,6 +223,16 @@ void Scene::setPlayerTime(Time time, byte relative) { _timers.playerTimeNextMinute = g_nancy->getTotalPlayTime() + g_nancy->_playerTimeMinuteLength; } +byte Scene::getPlayerTOD() const { + if (_timers.playerTime.getHours() >= 7 && _timers.playerTime.getHours() < 18) { + return kPlayerDay; + } else if (_timers.playerTime.getHours() >= 19 || _timers.playerTime.getHours() < 6) { + return kPlayerNight; + } else { + return kPlayerDuskDawn; + } +} + void Scene::addItemToInventory(uint16 id) { _flags.items[id] = kInvHolding; if (_flags.heldItem == id) { @@ -388,7 +398,7 @@ void Scene::synchronize(Common::Serializer &ser) { ser.syncAsUint32LE((uint32 &)_timers.pushedPlayTime); ser.syncAsUint32LE((uint32 &)_timers.timerTime); ser.syncAsByte(_timers.timerIsActive); - ser.syncAsByte(_timers.timeOfDay); + ser.skip(1); // timeOfDay; To be removed on next savefile version bump g_nancy->setTotalPlayTime((uint32)_timers.lastTotalTime); @@ -445,7 +455,6 @@ void Scene::init() { _timers.timerIsActive = false; _timers.playerTimeNextMinute = 0; _timers.pushedPlayTime = 0; - _timers.timeOfDay = kPlayerDay; changeScene(g_nancy->_firstScene); @@ -598,15 +607,6 @@ void Scene::run() { _timers.playerTimeNextMinute = currentPlayTime + g_nancy->_playerTimeMinuteLength; } - // Set the time of day according to playerTime - if (_timers.playerTime.getHours() >= 7 && _timers.playerTime.getHours() < 18) { - _timers.timeOfDay = kPlayerDay; - } else if (_timers.playerTime.getHours() >= 19 || _timers.playerTime.getHours() < 6) { - _timers.timeOfDay = kPlayerNight; - } else { - _timers.timeOfDay = kPlayerDuskDawn; - } - // Update the UI elements and handle input NancyInput input = g_nancy->_input->getInput(); diff --git a/engines/nancy/state/scene.h b/engines/nancy/state/scene.h index add2203f26f..fa90a7e8674 100644 --- a/engines/nancy/state/scene.h +++ b/engines/nancy/state/scene.h @@ -127,7 +127,7 @@ public: void setPlayerTime(Time time, byte relative); Time getPlayerTime() const { return _timers.playerTime; } - byte getPlayerTOD() const { return _timers.timeOfDay; } + byte getPlayerTOD() const; void addItemToInventory(uint16 id); void removeItemFromInventory(uint16 id, bool pickUp = true); @@ -212,7 +212,6 @@ private: bool timerIsActive = false; Time playerTime; // In-game time of day, adds a minute every 5 seconds Time playerTimeNextMinute; // Stores the next tick count until we add a minute to playerTime - byte timeOfDay = kPlayerDay; }; struct PlayFlags { diff --git a/engines/nancy/time.h b/engines/nancy/time.h index bfd131e465a..8edbff5e845 100644 --- a/engines/nancy/time.h +++ b/engines/nancy/time.h @@ -67,12 +67,12 @@ public: friend bool operator>= (const Time &l, const uint32 &r) { return !(l < r); } friend bool operator>= (const uint32 &l, const Time &r) { return !(l < r); } - uint16 getSeconds() { return (_milliseconds / 1000) % 60; } - uint16 getMinutes() { return (_milliseconds / 60000) % 60; } - uint16 getTotalHours() { return _milliseconds / 3600000; } + uint16 getSeconds() const { return (_milliseconds / 1000) % 60; } + uint16 getMinutes() const { return (_milliseconds / 60000) % 60; } + uint16 getTotalHours() const { return _milliseconds / 3600000; } - uint16 getHours() { return (_milliseconds / 3600000) % 24; } // Used for player time - uint16 getDays() { return _milliseconds / 86400000; } // up to 49.7 days + uint16 getHours() const { return (_milliseconds / 3600000) % 24; } // Used for player time + uint16 getDays() const { return _milliseconds / 86400000; } // up to 49.7 days private: uint32 _milliseconds;