aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorBastien Bouclet2010-11-29 20:56:39 +0000
committerBastien Bouclet2010-11-29 20:56:39 +0000
commit92dc0fe5b5780b4efe4dc8502ae82053123656c2 (patch)
tree6e15e8a8283115f7517f33d6a1ff7cf8b2a5bcdd /engines
parent0cff3be66f7a289120326c907e5d10e017b0bb9c (diff)
downloadscummvm-rg350-92dc0fe5b5780b4efe4dc8502ae82053123656c2.tar.gz
scummvm-rg350-92dc0fe5b5780b4efe4dc8502ae82053123656c2.tar.bz2
scummvm-rg350-92dc0fe5b5780b4efe4dc8502ae82053123656c2.zip
MOHAWK: Only draw a resource conditional subimages if it has the "subimages enabled" flag set.
svn-id: r54620
Diffstat (limited to 'engines')
-rw-r--r--engines/mohawk/myst.cpp24
-rw-r--r--engines/mohawk/myst.h3
-rw-r--r--engines/mohawk/myst_areas.h1
3 files changed, 17 insertions, 11 deletions
diff --git a/engines/mohawk/myst.cpp b/engines/mohawk/myst.cpp
index 2ebbb7be10..67fb868992 100644
--- a/engines/mohawk/myst.cpp
+++ b/engines/mohawk/myst.cpp
@@ -396,6 +396,18 @@ void MohawkEngine_Myst::changeToStack(uint16 stack) {
_gfx->clearCache();
}
+void MohawkEngine_Myst::drawCardBackground() {
+if (_view.conditionalImageCount != 0) {
+ for (uint16 i = 0; i < _view.conditionalImageCount; i++) {
+ if (_scriptParser->getVar(_view.conditionalImages[i].var) < _view.conditionalImages[i].numStates)
+ _gfx->copyImageToScreen(_view.conditionalImages[i].values[_scriptParser->getVar(_view.conditionalImages[i].var)], Common::Rect(0, 0, 544, 333));
+ else
+ warning("Conditional image %d variable %d: %d exceeds maximum state of %d", i, _view.conditionalImages[i].var, _scriptParser->getVar(_view.conditionalImages[i].var), _view.conditionalImages[i].numStates-1);
+ }
+} else if (_view.mainImage != 0)
+ _gfx->copyImageToScreen(_view.mainImage, Common::Rect(0, 0, 544, 333));
+}
+
void MohawkEngine_Myst::changeToCard(uint16 card) {
debug(2, "changeToCard(%d)", card);
@@ -423,15 +435,7 @@ void MohawkEngine_Myst::changeToCard(uint16 card) {
loadCursorHints();
// Handle images
- if (_view.conditionalImageCount != 0) {
- for (uint16 i = 0; i < _view.conditionalImageCount; i++) {
- if (_scriptParser->getVar(_view.conditionalImages[i].var) < _view.conditionalImages[i].numStates)
- _gfx->copyImageToScreen(_view.conditionalImages[i].values[_scriptParser->getVar(_view.conditionalImages[i].var)], Common::Rect(0, 0, 544, 333));
- else
- warning("Conditional image %d variable %d: %d exceeds maximum state of %d", i, _view.conditionalImages[i].var, _scriptParser->getVar(_view.conditionalImages[i].var), _view.conditionalImages[i].numStates-1);
- }
- } else if (_view.mainImage != 0)
- _gfx->copyImageToScreen(_view.mainImage, Common::Rect(0, 0, 544, 333));
+ drawCardBackground();
// Handle sound
int16 soundAction = 0;
@@ -901,7 +905,7 @@ void MohawkEngine_Myst::setResourceEnabled(uint16 resourceId, bool enable) {
void MohawkEngine_Myst::drawResourceImages() {
for (uint16 i = 0; i < _resources.size(); i++)
- if (_resources[i]->isEnabled())
+ if (_resources[i]->isDrawSubimages())
_resources[i]->drawDataToScreen();
// Make sure the screen is updated
diff --git a/engines/mohawk/myst.h b/engines/mohawk/myst.h
index ab1c6f5d6b..448570c8a1 100644
--- a/engines/mohawk/myst.h
+++ b/engines/mohawk/myst.h
@@ -199,6 +199,8 @@ public:
void setResourceEnabled(uint16 resourceId, bool enable);
void redrawArea(uint16 var);
void redrawResource(MystResourceType8 *_resource);
+ void drawResourceImages();
+ void drawCardBackground();
void setCacheState(bool state) { _cache.enabled = state; }
bool getCacheState(void) { return _cache.enabled; }
@@ -234,7 +236,6 @@ private:
void drawResourceRects();
void checkCurrentResource();
int16 _curResource;
- void drawResourceImages();
uint16 _cursorHintCount;
MystCursorHint *_cursorHints;
diff --git a/engines/mohawk/myst_areas.h b/engines/mohawk/myst_areas.h
index dab35871a2..af889f1f90 100644
--- a/engines/mohawk/myst_areas.h
+++ b/engines/mohawk/myst_areas.h
@@ -45,6 +45,7 @@ public:
virtual Common::Rect getRect() { return _rect; }
bool isEnabled();
void setEnabled(bool enabled);
+ bool isDrawSubimages() { return _flags & kMystSubimageEnableFlag; };
uint16 getDest() { return _dest; }
virtual uint16 getType8Var() { return 0xFFFF; }
bool unreachableZipDest();