aboutsummaryrefslogtreecommitdiff
path: root/engines/neverhood/sprite.cpp
diff options
context:
space:
mode:
authorjohndoe1232012-10-22 18:09:27 +0000
committerWillem Jan Palenstijn2013-05-08 20:47:34 +0200
commit1589e4fe7d01e668ee5d5d02684e073df1242ad4 (patch)
treec97beaff0d1265e9caeb9cd029d63a6551deb8ba /engines/neverhood/sprite.cpp
parentbf1371c9d49845d3aadab2b235208bf601ab3987 (diff)
downloadscummvm-rg350-1589e4fe7d01e668ee5d5d02684e073df1242ad4.tar.gz
scummvm-rg350-1589e4fe7d01e668ee5d5d02684e073df1242ad4.tar.bz2
scummvm-rg350-1589e4fe7d01e668ee5d5d02684e073df1242ad4.zip
NEVERHOOD: Add new method StaticSprite::loadSprite and use it instead of setting stuff "manually"
Diffstat (limited to 'engines/neverhood/sprite.cpp')
-rw-r--r--engines/neverhood/sprite.cpp72
1 files changed, 28 insertions, 44 deletions
diff --git a/engines/neverhood/sprite.cpp b/engines/neverhood/sprite.cpp
index 40b651e53b..d034783b03 100644
--- a/engines/neverhood/sprite.cpp
+++ b/engines/neverhood/sprite.cpp
@@ -120,42 +120,43 @@ StaticSprite::StaticSprite(NeverhoodEngine *vm, int objectPriority)
}
-StaticSprite::StaticSprite(NeverhoodEngine *vm, const char *filename, int surfacePriority, int16 x, int16 y, int16 width, int16 height)
+StaticSprite::StaticSprite(NeverhoodEngine *vm, uint32 fileHash, int surfacePriority, int16 x, int16 y)
: Sprite(vm, 0), _spriteResource(vm) {
- init(calcHash(filename), surfacePriority, x, y, width, height);
-}
-
-StaticSprite::StaticSprite(NeverhoodEngine *vm, uint32 fileHash, int surfacePriority, int16 x, int16 y, int16 width, int16 height)
- : Sprite(vm, 0), _spriteResource(vm) {
-
- init(fileHash, surfacePriority, x, y, width, height);
-}
-
-void StaticSprite::init(uint32 fileHash, int surfacePriority, int16 x, int16 y, int16 width, int16 height) {
-
_spriteResource.load2(fileHash);
-
- if (width == 0)
- width = _spriteResource.getDimensions().width;
-
- if (height == 0)
- height = _spriteResource.getDimensions().height;
-
- createSurface(surfacePriority, width, height);
-
+ createSurface(surfacePriority, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height);
_x = x == kDefPosition ? _spriteResource.getPosition().x : x;
_y = y == kDefPosition ? _spriteResource.getPosition().y : y;
-
- _drawOffset.set(0, 0, width, height);
-
+ _drawOffset.set(0, 0, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height);
_needRefresh = true;
+ updatePosition();
+}
- update();
-
+void StaticSprite::loadSprite(uint32 fileHash, uint flags, int surfacePriority, int16 x, int16 y) {
+ _spriteResource.load2(fileHash);
+ if (!_surface)
+ createSurface(surfacePriority, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height);
+ if (flags & kSLFDefDrawOffset)
+ _drawOffset.set(0, 0, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height);
+ else if (flags & kSLFCenteredDrawOffset)
+ _drawOffset.set(-(_spriteResource.getDimensions().width / 2), -(_spriteResource.getDimensions().height / 2),
+ _spriteResource.getDimensions().width, _spriteResource.getDimensions().height);
+ if (flags & kSLFDefPosition) {
+ _x = _spriteResource.getPosition().x;
+ _y = _spriteResource.getPosition().y;
+ } else if (flags & kSLFSetPosition) {
+ _x = x;
+ _y = y;
+ }
+ if (flags & kSLFDefCollisionBoundsOffset) {
+ _collisionBoundsOffset = _drawOffset;
+ updateBounds();
+ }
+ _needRefresh = true;
+ updatePosition();
}
-void StaticSprite::update() {
+void StaticSprite::updatePosition() {
if (!_surface)
return;
@@ -179,23 +180,6 @@ void StaticSprite::update() {
}
-void StaticSprite::load(uint32 fileHash, bool dimensions, bool position) {
-
- _spriteResource.load2(fileHash);
-
- if (dimensions) {
- _drawOffset.set(0, 0, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height);
- }
-
- if (position) {
- _x = _spriteResource.getPosition().x;
- _y = _spriteResource.getPosition().y;
- }
-
- _needRefresh = true;
-
-}
-
// AnimatedSprite
AnimatedSprite::AnimatedSprite(NeverhoodEngine *vm, int objectPriority)