[Scummvm-cvs-logs] CVS: scummvm/saga puzzle.cpp,1.7,1.8 sprite.cpp,1.54,1.55 sprite.h,1.18,1.19
Torbjörn Andersson
eriktorbjorn at users.sourceforge.net
Fri Jul 8 09:44:10 CEST 2005
- Previous message: [Scummvm-cvs-logs] CVS: tools descumm6.cpp,1.188,1.189
- Next message: [Scummvm-cvs-logs] CVS: scummvm/saga actor.cpp,1.151,1.152 actor.h,1.82,1.83 events.cpp,1.54,1.55 game.cpp,1.72,1.73 gfx.cpp,1.51,1.52 gfx.h,1.28,1.29 interface.cpp,1.111,1.112 isomap.cpp,1.53,1.54 puzzle.cpp,1.8,1.9 saga.cpp,1.118,1.119 saga.h,1.101,1.102 scene.cpp,1.116,1.117 scene.h,1.58,1.59 sfuncs.cpp,1.134,1.135 sprite.cpp,1.55,1.56 sprite.h,1.19,1.20 transitions.cpp,1.13,1.14
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/saga
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15965
Modified Files:
puzzle.cpp sprite.cpp sprite.h
Log Message:
Extended the sprite draw() functions so that a clip rect can be specified,
and used that to clip the puzzle piece being moved around to avoid
graphics glitches.
Index: puzzle.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/puzzle.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- puzzle.cpp 15 Jun 2005 19:26:31 -0000 1.7
+++ puzzle.cpp 8 Jul 2005 16:43:36 -0000 1.8
@@ -275,9 +275,14 @@
void Puzzle::drawCurrentPiece() {
ActorData *puzzle = _vm->_actor->getActor(_vm->_actor->actorIndexToId(ITE_ACTOR_PUZZLE));
SURFACE *backBuffer = _vm->_gfx->getBackBuffer();
+ SCENE_BGINFO bg_info;
+
+ _vm->_scene->getBGInfo(&bg_info);
+
+ Rect clip(bg_info.bg_x, bg_info.bg_y, bg_info.bg_x + bg_info.bg_w, bg_info.bg_y + bg_info.bg_h);
_vm->_sprite->draw(backBuffer, puzzle->spriteList, _puzzlePiece,
- Point(_pieceInfo[_puzzlePiece].curX, _pieceInfo[_puzzlePiece].curY), 256);
+ Point(_pieceInfo[_puzzlePiece].curX, _pieceInfo[_puzzlePiece].curY), 256, &clip);
}
void Puzzle::movePiece(Point mousePt) {
Index: sprite.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/sprite.cpp,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -d -r1.54 -r1.55
--- sprite.cpp 5 Jul 2005 16:58:36 -0000 1.54
+++ sprite.cpp 8 Jul 2005 16:43:36 -0000 1.55
@@ -217,17 +217,29 @@
}
}
-int Sprite::draw(SURFACE *ds, SpriteList &spriteList, int32 spriteNumber, const Point &screenCoord, int scale) {
+int Sprite::draw(SURFACE *ds, SpriteList &spriteList, int32 spriteNumber, const Point &screenCoord, int scale, Rect *clipOverride) {
const byte *spriteBuffer;
int width;
int height;
int xAlign;
int yAlign;
Point spritePointer;
- Rect clip(_vm->getDisplayWidth(),_vm->getDisplayHeight());
+ Rect clip;
assert(_initialized);
+ if (clipOverride) {
+ clip.left = clipOverride->left;
+ clip.right = clipOverride->right;
+ clip.top = clipOverride->top;
+ clip.bottom = clipOverride->bottom;
+ } else {
+ clip.left = 0;
+ clip.right = _vm->getDisplayWidth();
+ clip.top = 0;
+ clip.bottom = _vm->getDisplayHeight();
+ }
+
getScaledSpriteBuffer(spriteList, spriteNumber, scale, width, height, xAlign, yAlign, spriteBuffer);
spritePointer.x = screenCoord.x + xAlign;
@@ -237,17 +249,29 @@
return SUCCESS;
}
-int Sprite::draw(SURFACE *ds, SpriteList &spriteList, int32 spriteNumber, const Rect &screenRect, int scale) {
+int Sprite::draw(SURFACE *ds, SpriteList &spriteList, int32 spriteNumber, const Rect &screenRect, int scale, Rect *clipOverride) {
const byte *spriteBuffer;
int width;
int height;
int xAlign, spw;
int yAlign, sph;
Point spritePointer;
- Rect clip(_vm->getDisplayWidth(),_vm->getDisplayHeight());
+ Rect clip;
assert(_initialized);
+ if (clipOverride) {
+ clip.left = clipOverride->left;
+ clip.right = clipOverride->right;
+ clip.top = clipOverride->top;
+ clip.bottom = clipOverride->bottom;
+ } else {
+ clip.left = 0;
+ clip.right = _vm->getDisplayWidth();
+ clip.top = 0;
+ clip.bottom = _vm->getDisplayHeight();
+ }
+
getScaledSpriteBuffer(spriteList, spriteNumber, scale, width, height, xAlign, yAlign, spriteBuffer);
spw = (screenRect.width() - width) / 2;
sph = (screenRect.height() - height) / 2;
@@ -319,7 +343,6 @@
byte *mask_row_p;
int mask_z;
-
assert(_initialized);
if (!_vm->_scene->isBGMaskPresent()) {
Index: sprite.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/sprite.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- sprite.h 22 Apr 2005 14:11:04 -0000 1.18
+++ sprite.h 8 Jul 2005 16:43:36 -0000 1.19
@@ -60,18 +60,15 @@
}
};
-
class Sprite {
public:
SpriteList _mainSprites;
-
-
Sprite(SagaEngine *vm);
~Sprite(void);
int loadList(int resourceId, SpriteList &spriteList); // load or append spriteList
- int draw(SURFACE *ds, SpriteList &spriteList, int32 spriteNumber, const Point &screenCoord, int scale);
- int draw(SURFACE *ds, SpriteList &spriteList, int32 spriteNumber, const Rect &screenRect, int scale);
+ int draw(SURFACE *ds, SpriteList &spriteList, int32 spriteNumber, const Point &screenCoord, int scale, Rect *clipOverride = NULL);
+ int draw(SURFACE *ds, SpriteList &spriteList, int32 spriteNumber, const Rect &screenRect, int scale, Rect *clipOverride = NULL);
int drawOccluded(SURFACE *ds, SpriteList &spriteList, int spriteNumber, const Point &screenCoord, int scale, int depth);
bool hitTest(SpriteList &spriteList, int spriteNumber, const Point &screenCoord, int scale, const Point &testPoint);
void getScaledSpriteBuffer(SpriteList &spriteList, int spriteNumber, int scale, int &width, int &height, int &xAlign, int &yAlign, const byte *&buffer);
- Previous message: [Scummvm-cvs-logs] CVS: tools descumm6.cpp,1.188,1.189
- Next message: [Scummvm-cvs-logs] CVS: scummvm/saga actor.cpp,1.151,1.152 actor.h,1.82,1.83 events.cpp,1.54,1.55 game.cpp,1.72,1.73 gfx.cpp,1.51,1.52 gfx.h,1.28,1.29 interface.cpp,1.111,1.112 isomap.cpp,1.53,1.54 puzzle.cpp,1.8,1.9 saga.cpp,1.118,1.119 saga.h,1.101,1.102 scene.cpp,1.116,1.117 scene.h,1.58,1.59 sfuncs.cpp,1.134,1.135 sprite.cpp,1.55,1.56 sprite.h,1.19,1.20 transitions.cpp,1.13,1.14
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list