diff options
author | Nipun Garg | 2019-06-21 06:18:39 +0530 |
---|---|---|
committer | Eugene Sandulenko | 2019-09-03 17:16:53 +0200 |
commit | 198e26e652200b462ac1be7bb3f2f2250c2c2dbd (patch) | |
tree | 6b441e4d2d3f764a2994bf4d26f1321dc79653a8 /engines | |
parent | 04ff0635f13c9234b80311329ec26543842077ca (diff) | |
download | scummvm-rg350-198e26e652200b462ac1be7bb3f2f2250c2c2dbd.tar.gz scummvm-rg350-198e26e652200b462ac1be7bb3f2f2250c2c2dbd.tar.bz2 scummvm-rg350-198e26e652200b462ac1be7bb3f2f2250c2c2dbd.zip |
HDB: Add removeBG/FGTileAnimation()
Diffstat (limited to 'engines')
-rw-r--r-- | engines/hdb/map-loader.cpp | 52 | ||||
-rw-r--r-- | engines/hdb/map-loader.h | 2 |
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); |