aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
authorTravis Howell2005-02-23 04:35:20 +0000
committerTravis Howell2005-02-23 04:35:20 +0000
commitf278d588f32ebe242bba13c2f94038806fc935fb (patch)
treeaffb2dedb33f7f64cd88c5ffdfcc352c2d5b8dd3 /scumm
parent22b8b3e8ebc2e42fae5bc575c13c675df35df45c (diff)
downloadscummvm-rg350-f278d588f32ebe242bba13c2f94038806fc935fb.tar.gz
scummvm-rg350-f278d588f32ebe242bba13c2f94038806fc935fb.tar.bz2
scummvm-rg350-f278d588f32ebe242bba13c2f94038806fc935fb.zip
Cleanup
svn-id: r16873
Diffstat (limited to 'scumm')
-rw-r--r--scumm/intern.h3
-rw-r--r--scumm/script_v100he.cpp2
-rw-r--r--scumm/script_v90he.cpp2
-rw-r--r--scumm/sprite_he.cpp174
4 files changed, 72 insertions, 109 deletions
diff --git a/scumm/intern.h b/scumm/intern.h
index 8b609f5ce8..fb116b4ab7 100644
--- a/scumm/intern.h
+++ b/scumm/intern.h
@@ -939,6 +939,7 @@ protected:
void spriteInfoSet_setClassFlags(int spriteId, int value1, int value2);
void spriteInfoSet_resetClassFlags(int spriteId);
+ void redrawSpriteGroup(int spriteGroupId);
void spriteGroupSet_case0_0(int spriteGroupId, int value1, int value2);
void spriteGroupSet_case0_1(int spriteGroupId, int value);
void spriteGroupSet_case0_2(int spriteGroupId, int value);
@@ -957,9 +958,9 @@ protected:
void spriteGroupSet_case28(int spriteGroupId, int value1, int value2);
void spriteGroupSet_fields_0_4_8_C(int spriteGroupId, int value1, int value2, int value3, int value4);
void spriteGroupSet_case56(int spriteGroupId);
- void spriteGroupSet_case180(int spriteGroupId);
void spritesAllocTables(int numSprites, int numGroups, int numMaxSprites);
+ void spritesResetGroup(int spriteGroupId);
void spritesResetTables(bool refreshScreen);
void spriteGroupCheck(int spriteGroupId);
void spriteMarkIfInGroup(int spriteGroupId, uint32 flags);
diff --git a/scumm/script_v100he.cpp b/scumm/script_v100he.cpp
index 6c632d93e2..9fd175c2d9 100644
--- a/scumm/script_v100he.cpp
+++ b/scumm/script_v100he.cpp
@@ -945,7 +945,7 @@ void ScummEngine_v100he::o100_setSpriteGroupInfo() {
if (!_curSpriteGroupId)
break;
- spriteGroupSet_case180(_curSpriteGroupId);
+ spritesResetGroup(_curSpriteGroupId);
break;
case 54:
// dummy case
diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp
index a87328ffe9..109324a6c2 100644
--- a/scumm/script_v90he.cpp
+++ b/scumm/script_v90he.cpp
@@ -1507,7 +1507,7 @@ void ScummEngine_v90he::o90_setSpriteGroupInfo() {
if (!_curSpriteGroupId)
break;
- spriteGroupSet_case180(_curSpriteGroupId);
+ spritesResetGroup(_curSpriteGroupId);
break;
default:
error("o90_setSpriteGroupInfo: Unknown case %d", subOp);
diff --git a/scumm/sprite_he.cpp b/scumm/sprite_he.cpp
index 5ff7ff1f7f..0fabcfe392 100644
--- a/scumm/sprite_he.cpp
+++ b/scumm/sprite_he.cpp
@@ -594,6 +594,15 @@ void ScummEngine_v90he::spriteInfoSet_addImageToList(int spriteId, int imageNum,
//
// spriteGroupSet functions
//
+void ScummEngine_v90he::redrawSpriteGroup(int spriteGroupId) {
+ for (int i = 0; i < _numSpritesToProcess; ++i) {
+ SpriteInfo *spi = _activeSpritesTable[i];
+ if (spi->group_num == spriteGroupId) {
+ spi->flags |= kSF01 | kSFNeedRedraw;
+ }
+ }
+}
+
void ScummEngine_v90he::spriteGroupSet_case0_0(int spriteGroupId, int value1, int value2) {
checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
@@ -700,12 +709,7 @@ void ScummEngine_v90he::spriteGroupSet_case5_0(int spriteGroupId, int value) {
else
_spriteGroups[spriteGroupId].scaling = 0;
- for (int i = 0; i < _numSpritesToProcess; ++i) {
- SpriteInfo *spi = _activeSpritesTable[i];
- if (spi->group_num == spriteGroupId) {
- spi->flags |= kSF01 | kSFNeedRedraw;
- }
- }
+ redrawSpriteGroup(spriteGroupId);
}
void ScummEngine_v90he::spriteGroupSet_case5_1(int spriteGroupId, int value) {
@@ -722,12 +726,7 @@ void ScummEngine_v90he::spriteGroupSet_case5_1(int spriteGroupId, int value) {
else
_spriteGroups[spriteGroupId].scaling = 0;
- for (int i = 0; i < _numSpritesToProcess; ++i) {
- SpriteInfo *spi = _activeSpritesTable[i];
- if (spi->group_num == spriteGroupId) {
- spi->flags |= kSF01 | kSFNeedRedraw;
- }
- }
+ redrawSpriteGroup(spriteGroupId);
}
void ScummEngine_v90he::spriteGroupSet_case5_2(int spriteGroupId, int value) {
@@ -744,12 +743,7 @@ void ScummEngine_v90he::spriteGroupSet_case5_2(int spriteGroupId, int value) {
else
_spriteGroups[spriteGroupId].scaling = 0;
- for (int i = 0; i < _numSpritesToProcess; ++i) {
- SpriteInfo *spi = _activeSpritesTable[i];
- if (spi->group_num == spriteGroupId) {
- spi->flags |= kSF01 | kSFNeedRedraw;
- }
- }
+ redrawSpriteGroup(spriteGroupId);
}
void ScummEngine_v90he::spriteGroupSet_case5_3(int spriteGroupId, int value) {
@@ -766,12 +760,7 @@ void ScummEngine_v90he::spriteGroupSet_case5_3(int spriteGroupId, int value) {
else
_spriteGroups[spriteGroupId].scaling = 0;
- for (int i = 0; i < _numSpritesToProcess; ++i) {
- SpriteInfo *spi = _activeSpritesTable[i];
- if (spi->group_num == spriteGroupId) {
- spi->flags |= kSF01 | kSFNeedRedraw;
- }
- }
+ redrawSpriteGroup(spriteGroupId);
}
void ScummEngine_v90he::spriteGroupSet_field_10(int spriteGroupId, int value) {
@@ -782,12 +771,7 @@ void ScummEngine_v90he::spriteGroupSet_field_10(int spriteGroupId, int value) {
_spriteGroups[spriteGroupId].field_10 = value;
- for (int i = 0; i < _numSpritesToProcess; ++i) {
- SpriteInfo *spi = _activeSpritesTable[i];
- if (spi->group_num == spriteGroupId) {
- spi->flags |= kSF01 | kSFNeedRedraw;
- }
- }
+ redrawSpriteGroup(spriteGroupId);
}
void ScummEngine_v90he::spriteGroupSet_tx_ty(int spriteGroupId, int value1, int value2) {
@@ -796,12 +780,7 @@ void ScummEngine_v90he::spriteGroupSet_tx_ty(int spriteGroupId, int value1, int
_spriteGroups[spriteGroupId].tx += value1;
_spriteGroups[spriteGroupId].ty += value2;
- for (int i = 0; i < _numSpritesToProcess; ++i) {
- SpriteInfo *spi = _activeSpritesTable[i];
- if (spi->group_num == spriteGroupId) {
- spi->flags |= kSF01 | kSFNeedRedraw;
- }
- }
+ redrawSpriteGroup(spriteGroupId);
}
void ScummEngine_v90he::spriteGroupSet_case26(int spriteGroupId, int value) {
@@ -812,12 +791,7 @@ void ScummEngine_v90he::spriteGroupSet_case26(int spriteGroupId, int value) {
_spriteGroups[spriteGroupId].field_20 = value;
- for (int i = 0; i < _numSpritesToProcess; ++i) {
- SpriteInfo *spi = _activeSpritesTable[i];
- if (spi->group_num == spriteGroupId) {
- spi->flags |= kSF01 | kSFNeedRedraw;
- }
- }
+ redrawSpriteGroup(spriteGroupId);
}
void ScummEngine_v90he::spriteGroupSet_case28(int spriteGroupId, int value1, int value2) {
@@ -829,12 +803,7 @@ void ScummEngine_v90he::spriteGroupSet_case28(int spriteGroupId, int value1, int
_spriteGroups[spriteGroupId].tx = value1;
_spriteGroups[spriteGroupId].ty = value2;
- for (int i = 0; i < _numSpritesToProcess; ++i) {
- SpriteInfo *spi = _activeSpritesTable[i];
- if (spi->group_num == spriteGroupId) {
- spi->flags |= kSF01 | kSFNeedRedraw;
- }
- }
+ redrawSpriteGroup(spriteGroupId);
}
void ScummEngine_v90he::spriteGroupSet_fields_0_4_8_C(int spriteGroupId, int value1, int value2, int value3, int value4) {
@@ -846,12 +815,7 @@ void ScummEngine_v90he::spriteGroupSet_fields_0_4_8_C(int spriteGroupId, int val
_spriteGroups[spriteGroupId].field_8 = value3;
_spriteGroups[spriteGroupId].field_C = value4;
- for (int i = 0; i < _numSpritesToProcess; ++i) {
- SpriteInfo *spi = _activeSpritesTable[i];
- if (spi->group_num == spriteGroupId) {
- spi->flags |= kSF01 | kSFNeedRedraw;
- }
- }
+ redrawSpriteGroup(spriteGroupId);
}
void ScummEngine_v90he::spriteGroupSet_case56(int spriteGroupId) {
@@ -859,16 +823,7 @@ void ScummEngine_v90he::spriteGroupSet_case56(int spriteGroupId) {
_spriteGroups[spriteGroupId].flags &= ~(kSGF02);
- for (int i = 0; i < _numSpritesToProcess; ++i) {
- SpriteInfo *spi = _activeSpritesTable[i];
- if (spi->group_num == spriteGroupId) {
- spi->flags |= kSF01 | kSFNeedRedraw;
- }
- }
-}
-
-void ScummEngine_v90he::spriteGroupSet_case180(int spriteGroupId) {
- // TODO
+ redrawSpriteGroup(spriteGroupId);
}
void ScummEngine_v90he::spritesAllocTables(int numSprites, int numGroups, int numMaxSprites) {
@@ -883,56 +838,63 @@ void ScummEngine_v90he::spritesAllocTables(int numSprites, int numGroups, int nu
_imageListStack = (uint16 *)malloc((_varMaxSprites + 1) * sizeof(uint16));
}
-void ScummEngine_v90he::spritesResetTables(bool refreshScreen) {
+void ScummEngine_v90he::spritesResetGroup(int spriteGroupId) {
int i;
- for (i = 0; i < _varMaxSprites; ++i) {
- _imageListStack[i] = i;
- }
- memset(_spriteTable, 0, (_varNumSprites + 1) * sizeof(SpriteInfo));
- memset(_spriteGroups, 0, (_varNumSpriteGroups + 1) * sizeof(SpriteGroup));
- for (int curGrp = 1; curGrp < _varNumSpriteGroups; ++curGrp) {
- SpriteGroup *spg = &_spriteGroups[curGrp];
- checkRange(_varNumSpriteGroups, 1, curGrp, "Invalid sprite group %d");
- if (spg->field_10 != 0) {
- spg->field_10 = 0;
- spriteGroupCheck(curGrp);
- for (i = 0; i < _numSpritesToProcess; ++i) {
- SpriteInfo *spi = _activeSpritesTable[i];
- if (spi->group_num == curGrp) {
- spi->flags |= kSF01 | kSFNeedRedraw;
- }
+
+ SpriteGroup *spg = &_spriteGroups[spriteGroupId];
+ checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
+ if (spg->field_10 != 0) {
+ spg->field_10 = 0;
+ spriteGroupCheck(spriteGroupId);
+ for (i = 0; i < _numSpritesToProcess; ++i) {
+ SpriteInfo *spi = _activeSpritesTable[i];
+ if (spi->group_num == spriteGroupId) {
+ spi->flags |= kSF01 | kSFNeedRedraw;
}
}
- if (spg->tx != 0 || spg->ty != 0) {
- spg->tx = spg->ty = 0;
- spriteGroupCheck(curGrp);
- for (i = 0; i < _numSpritesToProcess; ++i) {
- SpriteInfo *spi = _activeSpritesTable[i];
- if (spi->group_num == curGrp) {
- spi->flags |= kSF01 | kSFNeedRedraw;
- }
+ }
+ if (spg->tx != 0 || spg->ty != 0) {
+ spg->tx = spg->ty = 0;
+ spriteGroupCheck(spriteGroupId);
+ for (i = 0; i < _numSpritesToProcess; ++i) {
+ SpriteInfo *spi = _activeSpritesTable[i];
+ if (spi->group_num == spriteGroupId) {
+ spi->flags |= kSF01 | kSFNeedRedraw;
}
}
- spg->flags &= ~kSGF01;
- spriteMarkIfInGroup(curGrp, kSF01 | kSFNeedRedraw);
- if (spg->field_20 != 0) {
- spriteGroupCheck(curGrp);
- for (i = 0; i < _numSpritesToProcess; ++i) {
- SpriteInfo *spi = _activeSpritesTable[i];
- if (spi->group_num == curGrp) {
- spi->flags |= kSF01 | kSFNeedRedraw;
- }
+ }
+ spg->flags &= ~kSGF01;
+ spriteMarkIfInGroup(spriteGroupId, kSF01 | kSFNeedRedraw);
+ if (spg->field_20 != 0) {
+ spriteGroupCheck(spriteGroupId);
+ for (i = 0; i < _numSpritesToProcess; ++i) {
+ SpriteInfo *spi = _activeSpritesTable[i];
+ if (spi->group_num == spriteGroupId) {
+ spi->flags |= kSF01 | kSFNeedRedraw;
}
}
- spriteGroupCheck(curGrp);
- spg->scaling = 0;
- spg->scale_x = 0x3F800000;
- spg->field_30 = 0;
- spg->field_34 = 0;
- spg->scale_y = 0x3F800000;
- spg->field_38 = 0;
- spg->field_3C = 0;
}
+ spriteGroupCheck(spriteGroupId);
+ spg->scaling = 0;
+ spg->scale_x = 0x3F800000;
+ spg->field_30 = 0;
+ spg->field_34 = 0;
+ spg->scale_y = 0x3F800000;
+ spg->field_38 = 0;
+ spg->field_3C = 0;
+}
+
+void ScummEngine_v90he::spritesResetTables(bool refreshScreen) {
+ int i;
+
+ for (i = 0; i < _varMaxSprites; ++i) {
+ _imageListStack[i] = i;
+ }
+ memset(_spriteTable, 0, (_varNumSprites + 1) * sizeof(SpriteInfo));
+ memset(_spriteGroups, 0, (_varNumSpriteGroups + 1) * sizeof(SpriteGroup));
+ for (int curGrp = 1; curGrp < _varNumSpriteGroups; ++curGrp)
+ spritesResetGroup(curGrp);
+
if (refreshScreen) {
gdi.copyVirtScreenBuffers(Common::Rect(_screenWidth, _screenHeight));
}