aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNipun Garg2019-06-21 06:18:39 +0530
committerEugene Sandulenko2019-09-03 17:16:53 +0200
commit198e26e652200b462ac1be7bb3f2f2250c2c2dbd (patch)
tree6b441e4d2d3f764a2994bf4d26f1321dc79653a8
parent04ff0635f13c9234b80311329ec26543842077ca (diff)
downloadscummvm-rg350-198e26e652200b462ac1be7bb3f2f2250c2c2dbd.tar.gz
scummvm-rg350-198e26e652200b462ac1be7bb3f2f2250c2c2dbd.tar.bz2
scummvm-rg350-198e26e652200b462ac1be7bb3f2f2250c2c2dbd.zip
HDB: Add removeBG/FGTileAnimation()
-rw-r--r--engines/hdb/map-loader.cpp52
-rw-r--r--engines/hdb/map-loader.h2
2 files changed, 54 insertions, 0 deletions
diff --git a/engines/hdb/map-loader.cpp b/engines/hdb/map-loader.cpp
index 431ef6cfe7..c17a6f0c9e 100644
--- a/engines/hdb/map-loader.cpp
+++ b/engines/hdb/map-loader.cpp
@@ -688,6 +688,58 @@ void Map::addFGTileAnimation(int x, int y) {
}
}
+void Map::removeBGTileAnimation(int x, int y) {
+ int i = y * _width + x;
+
+ uint32 flags = g_hdb->_drawMan->getTile(_background[i])->_flags;
+
+ if (flags & kFlagAnimFast) {
+ for(Common::Array<uint32>::iterator it = _listBGAnimFast.begin(); it!=_listBGAnimFast.end(); it++)
+ if (i == (*it)) {
+ _listBGAnimFast.erase(it);
+ break;
+ }
+ } else if (flags & kFlagAnimSlow) {
+ for (Common::Array<uint32>::iterator it = _listBGAnimSlow.begin(); it != _listBGAnimSlow.end(); it++)
+ if (i == (*it)) {
+ _listBGAnimSlow.erase(it);
+ break;
+ }
+ } else if (flags & kFlagAnimMedium) {
+ for (Common::Array<uint32>::iterator it = _listBGAnimMedium.begin(); it != _listBGAnimMedium.end(); it++)
+ if (i == (*it)) {
+ _listBGAnimMedium.erase(it);
+ break;
+ }
+ }
+}
+
+void Map::removeFGTileAnimation(int x, int y) {
+ int i = y * _width + x;
+
+ uint32 flags = g_hdb->_drawMan->getTile(_foreground[i])->_flags;
+
+ if (flags & kFlagAnimFast) {
+ for(Common::Array<uint32>::iterator it = _listFGAnimFast.begin(); it!=_listFGAnimFast.end(); it++)
+ if (i == (*it)) {
+ _listFGAnimFast.erase(it);
+ break;
+ }
+ } else if (flags & kFlagAnimSlow) {
+ for (Common::Array<uint32>::iterator it = _listFGAnimSlow.begin(); it != _listFGAnimSlow.end(); it++)
+ if (i == (*it)) {
+ _listFGAnimSlow.erase(it);
+ break;
+ }
+ } else if (flags & kFlagAnimMedium) {
+ for (Common::Array<uint32>::iterator it = _listFGAnimMedium.begin(); it != _listFGAnimMedium.end(); it++)
+ if (i == (*it)) {
+ _listFGAnimMedium.erase(it);
+ break;
+ }
+ }
+}
+
void Map::getMapXY(int *x, int *y) {
*x = _mapX;
*y = _mapY;
diff --git a/engines/hdb/map-loader.h b/engines/hdb/map-loader.h
index 158b5f9131..9451b5371d 100644
--- a/engines/hdb/map-loader.h
+++ b/engines/hdb/map-loader.h
@@ -71,6 +71,8 @@ public:
void setMapFGTileIndex(int x, int y, int index);
void addBGTileAnimation(int x, int y);
void addFGTileAnimation(int x, int y);
+ void removeBGTileAnimation(int x, int y);
+ void removeFGTileAnimation(int x, int y);
void getMapXY(int *x, int *y);
void setMapXY(int x, int y);