diff options
author | Le Philousophe | 2019-03-10 00:49:56 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2019-06-01 22:43:48 +0200 |
commit | d655fb5530e2a6ffc23d3a8c3d6009e02eec8fcc (patch) | |
tree | 5b058d20bc74fd1c0dfa482cb6077bd7f15d92f9 /engines/cryomni3d | |
parent | 28702028a23f5d8063dee788931f6e696b0528eb (diff) | |
download | scummvm-rg350-d655fb5530e2a6ffc23d3a8c3d6009e02eec8fcc.tar.gz scummvm-rg350-d655fb5530e2a6ffc23d3a8c3d6009e02eec8fcc.tar.bz2 scummvm-rg350-d655fb5530e2a6ffc23d3a8c3d6009e02eec8fcc.zip |
CRYOMNI3D: Add function to change sprite color
Diffstat (limited to 'engines/cryomni3d')
-rw-r--r-- | engines/cryomni3d/sprites.cpp | 12 | ||||
-rw-r--r-- | engines/cryomni3d/sprites.h | 2 |
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; |