aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorLe Philousophe2019-03-10 00:49:56 +0100
committerEugene Sandulenko2019-06-01 22:43:48 +0200
commitd655fb5530e2a6ffc23d3a8c3d6009e02eec8fcc (patch)
tree5b058d20bc74fd1c0dfa482cb6077bd7f15d92f9 /engines
parent28702028a23f5d8063dee788931f6e696b0528eb (diff)
downloadscummvm-rg350-d655fb5530e2a6ffc23d3a8c3d6009e02eec8fcc.tar.gz
scummvm-rg350-d655fb5530e2a6ffc23d3a8c3d6009e02eec8fcc.tar.bz2
scummvm-rg350-d655fb5530e2a6ffc23d3a8c3d6009e02eec8fcc.zip
CRYOMNI3D: Add function to change sprite color
Diffstat (limited to 'engines')
-rw-r--r--engines/cryomni3d/sprites.cpp12
-rw-r--r--engines/cryomni3d/sprites.h2
2 files changed, 14 insertions, 0 deletions
diff --git a/engines/cryomni3d/sprites.cpp b/engines/cryomni3d/sprites.cpp
index b1c5f95b0e..df09afb24f 100644
--- a/engines/cryomni3d/sprites.cpp
+++ b/engines/cryomni3d/sprites.cpp
@@ -146,6 +146,18 @@ void Sprites::replaceSprite(unsigned int oldSpriteId, unsigned int newSpriteId)
_cursors[oldSpriteId]->refCnt++;
}
+void Sprites::replaceSpriteColor(unsigned int spriteId, byte currentColor, byte newColor) {
+ MAP_ID(spriteId);
+
+ byte *data = _cursors[spriteId]->_data;
+ unsigned int size = _cursors[spriteId]->_width * _cursors[spriteId]->_height;
+ for (; size > 0; size--, data++) {
+ if (*data == currentColor) {
+ *data = newColor;
+ }
+ }
+}
+
unsigned int Sprites::getSpritesCount() const {
if (_map) {
return _map->size();
diff --git a/engines/cryomni3d/sprites.h b/engines/cryomni3d/sprites.h
index 5721ea8532..bd4a8673db 100644
--- a/engines/cryomni3d/sprites.h
+++ b/engines/cryomni3d/sprites.h
@@ -52,6 +52,8 @@ public:
unsigned int getSpritesCount() const;
+ void replaceSpriteColor(unsigned int spriteId, byte currentColor, byte newColor);
+
const Graphics::Surface &getSurface(unsigned int spriteId) const;
const Graphics::Cursor &getCursor(unsigned int spriteId) const;