XEEN: Do rendering delays like the original did

This commit is contained in:
Paul Gilbert 2017-12-09 19:54:46 -05:00
parent deb4261b6a
commit 65ecb6e56f
5 changed files with 25 additions and 10 deletions

View File

@ -73,7 +73,7 @@ void MapDialog::execute() {
events.updateGameCounter();
do {
if (drawFlag)
intf.draw3d(false, true);
intf.draw3d(false);
windows[5].writeString("\r");
if (map._isOutdoors)

View File

@ -161,6 +161,12 @@ void EventsManager::ipause(uint amount) {
} while (!_vm->shouldQuit() && timeElapsed() < amount);
}
void EventsManager::ipause5(uint amount) {
do {
pollEventsAndWait();
} while (!_vm->shouldQuit() && timeElapsed5() < amount);
}
void EventsManager::nextFrame() {
++_frameCounter;

View File

@ -109,7 +109,15 @@ public:
bool wait(uint numFrames, bool interruptable = true);
/**
* Pause for a set amount
*/
void ipause(uint amount);
/**
* Pauses a set amount past the previous call to timeMark5
*/
void ipause5(uint amount);
};
class GameEvent {

View File

@ -1242,7 +1242,7 @@ void Interface::bash(const Common::Point &pt, Direction direction) {
drawParty(true);
}
void Interface::draw3d(bool updateFlag, bool skipDelay) {
void Interface::draw3d(bool updateFlag) {
Combat &combat = *_vm->_combat;
EventsManager &events = *_vm->_events;
Party &party = *_vm->_party;
@ -1250,7 +1250,7 @@ void Interface::draw3d(bool updateFlag, bool skipDelay) {
Scripts &scripts = *_vm->_scripts;
Windows &windows = *_vm->_windows;
events.updateGameCounter();
events.timeMark5();
if (windows[11]._enabled)
return;
@ -1299,12 +1299,7 @@ void Interface::draw3d(bool updateFlag, bool skipDelay) {
}
party._stepped = false;
if (_vm->_mode == MODE_RECORD_EVENTS) {
// TODO: Save current scripts data?
}
if (!skipDelay)
events.wait(2, false);
events.ipause5(2);
}
void Interface::handleFalling() {

View File

@ -161,9 +161,15 @@ public:
void rest();
/**
* Handles bash actions
*/
void bash(const Common::Point &pt, Direction direction);
void draw3d(bool updateFlag, bool skipDelay = false);
/**
* Handles drawing the elements of the interface and game scene
*/
void draw3d(bool updateFlag);
/**
* Draw the display borders