aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/graphics/plane32.cpp
diff options
context:
space:
mode:
authorFilippos Karapetis2016-03-15 21:05:01 +0200
committerFilippos Karapetis2016-03-15 21:06:46 +0200
commitbe58e5bc308c7364d971039d54e357b1ee3ed4ea (patch)
tree55570529f377e0bc963a17f87a898e7a406688c8 /engines/sci/graphics/plane32.cpp
parentd61dd0f52601ba296678493f46b3cf5a6437190b (diff)
downloadscummvm-rg350-be58e5bc308c7364d971039d54e357b1ee3ed4ea.tar.gz
scummvm-rg350-be58e5bc308c7364d971039d54e357b1ee3ed4ea.tar.bz2
scummvm-rg350-be58e5bc308c7364d971039d54e357b1ee3ed4ea.zip
SCI32: More work on remapping
Still not working
Diffstat (limited to 'engines/sci/graphics/plane32.cpp')
-rw-r--r--engines/sci/graphics/plane32.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/engines/sci/graphics/plane32.cpp b/engines/sci/graphics/plane32.cpp
index b0197704ce..9e75379b58 100644
--- a/engines/sci/graphics/plane32.cpp
+++ b/engines/sci/graphics/plane32.cpp
@@ -27,6 +27,7 @@
#include "sci/graphics/frameout.h"
#include "sci/graphics/lists32.h"
#include "sci/graphics/plane32.h"
+#include "sci/graphics/remap.h"
#include "sci/graphics/screen.h"
#include "sci/graphics/screen_item32.h"
@@ -317,7 +318,7 @@ void Plane::calcLists(Plane &visiblePlane, const PlaneList &planeList, DrawList
vitem != nullptr &&
!vitem->_screenRect.isEmpty()
) {
- if (/* TODO: g_Remap_numActiveRemaps */ false) { // active remaps?
+ if (g_sci->_gfxRemap32->getRemapCount()) {
mergeToRectList(vitem->_screenRect, eraseList);
} else {
eraseList.add(vitem->_screenRect);
@@ -328,7 +329,7 @@ void Plane::calcLists(Plane &visiblePlane, const PlaneList &planeList, DrawList
item->calcRects(*this);
if(!item->_screenRect.isEmpty()) {
- if (/* TODO: g_Remap_numActiveRemaps */ false) { // active remaps?
+ if (g_sci->_gfxRemap32->getRemapCount()) {
drawList.add(item, item->_screenRect);
mergeToRectList(item->_screenRect, eraseList);
} else {
@@ -338,7 +339,7 @@ void Plane::calcLists(Plane &visiblePlane, const PlaneList &planeList, DrawList
} else if (item->_updated) {
// add old rect to erase list, new item to draw list
item->calcRects(*this);
- if (/* TODO: g_Remap_numActiveRemaps */ false) { // active remaps
+ if (g_sci->_gfxRemap32->getRemapCount()) {
// if item and vitem don't overlap, ...
if (item->_screenRect.isEmpty() ||
i >= visiblePlaneItemCount ||
@@ -452,7 +453,7 @@ void Plane::calcLists(Plane &visiblePlane, const PlaneList &planeList, DrawList
}
}
- if (/* TODO: g_Remap_numActiveRemaps == 0 */ true) { // no remaps active?
+ if (g_sci->_gfxRemap32->getRemapCount() == 0) { // no remaps active?
// Add all items that overlap with items in the drawlist and have higher
// priority.
@@ -811,6 +812,17 @@ void Plane::scrollScreenItems(const int16 deltaX, const int16 deltaY, const bool
}
}
+void Plane::remapMarkRedraw() {
+ for (ScreenItemList::const_iterator screenItemPtr = _screenItemList.begin(); screenItemPtr != _screenItemList.end(); ++screenItemPtr) {
+ if (*screenItemPtr != nullptr) {
+ ScreenItem &screenItem = **screenItemPtr;
+ if (screenItem.getCelObj()._remap && !screenItem._deleted && !screenItem._created) {
+ screenItem._updated = _screenItemList.size();
+ }
+ }
+ }
+}
+
#pragma mark -
#pragma mark PlaneList
void PlaneList::add(Plane *plane) {