aboutsummaryrefslogtreecommitdiff
path: root/saga/sprite.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'saga/sprite.cpp')
-rw-r--r--saga/sprite.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/saga/sprite.cpp b/saga/sprite.cpp
index d272ed791a..36ed2cefc3 100644
--- a/saga/sprite.cpp
+++ b/saga/sprite.cpp
@@ -237,6 +237,33 @@ int Sprite::draw(SURFACE *ds, SpriteList &spriteList, int32 spriteNumber, const
return SUCCESS;
}
+int Sprite::draw(SURFACE *ds, SpriteList &spriteList, int32 spriteNumber, const Rect &screenRect, int scale) {
+ const byte *spriteBuffer;
+ int width;
+ int height;
+ int xAlign, spw;
+ int yAlign, sph;
+ Point spritePointer;
+ Rect clip(_vm->getDisplayWidth(),_vm->getDisplayHeight());
+
+ assert(_initialized);
+
+ getScaledSpriteBuffer(spriteList, spriteNumber, scale, width, height, xAlign, yAlign, spriteBuffer);
+ spw = (screenRect.width() - width) / 2;
+ sph = (screenRect.height() - height) / 2;
+ if (spw < 0) {
+ spw = 0;
+ }
+ if (sph < 0) {
+ sph = 0;
+ }
+ spritePointer.x = screenRect.left + xAlign + spw;
+ spritePointer.y = screenRect.top + yAlign + sph;
+ drawClip(ds, clip, spritePointer, width, height, spriteBuffer);
+
+ return SUCCESS;
+}
+
bool Sprite::hitTest(SpriteList &spriteList, int spriteNumber, const Point &screenCoord, int scale, const Point &testPoint) {
const byte *spriteBuffer;
int i, j;