aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2005-02-23 05:09:14 +0000
committerTravis Howell2005-02-23 05:09:14 +0000
commit15b02f923217b302dc78a425a4885372c5908e59 (patch)
tree33112b70e40d4cfcf72fa90969a87b39f5873e77
parentf278d588f32ebe242bba13c2f94038806fc935fb (diff)
downloadscummvm-rg350-15b02f923217b302dc78a425a4885372c5908e59.tar.gz
scummvm-rg350-15b02f923217b302dc78a425a4885372c5908e59.tar.bz2
scummvm-rg350-15b02f923217b302dc78a425a4885372c5908e59.zip
Another sprite function.
svn-id: r16874
-rw-r--r--scumm/sprite_he.cpp24
1 files changed, 22 insertions, 2 deletions
diff --git a/scumm/sprite_he.cpp b/scumm/sprite_he.cpp
index 0fabcfe392..d05a6a10e0 100644
--- a/scumm/sprite_he.cpp
+++ b/scumm/sprite_he.cpp
@@ -220,10 +220,30 @@ void ScummEngine_v90he::spriteInfoGet_dx_dy(int spriteId, int32 &dx, int32 &dy)
// spriteGroupGet functions
//
int ScummEngine_v90he::spriteGroupGet_allocateGroupSpritesList(int spriteGroupId) {
+ int i, j, sprites = 0;
+
checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
- // TODO
- return 0;
+ for (i = 1; i < _varNumSprites; i++) {
+ if (_spriteTable[i].group_num == spriteGroupId)
+ sprites++;
+ }
+
+ if (!sprites)
+ return 0;
+
+ writeVar(0, 0);
+ defineArray(0, kDwordArray, 0, 0, 0, sprites);
+ writeArray(0, 0, 0, sprites);
+
+ i = _varNumSpriteGroups - 1;
+ while (i) {
+ if (_spriteTable[i].group_num == spriteGroupId)
+ writeArray(0, 0, i, j++);
+ i--;
+ }
+
+ return readVar(0);
}
int ScummEngine_v90he::spriteGroupGet_field_10(int spriteGroupId) {