aboutsummaryrefslogtreecommitdiff
path: root/engines/wintermute/base/gfx/base_renderer.cpp
diff options
context:
space:
mode:
authorEinar Johan Trøan Sømåen2012-07-30 19:41:44 +0200
committerEinar Johan Trøan Sømåen2012-07-30 19:41:44 +0200
commit43611724441e880b7283ae195d40f5e63aa6affd (patch)
treec2eae21a19c8472321d1454a61e4f19a34054a80 /engines/wintermute/base/gfx/base_renderer.cpp
parent85ce9340bcb425a6c5e8dbcacff5a7fa2fb4c817 (diff)
downloadscummvm-rg350-43611724441e880b7283ae195d40f5e63aa6affd.tar.gz
scummvm-rg350-43611724441e880b7283ae195d40f5e63aa6affd.tar.bz2
scummvm-rg350-43611724441e880b7283ae195d40f5e63aa6affd.zip
WINTERMUTE: Redraw ONLY the indicator when saving/loading.
Diffstat (limited to 'engines/wintermute/base/gfx/base_renderer.cpp')
-rw-r--r--engines/wintermute/base/gfx/base_renderer.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/engines/wintermute/base/gfx/base_renderer.cpp b/engines/wintermute/base/gfx/base_renderer.cpp
index cd065f3436..5d81c44c25 100644
--- a/engines/wintermute/base/gfx/base_renderer.cpp
+++ b/engines/wintermute/base/gfx/base_renderer.cpp
@@ -52,6 +52,7 @@ BaseRenderer::BaseRenderer(BaseGame *inGame) : BaseClass(inGame) {
_indicatorY = -1;
_indicatorWidth = -1;
_indicatorHeight = 8;
+ _indicatorWidthDrawn = 0;
_loadImageName = "";
_saveImageName = "";
@@ -103,7 +104,10 @@ void BaseRenderer::setIndicator(int width, int height, int x, int y, uint32 colo
}
void BaseRenderer::setIndicatorVal(int value) {
+ bool redisplay = (_indicatorProgress != value);
_indicatorProgress = value;
+ if (redisplay)
+ displayIndicator();
}
void BaseRenderer::setLoadingScreen(const char *filename, int x, int y) {
@@ -153,6 +157,7 @@ void BaseRenderer::initSaveLoad(bool isSaving, bool quickSave) {
void BaseRenderer::endSaveLoad() {
_loadInProgress = false;
_indicatorDisplay = false;
+ _indicatorWidthDrawn = 0;
delete _saveLoadImage;
_saveLoadImage = NULL;
@@ -338,7 +343,7 @@ void BaseRenderer::addRectToList(BaseActiveRect *rect) {
//////////////////////////////////////////////////////////////////////////
bool BaseRenderer::displayIndicator() {
- if (!_indicatorDisplay) {
+ if (!_indicatorDisplay || !_indicatorProgress) {
return STATUS_OK;
}
if (_saveLoadImage) {
@@ -355,11 +360,16 @@ bool BaseRenderer::displayIndicator() {
return STATUS_OK;
}
setupLines();
+ int curWidth = (int)(_indicatorWidth * (float)((float)_indicatorProgress / 100.0f));
for (int i = 0; i < _indicatorHeight; i++) {
- drawLine(_indicatorX, _indicatorY + i, _indicatorX + (int)(_indicatorWidth * (float)((float)_indicatorProgress / 100.0f)), _indicatorY + i, _indicatorColor);
+ drawLine(_indicatorX, _indicatorY + i, _indicatorX + curWidth, _indicatorY + i, _indicatorColor);
}
setup2D();
+ _indicatorWidthDrawn = curWidth;
+ if (_indicatorWidthDrawn) {
+ indicatorFlip();
+ }
return STATUS_OK;
}