Add bits and pieces
More renames svn-id: r17325
This commit is contained in:
parent
879de392d1
commit
2eab3e51eb
7 changed files with 228 additions and 198 deletions
|
@ -743,11 +743,11 @@ protected:
|
||||||
|
|
||||||
void displayWizImage(WizImage *pwi);
|
void displayWizImage(WizImage *pwi);
|
||||||
void displayWizComplexImage(const WizParameters *params);
|
void displayWizComplexImage(const WizParameters *params);
|
||||||
void drawWizComplexPolygon(int resnum, int state, int po_x, int po_y, int arg14, int angle, int zoom, const Common::Rect *r);
|
void drawWizComplexPolygon(int resNum, int state, int po_x, int po_y, int xmapNum, int angle, int zoom, const Common::Rect *r, int flags, uint8 *dstPtr, int paletteNum);
|
||||||
void captureWizImage(int resnum, const Common::Rect& r, bool frontBuffer, int compType);
|
void captureWizImage(int resNum, const Common::Rect& r, bool frontBuffer, int compType);
|
||||||
void getWizImageDim(int resnum, int state, int32 &w, int32 &h);
|
void getWizImageDim(int resNum, int state, int32 &w, int32 &h);
|
||||||
uint8 *drawWizImage(int resNum, int state, int x1, int y1, int create, const Common::Rect *clipBox, int flags, uint8 *newResourcePtr, int paletteNum);
|
uint8 *drawWizImage(int resNum, int state, int x1, int y1, int xmapNum, const Common::Rect *clipBox, int flags, uint8 *dstPtr, int paletteNum);
|
||||||
void drawWizPolygon(int resnum, int state, int id, int flags);
|
void drawWizPolygon(int resNum, int state, int id, int flags);
|
||||||
void flushWizBuffer();
|
void flushWizBuffer();
|
||||||
|
|
||||||
virtual void decodeParseString(int a, int b);
|
virtual void decodeParseString(int a, int b);
|
||||||
|
|
|
@ -1293,7 +1293,7 @@ void ScummEngine_v100he::o100_wizImageOps() {
|
||||||
break;
|
break;
|
||||||
case 70:
|
case 70:
|
||||||
_wizParams.processFlags |= 4;
|
_wizParams.processFlags |= 4;
|
||||||
_wizParams.unk_15C = pop();
|
_wizParams.xmapNum = pop();
|
||||||
break;
|
break;
|
||||||
case 73:
|
case 73:
|
||||||
_wizParams.processFlags |= kWPFNewState;
|
_wizParams.processFlags |= kWPFNewState;
|
||||||
|
|
|
@ -626,7 +626,7 @@ void ScummEngine_v90he::o90_wizImageOps() {
|
||||||
break;
|
break;
|
||||||
case 52:
|
case 52:
|
||||||
_wizParams.processFlags |= 4;
|
_wizParams.processFlags |= 4;
|
||||||
_wizParams.unk_15C = pop();
|
_wizParams.xmapNum = pop();
|
||||||
break;
|
break;
|
||||||
case 85: // HE99+
|
case 85: // HE99+
|
||||||
_wizParams.processFlags |= 0x1000 | 0x100 | 0x2;
|
_wizParams.processFlags |= 0x1000 | 0x100 | 0x2;
|
||||||
|
|
|
@ -38,18 +38,18 @@ void ScummEngine_v90he::allocateArrays() {
|
||||||
void ScummEngine_v90he::getSpriteBounds(int spriteId, bool checkGroup, Common::Rect &bound) {
|
void ScummEngine_v90he::getSpriteBounds(int spriteId, bool checkGroup, Common::Rect &bound) {
|
||||||
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
||||||
int16 spr_wiz_x, spr_wiz_y;
|
int16 spr_wiz_x, spr_wiz_y;
|
||||||
int rot_angle, zoom, x1, y1;
|
int angle, zoom, x1, y1;
|
||||||
int32 w, h;
|
int32 w, h;
|
||||||
|
|
||||||
SpriteInfo *spi = &_spriteTable[spriteId];
|
SpriteInfo *spi = &_spriteTable[spriteId];
|
||||||
|
|
||||||
loadImgSpot(spi->res_id, spi->res_state, spr_wiz_x, spr_wiz_y);
|
loadImgSpot(spi->resId, spi->resState, spr_wiz_x, spr_wiz_y);
|
||||||
if (checkGroup && spi->group_num) {
|
if (checkGroup && spi->groupNum) {
|
||||||
SpriteGroup *spg = &_spriteGroups[spi->group_num];
|
SpriteGroup *spg = &_spriteGroups[spi->groupNum];
|
||||||
|
|
||||||
if (spg->scaling) {
|
if (spg->scaling) {
|
||||||
x1 = spi->tx * spg->scale_x - spr_wiz_x + spg->tx;
|
x1 = spi->tx * spg->scaleX - spr_wiz_x + spg->tx;
|
||||||
y1 = spi->ty * spg->scale_y - spr_wiz_y + spg->ty;
|
y1 = spi->ty * spg->scaleY - spr_wiz_y + spg->ty;
|
||||||
} else {
|
} else {
|
||||||
x1 = spi->tx - spr_wiz_x + spg->tx;
|
x1 = spi->tx - spr_wiz_x + spg->tx;
|
||||||
y1 = spi->ty - spr_wiz_y + spg->ty;
|
y1 = spi->ty - spr_wiz_y + spg->ty;
|
||||||
|
@ -59,10 +59,10 @@ void ScummEngine_v90he::getSpriteBounds(int spriteId, bool checkGroup, Common::R
|
||||||
y1 = spi->ty - spr_wiz_y;
|
y1 = spi->ty - spr_wiz_y;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (spi->res_id) {
|
if (spi->resId) {
|
||||||
rot_angle = spi->rot_angle;
|
angle = spi->angle;
|
||||||
zoom = spi->zoom;
|
zoom = spi->zoom;
|
||||||
getWizImageDim(spi->res_id, spi->res_state, w, h);
|
getWizImageDim(spi->resId, spi->resState, w, h);
|
||||||
if (!(spi->flags & (kSFZoomed | kSFRotated))) {
|
if (!(spi->flags & (kSFZoomed | kSFRotated))) {
|
||||||
bound.left = x1;
|
bound.left = x1;
|
||||||
bound.top = y1;
|
bound.top = y1;
|
||||||
|
@ -81,8 +81,8 @@ void ScummEngine_v90he::getSpriteBounds(int spriteId, bool checkGroup, Common::R
|
||||||
pts[j].y = pts[j].y * zoom / 256;
|
pts[j].y = pts[j].y * zoom / 256;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((spi->flags & kSFRotated) && rot_angle)
|
if ((spi->flags & kSFRotated) && angle)
|
||||||
_wiz.polygonRotatePoints(pts, 4, rot_angle);
|
_wiz.polygonRotatePoints(pts, 4, angle);
|
||||||
|
|
||||||
for (int j = 0; j < 4; ++j) {
|
for (int j = 0; j < 4; ++j) {
|
||||||
pts[j].x += x1;
|
pts[j].x += x1;
|
||||||
|
@ -109,10 +109,10 @@ int ScummEngine_v90he::findSpriteWithClassOf(int x_pos, int y_pos, int spriteGro
|
||||||
|
|
||||||
for (int i = (_numSpritesToProcess - 1); i >= 0; i--) {
|
for (int i = (_numSpritesToProcess - 1); i >= 0; i--) {
|
||||||
SpriteInfo *spi = _activeSpritesTable[i];
|
SpriteInfo *spi = _activeSpritesTable[i];
|
||||||
if (!spi->cur_res_id)
|
if (!spi->curResId)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (spriteGroupId && spi->group_num != spriteGroupId)
|
if (spriteGroupId && spi->groupNum != spriteGroupId)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
cond = true;
|
cond = true;
|
||||||
|
@ -121,10 +121,10 @@ int ScummEngine_v90he::findSpriteWithClassOf(int x_pos, int y_pos, int spriteGro
|
||||||
classId &= 0x7F;
|
classId &= 0x7F;
|
||||||
checkRange(32, 1, classId, "class %d out of range in statement");
|
checkRange(32, 1, classId, "class %d out of range in statement");
|
||||||
if (code & 0x80) {
|
if (code & 0x80) {
|
||||||
if (!(spi->class_flags & (1 << (classId - 1))))
|
if (!(spi->classFlags & (1 << (classId - 1))))
|
||||||
cond = 0;
|
cond = 0;
|
||||||
} else {
|
} else {
|
||||||
if ((spi->class_flags & (1 << (classId - 1))))
|
if ((spi->classFlags & (1 << (classId - 1))))
|
||||||
cond = 0;
|
cond = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -146,20 +146,20 @@ int ScummEngine_v90he::findSpriteWithClassOf(int x_pos, int y_pos, int spriteGro
|
||||||
continue;
|
continue;
|
||||||
return spi->id;
|
return spi->id;
|
||||||
} else {
|
} else {
|
||||||
int resId, state, rot_angle, zoom;
|
int resId, resState, angle, zoom;
|
||||||
int32 w, h;
|
int32 w, h;
|
||||||
|
|
||||||
resId = spi->cur_res_id;
|
resId = spi->curResId;
|
||||||
if (spi->field_80) {
|
if (spi->field_80) {
|
||||||
int16 x1, x2, y1, y2;
|
int16 x1, x2, y1, y2;
|
||||||
|
|
||||||
state = spi->cur_img_state / getWizImageStates(spi->field_80);
|
resState = spi->curImageState / getWizImageStates(spi->field_80);
|
||||||
|
|
||||||
x = x_pos - spi->pos.x;
|
x = x_pos - spi->pos.x;
|
||||||
y = y_pos - spi->pos.y;
|
y = y_pos - spi->pos.y;
|
||||||
|
|
||||||
loadImgSpot(spi->cur_res_id, state, x1, y1);
|
loadImgSpot(spi->curResId, resState, x1, y1);
|
||||||
loadImgSpot(spi->field_80, state, x2, y2);
|
loadImgSpot(spi->field_80, resState, x2, y2);
|
||||||
|
|
||||||
x += (x2 - x1);
|
x += (x2 - x1);
|
||||||
y += (y2 - y1);
|
y += (y2 - y1);
|
||||||
|
@ -179,28 +179,28 @@ int ScummEngine_v90he::findSpriteWithClassOf(int x_pos, int y_pos, int spriteGro
|
||||||
|
|
||||||
x = x_pos - spi->pos.x;
|
x = x_pos - spi->pos.x;
|
||||||
y = y_pos - spi->pos.y;
|
y = y_pos - spi->pos.y;
|
||||||
state = spi->cur_img_state;
|
resState = spi->curImageState;
|
||||||
}
|
}
|
||||||
|
|
||||||
rot_angle = spi->cur_rot_angle;
|
angle = spi->curAngle;
|
||||||
zoom = spi->cur_zoom;
|
zoom = spi->cur_zoom;
|
||||||
if ((spi->flags & kSFZoomed) || (spi->flags & kSFRotated)) {
|
if ((spi->flags & kSFZoomed) || (spi->flags & kSFRotated)) {
|
||||||
if (spi->flags & kSFZoomed && zoom) {
|
if (spi->flags & kSFZoomed && zoom) {
|
||||||
x = x * 256 / zoom;
|
x = x * 256 / zoom;
|
||||||
y = y * 256 / zoom;
|
y = y * 256 / zoom;
|
||||||
}
|
}
|
||||||
if (spi->flags & kSFRotated && rot_angle) {
|
if (spi->flags & kSFRotated && angle) {
|
||||||
rot_angle = (360 - rot_angle) % 360;
|
angle = (360 - angle) % 360;
|
||||||
Common::Point pts[1];
|
Common::Point pts[1];
|
||||||
_wiz.polygonRotatePoints(pts, 1, rot_angle);
|
_wiz.polygonRotatePoints(pts, 1, angle);
|
||||||
}
|
}
|
||||||
|
|
||||||
getWizImageDim(resId, state, w, h);
|
getWizImageDim(resId, resState, w, h);
|
||||||
x += w / 2;
|
x += w / 2;
|
||||||
y += h / 2;
|
y += h / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(isWizPixelNonTransparent(resId, state, x, y, spi->imgFlags))
|
if(isWizPixelNonTransparent(resId, resState, x, y, spi->imgFlags))
|
||||||
return spi->id;
|
return spi->id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -213,17 +213,17 @@ int ScummEngine_v90he::spriteInfoGet_classFlags(int spriteId, int num, int *args
|
||||||
int code, classId;
|
int code, classId;
|
||||||
|
|
||||||
if (num == 0)
|
if (num == 0)
|
||||||
return _spriteTable[spriteId].class_flags;
|
return _spriteTable[spriteId].classFlags;
|
||||||
|
|
||||||
for (int i = 0; i < num; i++) {
|
for (int i = 0; i < num; i++) {
|
||||||
code = classId = args[i];
|
code = classId = args[i];
|
||||||
classId &= 0x7F;
|
classId &= 0x7F;
|
||||||
checkRange(32, 1, classId, "class %d out of range in statement");
|
checkRange(32, 1, classId, "class %d out of range in statement");
|
||||||
if (code & 0x80) {
|
if (code & 0x80) {
|
||||||
if (!(_spriteTable[spriteId].class_flags & (1 << (classId - 1))))
|
if (!(_spriteTable[spriteId].classFlags & (1 << (classId - 1))))
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
if ((_spriteTable[spriteId].class_flags & (1 << (classId - 1))))
|
if ((_spriteTable[spriteId].classFlags & (1 << (classId - 1))))
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -282,19 +282,19 @@ int ScummEngine_v90he::spriteInfoGet_flagHasImage(int spriteId) {
|
||||||
int ScummEngine_v90he::spriteInfoGet_resId(int spriteId) {
|
int ScummEngine_v90he::spriteInfoGet_resId(int spriteId) {
|
||||||
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
||||||
|
|
||||||
return _spriteTable[spriteId].res_id;
|
return _spriteTable[spriteId].resId;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ScummEngine_v90he::spriteInfoGet_resState(int spriteId) {
|
int ScummEngine_v90he::spriteInfoGet_resState(int spriteId) {
|
||||||
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
||||||
|
|
||||||
return _spriteTable[spriteId].res_state;
|
return _spriteTable[spriteId].resState;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ScummEngine_v90he::spriteInfoGet_groupNum(int spriteId) {
|
int ScummEngine_v90he::spriteInfoGet_groupNum(int spriteId) {
|
||||||
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
||||||
|
|
||||||
return _spriteTable[spriteId].group_num;
|
return _spriteTable[spriteId].groupNum;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ScummEngine_v90he::spriteInfoGet_paletteNum(int spriteId) {
|
int ScummEngine_v90he::spriteInfoGet_paletteNum(int spriteId) {
|
||||||
|
@ -312,8 +312,8 @@ int ScummEngine_v90he::spriteInfoGet_zorderPriority(int spriteId) {
|
||||||
int ScummEngine_v90he::spriteInfoGet_grp_tx(int spriteId) {
|
int ScummEngine_v90he::spriteInfoGet_grp_tx(int spriteId) {
|
||||||
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
||||||
|
|
||||||
if (_spriteTable[spriteId].group_num)
|
if (_spriteTable[spriteId].groupNum)
|
||||||
return _spriteTable[spriteId].tx + _spriteGroups[_spriteTable[spriteId].group_num].tx;
|
return _spriteTable[spriteId].tx + _spriteGroups[_spriteTable[spriteId].groupNum].tx;
|
||||||
else
|
else
|
||||||
return _spriteTable[spriteId].tx;
|
return _spriteTable[spriteId].tx;
|
||||||
}
|
}
|
||||||
|
@ -321,8 +321,8 @@ int ScummEngine_v90he::spriteInfoGet_grp_tx(int spriteId) {
|
||||||
int ScummEngine_v90he::spriteInfoGet_grp_ty(int spriteId) {
|
int ScummEngine_v90he::spriteInfoGet_grp_ty(int spriteId) {
|
||||||
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
||||||
|
|
||||||
if (_spriteTable[spriteId].group_num)
|
if (_spriteTable[spriteId].groupNum)
|
||||||
return _spriteTable[spriteId].ty + _spriteGroups[_spriteTable[spriteId].group_num].ty;
|
return _spriteTable[spriteId].ty + _spriteGroups[_spriteTable[spriteId].groupNum].ty;
|
||||||
else
|
else
|
||||||
return _spriteTable[spriteId].ty;
|
return _spriteTable[spriteId].ty;
|
||||||
}
|
}
|
||||||
|
@ -336,7 +336,7 @@ int ScummEngine_v90he::spriteInfoGet_field_44(int spriteId) {
|
||||||
int ScummEngine_v90he::spriteInfoGet_field_54(int spriteId) {
|
int ScummEngine_v90he::spriteInfoGet_field_54(int spriteId) {
|
||||||
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
||||||
|
|
||||||
return _spriteTable[spriteId].field_54;
|
return _spriteTable[spriteId].xmapNum;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ScummEngine_v90he::spriteInfoGet_wizSize(int spriteId) {
|
int ScummEngine_v90he::spriteInfoGet_wizSize(int spriteId) {
|
||||||
|
@ -381,8 +381,8 @@ int ScummEngine_v90he::spriteInfoGet_field_88(int spriteId, int type) {
|
||||||
void ScummEngine_v90he::getSpriteImageDim(int spriteId, int32 &w, int32 &h) {
|
void ScummEngine_v90he::getSpriteImageDim(int spriteId, int32 &w, int32 &h) {
|
||||||
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
||||||
|
|
||||||
if (_spriteTable[spriteId].res_id) {
|
if (_spriteTable[spriteId].resId) {
|
||||||
getWizImageDim(_spriteTable[spriteId].res_id, _spriteTable[spriteId].res_state, w, h);
|
getWizImageDim(_spriteTable[spriteId].resId, _spriteTable[spriteId].resState, w, h);
|
||||||
} else {
|
} else {
|
||||||
w = 0;
|
w = 0;
|
||||||
h = 0;
|
h = 0;
|
||||||
|
@ -412,7 +412,7 @@ int ScummEngine_v90he::spriteGroupGet_allocateGroupSpritesList(int spriteGroupId
|
||||||
checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
|
checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
|
||||||
|
|
||||||
for (i = 1; i < _varNumSprites; i++) {
|
for (i = 1; i < _varNumSprites; i++) {
|
||||||
if (_spriteTable[i].group_num == spriteGroupId)
|
if (_spriteTable[i].groupNum == spriteGroupId)
|
||||||
sprites++;
|
sprites++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -424,7 +424,7 @@ int ScummEngine_v90he::spriteGroupGet_allocateGroupSpritesList(int spriteGroupId
|
||||||
writeArray(0, 0, 0, sprites);
|
writeArray(0, 0, 0, sprites);
|
||||||
|
|
||||||
for (i = (_varNumSprites - 1); i > 0; i--) {
|
for (i = (_varNumSprites - 1); i > 0; i--) {
|
||||||
if (_spriteTable[i].group_num == spriteGroupId)
|
if (_spriteTable[i].groupNum == spriteGroupId)
|
||||||
writeArray(0, 0, ++j, i);
|
writeArray(0, 0, ++j, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -504,13 +504,13 @@ void ScummEngine_v90he::spriteInfoSet_field_80(int spriteId, int value) {
|
||||||
void ScummEngine_v90he::spriteInfoSet_resState(int spriteId, int state) {
|
void ScummEngine_v90he::spriteInfoSet_resState(int spriteId, int state) {
|
||||||
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
||||||
|
|
||||||
if (_spriteTable[spriteId].res_id) {
|
if (_spriteTable[spriteId].resId) {
|
||||||
int res_wiz_states = _spriteTable[spriteId].res_wiz_states - 1;
|
int res_wiz_states = _spriteTable[spriteId].res_wiz_states - 1;
|
||||||
state = MAX(0, state);
|
state = MAX(0, state);
|
||||||
state = MIN(state, res_wiz_states);
|
state = MIN(state, res_wiz_states);
|
||||||
|
|
||||||
if (_spriteTable[spriteId].res_state != state) {
|
if (_spriteTable[spriteId].resState != state) {
|
||||||
_spriteTable[spriteId].res_state = state;
|
_spriteTable[spriteId].resState = state;
|
||||||
_spriteTable[spriteId].flags |= kSFChanged | kSFNeedRedraw;
|
_spriteTable[spriteId].flags |= kSFChanged | kSFNeedRedraw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -530,7 +530,7 @@ void ScummEngine_v90he::spriteInfoSet_groupNum(int spriteId, int value) {
|
||||||
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
||||||
checkRange(_varNumSpriteGroups, 0, value, "Invalid sprite group %d");
|
checkRange(_varNumSpriteGroups, 0, value, "Invalid sprite group %d");
|
||||||
|
|
||||||
_spriteTable[spriteId].group_num = value;
|
_spriteTable[spriteId].groupNum = value;
|
||||||
_spriteTable[spriteId].flags |= kSFChanged | kSFNeedRedraw;
|
_spriteTable[spriteId].flags |= kSFChanged | kSFNeedRedraw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -544,8 +544,8 @@ void ScummEngine_v90he::spriteInfoSet_dx_dy(int spriteId, int value1, int value2
|
||||||
void ScummEngine_v90he::spriteInfoSet_field_54(int spriteId, int value) {
|
void ScummEngine_v90he::spriteInfoSet_field_54(int spriteId, int value) {
|
||||||
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
||||||
|
|
||||||
_spriteTable[spriteId].field_54 = value;
|
_spriteTable[spriteId].xmapNum = value;
|
||||||
if (_spriteTable[spriteId].res_id)
|
if (_spriteTable[spriteId].resId)
|
||||||
_spriteTable[spriteId].flags |= kSFChanged | kSFNeedRedraw;
|
_spriteTable[spriteId].flags |= kSFChanged | kSFNeedRedraw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -579,7 +579,7 @@ void ScummEngine_v90he::spriteInfoSet_zoom(int spriteId, int value) {
|
||||||
if (_spriteTable[spriteId].zoom != value) {
|
if (_spriteTable[spriteId].zoom != value) {
|
||||||
_spriteTable[spriteId].zoom = value;
|
_spriteTable[spriteId].zoom = value;
|
||||||
|
|
||||||
if (_spriteTable[spriteId].res_id)
|
if (_spriteTable[spriteId].resId)
|
||||||
_spriteTable[spriteId].flags |= kSFChanged | kSFNeedRedraw;
|
_spriteTable[spriteId].flags |= kSFChanged | kSFNeedRedraw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -589,10 +589,10 @@ void ScummEngine_v90he::spriteInfoSet_rotAngle(int spriteId, int value) {
|
||||||
|
|
||||||
_spriteTable[spriteId].flags |= kSFRotated;
|
_spriteTable[spriteId].flags |= kSFRotated;
|
||||||
|
|
||||||
if (_spriteTable[spriteId].rot_angle != value) {
|
if (_spriteTable[spriteId].angle != value) {
|
||||||
_spriteTable[spriteId].rot_angle = value;
|
_spriteTable[spriteId].angle = value;
|
||||||
|
|
||||||
if (_spriteTable[spriteId].res_id)
|
if (_spriteTable[spriteId].resId)
|
||||||
_spriteTable[spriteId].flags |= kSFChanged | kSFNeedRedraw;
|
_spriteTable[spriteId].flags |= kSFChanged | kSFNeedRedraw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -606,7 +606,7 @@ void ScummEngine_v90he::spriteInfoSet_flagDoubleBuffered(int spriteId, int value
|
||||||
else
|
else
|
||||||
_spriteTable[spriteId].flags &= ~kSFDoubleBuffered;
|
_spriteTable[spriteId].flags &= ~kSFDoubleBuffered;
|
||||||
|
|
||||||
if (_spriteTable[spriteId].res_id && _spriteTable[spriteId].flags != oldFlags)
|
if (_spriteTable[spriteId].resId && _spriteTable[spriteId].flags != oldFlags)
|
||||||
_spriteTable[spriteId].flags |= kSFChanged | kSFNeedRedraw;
|
_spriteTable[spriteId].flags |= kSFChanged | kSFNeedRedraw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -619,7 +619,7 @@ void ScummEngine_v90he::spriteInfoSet_flagYFlipped(int spriteId, int value) {
|
||||||
else
|
else
|
||||||
_spriteTable[spriteId].flags &= ~kSFYFlipped;
|
_spriteTable[spriteId].flags &= ~kSFYFlipped;
|
||||||
|
|
||||||
if (_spriteTable[spriteId].res_id && _spriteTable[spriteId].flags != oldFlags)
|
if (_spriteTable[spriteId].resId && _spriteTable[spriteId].flags != oldFlags)
|
||||||
_spriteTable[spriteId].flags |= kSFChanged | kSFNeedRedraw;
|
_spriteTable[spriteId].flags |= kSFChanged | kSFNeedRedraw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -632,7 +632,7 @@ void ScummEngine_v90he::spriteInfoSet_flagXFlipped(int spriteId, int value) {
|
||||||
else
|
else
|
||||||
_spriteTable[spriteId].flags &= ~kSFXFlipped;
|
_spriteTable[spriteId].flags &= ~kSFXFlipped;
|
||||||
|
|
||||||
if (_spriteTable[spriteId].res_id && _spriteTable[spriteId].flags != oldFlags)
|
if (_spriteTable[spriteId].resId && _spriteTable[spriteId].flags != oldFlags)
|
||||||
_spriteTable[spriteId].flags |= kSFChanged | kSFNeedRedraw;
|
_spriteTable[spriteId].flags |= kSFChanged | kSFNeedRedraw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -654,7 +654,7 @@ void ScummEngine_v90he::spriteInfoSet_flagNeedPaletteRemap(int spriteId, int val
|
||||||
else
|
else
|
||||||
_spriteTable[spriteId].flags &= ~kSFNeedPaletteRemap;
|
_spriteTable[spriteId].flags &= ~kSFNeedPaletteRemap;
|
||||||
|
|
||||||
if (_spriteTable[spriteId].res_id && _spriteTable[spriteId].flags != oldFlags)
|
if (_spriteTable[spriteId].resId && _spriteTable[spriteId].flags != oldFlags)
|
||||||
_spriteTable[spriteId].flags |= kSFChanged | kSFNeedRedraw;
|
_spriteTable[spriteId].flags |= kSFChanged | kSFNeedRedraw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -696,7 +696,7 @@ void ScummEngine_v90he::spriteInfoSet_delay(int spriteId, int value) {
|
||||||
void ScummEngine_v90he::spriteInfoSet_setClassFlags(int spriteId, int value) {
|
void ScummEngine_v90he::spriteInfoSet_setClassFlags(int spriteId, int value) {
|
||||||
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
||||||
|
|
||||||
_spriteTable[spriteId].class_flags = value;
|
_spriteTable[spriteId].classFlags = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScummEngine_v90he::spriteInfoSet_setClassFlag(int spriteId, int classId, int toggle) {
|
void ScummEngine_v90he::spriteInfoSet_setClassFlag(int spriteId, int classId, int toggle) {
|
||||||
|
@ -704,16 +704,16 @@ void ScummEngine_v90he::spriteInfoSet_setClassFlag(int spriteId, int classId, in
|
||||||
checkRange(32, 1, classId, "class %d out of range in statement");
|
checkRange(32, 1, classId, "class %d out of range in statement");
|
||||||
|
|
||||||
if (toggle) {
|
if (toggle) {
|
||||||
_spriteTable[spriteId].class_flags |= (1 << (classId - 1));
|
_spriteTable[spriteId].classFlags |= (1 << (classId - 1));
|
||||||
} else {
|
} else {
|
||||||
_spriteTable[spriteId].class_flags &= ~(1 << (classId - 1));
|
_spriteTable[spriteId].classFlags &= ~(1 << (classId - 1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScummEngine_v90he::spriteInfoSet_resetClassFlags(int spriteId) {
|
void ScummEngine_v90he::spriteInfoSet_resetClassFlags(int spriteId) {
|
||||||
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
||||||
|
|
||||||
_spriteTable[spriteId].class_flags = 0;
|
_spriteTable[spriteId].classFlags = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScummEngine_v90he::spriteInfoSet_field_88(int spriteId, int type, int value) {
|
void ScummEngine_v90he::spriteInfoSet_field_88(int spriteId, int type, int value) {
|
||||||
|
@ -728,13 +728,13 @@ void ScummEngine_v90he::spriteInfoSet_field_88(int spriteId, int type, int value
|
||||||
void ScummEngine_v90he::spriteInfoSet_resetSprite(int spriteId) {
|
void ScummEngine_v90he::spriteInfoSet_resetSprite(int spriteId) {
|
||||||
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
||||||
|
|
||||||
_spriteTable[spriteId].rot_angle = 0;
|
_spriteTable[spriteId].angle = 0;
|
||||||
_spriteTable[spriteId].zoom = 0;
|
_spriteTable[spriteId].zoom = 0;
|
||||||
|
|
||||||
int tmp = 0;
|
int tmp = 0;
|
||||||
spriteAddImageToList(spriteId, 1, &tmp);
|
spriteAddImageToList(spriteId, 1, &tmp);
|
||||||
|
|
||||||
_spriteTable[spriteId].field_54 = 0;
|
_spriteTable[spriteId].xmapNum = 0;
|
||||||
_spriteTable[spriteId].tx = 0;
|
_spriteTable[spriteId].tx = 0;
|
||||||
_spriteTable[spriteId].ty = 0;
|
_spriteTable[spriteId].ty = 0;
|
||||||
|
|
||||||
|
@ -743,10 +743,10 @@ void ScummEngine_v90he::spriteInfoSet_resetSprite(int spriteId) {
|
||||||
_spriteTable[spriteId].dx = 0;
|
_spriteTable[spriteId].dx = 0;
|
||||||
_spriteTable[spriteId].dy = 0;
|
_spriteTable[spriteId].dy = 0;
|
||||||
_spriteTable[spriteId].field_44 = 0;
|
_spriteTable[spriteId].field_44 = 0;
|
||||||
_spriteTable[spriteId].group_num = 0;
|
_spriteTable[spriteId].groupNum = 0;
|
||||||
_spriteTable[spriteId].delayAmount = 0;
|
_spriteTable[spriteId].delayAmount = 0;
|
||||||
_spriteTable[spriteId].delayCount = 0;
|
_spriteTable[spriteId].delayCount = 0;
|
||||||
_spriteTable[spriteId].class_flags = 0;
|
_spriteTable[spriteId].classFlags = 0;
|
||||||
_spriteTable[spriteId].paletteNum = 0;
|
_spriteTable[spriteId].paletteNum = 0;
|
||||||
_spriteTable[spriteId].field_7C = 0;
|
_spriteTable[spriteId].field_7C = 0;
|
||||||
_spriteTable[spriteId].field_80 = 0;
|
_spriteTable[spriteId].field_80 = 0;
|
||||||
|
@ -759,26 +759,26 @@ void ScummEngine_v90he::spriteAddImageToList(int spriteId, int imageNum, int *sp
|
||||||
|
|
||||||
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
|
||||||
|
|
||||||
origResId = _spriteTable[spriteId].res_id;
|
origResId = _spriteTable[spriteId].resId;
|
||||||
origResWizStates = _spriteTable[spriteId].res_wiz_states;
|
origResWizStates = _spriteTable[spriteId].res_wiz_states;
|
||||||
|
|
||||||
_spriteTable[spriteId].res_id = *spriteIdptr;
|
_spriteTable[spriteId].resId = *spriteIdptr;
|
||||||
_spriteTable[spriteId].field_74 = 0;
|
_spriteTable[spriteId].field_74 = 0;
|
||||||
_spriteTable[spriteId].res_state = 0;
|
_spriteTable[spriteId].resState = 0;
|
||||||
|
|
||||||
if (_spriteTable[spriteId].res_id) {
|
if (_spriteTable[spriteId].resId) {
|
||||||
_spriteTable[spriteId].res_wiz_states = getWizImageStates(_spriteTable[spriteId].res_id);
|
_spriteTable[spriteId].res_wiz_states = getWizImageStates(_spriteTable[spriteId].resId);
|
||||||
_spriteTable[spriteId].flags |= kSFActive | kSFDelayed | kSFMarkDirty | kSFBlitDirectly;
|
_spriteTable[spriteId].flags |= kSFActive | kSFDelayed | kSFMarkDirty | kSFBlitDirectly;
|
||||||
|
|
||||||
if (_spriteTable[spriteId].res_id != origResId || _spriteTable[spriteId].res_wiz_states != origResWizStates)
|
if (_spriteTable[spriteId].resId != origResId || _spriteTable[spriteId].res_wiz_states != origResWizStates)
|
||||||
_spriteTable[spriteId].flags |= kSFChanged | kSFNeedRedraw;
|
_spriteTable[spriteId].flags |= kSFChanged | kSFNeedRedraw;
|
||||||
} else {
|
} else {
|
||||||
if (_spriteTable[spriteId].flags & kSFImageless)
|
if (_spriteTable[spriteId].flags & kSFImageless)
|
||||||
_spriteTable[spriteId].flags = 0;
|
_spriteTable[spriteId].flags = 0;
|
||||||
else
|
else
|
||||||
_spriteTable[spriteId].flags = kSFChanged | kSFBlitDirectly;
|
_spriteTable[spriteId].flags = kSFChanged | kSFBlitDirectly;
|
||||||
_spriteTable[spriteId].cur_res_id = 0;
|
_spriteTable[spriteId].curResId = 0;
|
||||||
_spriteTable[spriteId].cur_img_state = 0;
|
_spriteTable[spriteId].curImageState = 0;
|
||||||
_spriteTable[spriteId].res_wiz_states = 0;
|
_spriteTable[spriteId].res_wiz_states = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -789,7 +789,7 @@ void ScummEngine_v90he::spriteAddImageToList(int spriteId, int imageNum, int *sp
|
||||||
void ScummEngine_v90he::redrawSpriteGroup(int spriteGroupId) {
|
void ScummEngine_v90he::redrawSpriteGroup(int spriteGroupId) {
|
||||||
for (int i = 0; i < _numSpritesToProcess; ++i) {
|
for (int i = 0; i < _numSpritesToProcess; ++i) {
|
||||||
SpriteInfo *spi = _activeSpritesTable[i];
|
SpriteInfo *spi = _activeSpritesTable[i];
|
||||||
if (spi->group_num == spriteGroupId) {
|
if (spi->groupNum == spriteGroupId) {
|
||||||
spi->flags |= kSFChanged | kSFNeedRedraw;
|
spi->flags |= kSFChanged | kSFNeedRedraw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -799,7 +799,7 @@ void ScummEngine_v90he::spriteGroupSet_case0_0(int spriteGroupId, int value1, in
|
||||||
checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
|
checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
|
||||||
|
|
||||||
for (int i = 1; i < _varNumSprites; i++) {
|
for (int i = 1; i < _varNumSprites; i++) {
|
||||||
if (_spriteTable[i].group_num == spriteGroupId) {
|
if (_spriteTable[i].groupNum == spriteGroupId) {
|
||||||
_spriteTable[i].tx += value1;
|
_spriteTable[i].tx += value1;
|
||||||
_spriteTable[i].ty += value2;
|
_spriteTable[i].ty += value2;
|
||||||
|
|
||||||
|
@ -813,7 +813,7 @@ void ScummEngine_v90he::spriteGroupSet_case0_1(int spriteGroupId, int value) {
|
||||||
checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
|
checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
|
||||||
|
|
||||||
for (int i = 1; i < _varNumSprites; i++) {
|
for (int i = 1; i < _varNumSprites; i++) {
|
||||||
if (_spriteTable[i].group_num == spriteGroupId)
|
if (_spriteTable[i].groupNum == spriteGroupId)
|
||||||
_spriteTable[i].zorderPriority = value;
|
_spriteTable[i].zorderPriority = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -822,8 +822,8 @@ void ScummEngine_v90he::spriteGroupSet_case0_2(int spriteGroupId, int value) {
|
||||||
checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
|
checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
|
||||||
|
|
||||||
for (int i = 1; i < _varNumSprites; i++) {
|
for (int i = 1; i < _varNumSprites; i++) {
|
||||||
if (_spriteTable[i].group_num == spriteGroupId) {
|
if (_spriteTable[i].groupNum == spriteGroupId) {
|
||||||
_spriteTable[i].group_num = value;
|
_spriteTable[i].groupNum = value;
|
||||||
_spriteTable[i].flags |= kSFChanged | kSFNeedRedraw;
|
_spriteTable[i].flags |= kSFChanged | kSFNeedRedraw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -833,7 +833,7 @@ void ScummEngine_v90he::spriteGroupSet_case0_3(int spriteGroupId, int value) {
|
||||||
checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
|
checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
|
||||||
|
|
||||||
for (int i = 1; i < _varNumSprites; i++) {
|
for (int i = 1; i < _varNumSprites; i++) {
|
||||||
if (_spriteTable[i].group_num == spriteGroupId) {
|
if (_spriteTable[i].groupNum == spriteGroupId) {
|
||||||
if (value)
|
if (value)
|
||||||
_spriteTable[i].flags |= kSFMarkDirty | kSFBlitDirectly;
|
_spriteTable[i].flags |= kSFMarkDirty | kSFBlitDirectly;
|
||||||
else
|
else
|
||||||
|
@ -846,7 +846,7 @@ void ScummEngine_v90he::spriteGroupSet_case0_4(int spriteGroupId) {
|
||||||
checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
|
checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
|
||||||
|
|
||||||
for (int i = 1; i < _varNumSprites; i++) {
|
for (int i = 1; i < _varNumSprites; i++) {
|
||||||
if (_spriteTable[i].group_num == spriteGroupId)
|
if (_spriteTable[i].groupNum == spriteGroupId)
|
||||||
spriteInfoSet_resetSprite(i);
|
spriteInfoSet_resetSprite(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -855,7 +855,7 @@ void ScummEngine_v90he::spriteGroupSet_case0_5(int spriteGroupId, int value) {
|
||||||
checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
|
checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
|
||||||
|
|
||||||
for (int i = 1; i < _varNumSprites; i++) {
|
for (int i = 1; i < _varNumSprites; i++) {
|
||||||
if (_spriteTable[i].group_num == spriteGroupId) {
|
if (_spriteTable[i].groupNum == spriteGroupId) {
|
||||||
_spriteTable[i].delayAmount = value;
|
_spriteTable[i].delayAmount = value;
|
||||||
_spriteTable[i].delayCount = value;
|
_spriteTable[i].delayCount = value;
|
||||||
}
|
}
|
||||||
|
@ -866,7 +866,7 @@ void ScummEngine_v90he::spriteGroupSet_case0_6(int spriteGroupId, int value) {
|
||||||
checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
|
checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
|
||||||
|
|
||||||
for (int i = 1; i < _varNumSprites; i++) {
|
for (int i = 1; i < _varNumSprites; i++) {
|
||||||
if (_spriteTable[i].group_num == spriteGroupId) {
|
if (_spriteTable[i].groupNum == spriteGroupId) {
|
||||||
if (value)
|
if (value)
|
||||||
_spriteTable[i].flags |= kSFDelayed;
|
_spriteTable[i].flags |= kSFDelayed;
|
||||||
else
|
else
|
||||||
|
@ -879,9 +879,9 @@ void ScummEngine_v90he::spriteGroupSet_case0_7(int spriteGroupId, int value) {
|
||||||
checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
|
checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
|
||||||
|
|
||||||
for (int i = 1; i < _varNumSprites; i++) {
|
for (int i = 1; i < _varNumSprites; i++) {
|
||||||
if (_spriteTable[i].group_num == spriteGroupId) {
|
if (_spriteTable[i].groupNum == spriteGroupId) {
|
||||||
_spriteTable[i].field_54 = value;
|
_spriteTable[i].xmapNum = value;
|
||||||
if (_spriteTable[i].res_id)
|
if (_spriteTable[i].resId)
|
||||||
_spriteTable[i].flags |= kSFChanged | kSFNeedRedraw;
|
_spriteTable[i].flags |= kSFChanged | kSFNeedRedraw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -950,7 +950,7 @@ void ScummEngine_v90he::spriteGroupSet_scale_x_ratio_mul(int spriteGroupId, int
|
||||||
|
|
||||||
if (_spriteGroups[spriteGroupId].scale_x_ratio_mul != value) {
|
if (_spriteGroups[spriteGroupId].scale_x_ratio_mul != value) {
|
||||||
_spriteGroups[spriteGroupId].scale_x_ratio_mul = value;
|
_spriteGroups[spriteGroupId].scale_x_ratio_mul = value;
|
||||||
_spriteGroups[spriteGroupId].scale_x = _spriteGroups[spriteGroupId].scale_x_ratio_mul / _spriteGroups[spriteGroupId].scale_x_ratio_div;
|
_spriteGroups[spriteGroupId].scaleX = _spriteGroups[spriteGroupId].scale_x_ratio_mul / _spriteGroups[spriteGroupId].scale_x_ratio_div;
|
||||||
|
|
||||||
spriteGroupSet_scaling(spriteGroupId);
|
spriteGroupSet_scaling(spriteGroupId);
|
||||||
redrawSpriteGroup(spriteGroupId);
|
redrawSpriteGroup(spriteGroupId);
|
||||||
|
@ -965,7 +965,7 @@ void ScummEngine_v90he::spriteGroupSet_scale_x_ratio_div(int spriteGroupId, int
|
||||||
|
|
||||||
if (_spriteGroups[spriteGroupId].scale_x_ratio_div != value) {
|
if (_spriteGroups[spriteGroupId].scale_x_ratio_div != value) {
|
||||||
_spriteGroups[spriteGroupId].scale_x_ratio_div = value;
|
_spriteGroups[spriteGroupId].scale_x_ratio_div = value;
|
||||||
_spriteGroups[spriteGroupId].scale_x = _spriteGroups[spriteGroupId].scale_x_ratio_mul / _spriteGroups[spriteGroupId].scale_x_ratio_div;
|
_spriteGroups[spriteGroupId].scaleX = _spriteGroups[spriteGroupId].scale_x_ratio_mul / _spriteGroups[spriteGroupId].scale_x_ratio_div;
|
||||||
|
|
||||||
spriteGroupSet_scaling(spriteGroupId);
|
spriteGroupSet_scaling(spriteGroupId);
|
||||||
redrawSpriteGroup(spriteGroupId);
|
redrawSpriteGroup(spriteGroupId);
|
||||||
|
@ -977,7 +977,7 @@ void ScummEngine_v90he::spriteGroupSet_scale_y_ratio_mul(int spriteGroupId, int
|
||||||
|
|
||||||
if (_spriteGroups[spriteGroupId].scale_y_ratio_mul != value) {
|
if (_spriteGroups[spriteGroupId].scale_y_ratio_mul != value) {
|
||||||
_spriteGroups[spriteGroupId].scale_y_ratio_mul = value;
|
_spriteGroups[spriteGroupId].scale_y_ratio_mul = value;
|
||||||
_spriteGroups[spriteGroupId].scale_y = _spriteGroups[spriteGroupId].scale_y_ratio_mul / _spriteGroups[spriteGroupId].scale_y_ratio_div;
|
_spriteGroups[spriteGroupId].scaleY = _spriteGroups[spriteGroupId].scale_y_ratio_mul / _spriteGroups[spriteGroupId].scale_y_ratio_div;
|
||||||
|
|
||||||
spriteGroupSet_scaling(spriteGroupId);
|
spriteGroupSet_scaling(spriteGroupId);
|
||||||
redrawSpriteGroup(spriteGroupId);
|
redrawSpriteGroup(spriteGroupId);
|
||||||
|
@ -992,7 +992,7 @@ void ScummEngine_v90he::spriteGroupSet_scale_y_ratio_div(int spriteGroupId, int
|
||||||
|
|
||||||
if (_spriteGroups[spriteGroupId].scale_y_ratio_div != value) {
|
if (_spriteGroups[spriteGroupId].scale_y_ratio_div != value) {
|
||||||
_spriteGroups[spriteGroupId].scale_y_ratio_div = value;
|
_spriteGroups[spriteGroupId].scale_y_ratio_div = value;
|
||||||
_spriteGroups[spriteGroupId].scale_y = _spriteGroups[spriteGroupId].scale_y_ratio_mul / _spriteGroups[spriteGroupId].scale_y_ratio_div;
|
_spriteGroups[spriteGroupId].scaleY = _spriteGroups[spriteGroupId].scale_y_ratio_mul / _spriteGroups[spriteGroupId].scale_y_ratio_div;
|
||||||
|
|
||||||
spriteGroupSet_scaling(spriteGroupId);
|
spriteGroupSet_scaling(spriteGroupId);
|
||||||
redrawSpriteGroup(spriteGroupId);
|
redrawSpriteGroup(spriteGroupId);
|
||||||
|
@ -1028,10 +1028,10 @@ void ScummEngine_v90he::spritesResetGroup(int spriteGroupId) {
|
||||||
|
|
||||||
spg->dstResNum = 0;
|
spg->dstResNum = 0;
|
||||||
spg->scaling = 0;
|
spg->scaling = 0;
|
||||||
spg->scale_x = 0x3F800000;
|
spg->scaleX = 0x3F800000;
|
||||||
spg->scale_x_ratio_mul = 1;
|
spg->scale_x_ratio_mul = 1;
|
||||||
spg->scale_x_ratio_div = 1;
|
spg->scale_x_ratio_div = 1;
|
||||||
spg->scale_y = 0x3F800000;
|
spg->scaleY = 0x3F800000;
|
||||||
spg->scale_y_ratio_mul = 1;
|
spg->scale_y_ratio_mul = 1;
|
||||||
spg->scale_y_ratio_div = 1;
|
spg->scale_y_ratio_div = 1;
|
||||||
}
|
}
|
||||||
|
@ -1084,7 +1084,7 @@ void ScummEngine_v90he::spritesBlitToScreen() {
|
||||||
}
|
}
|
||||||
refreshScreen = true;
|
refreshScreen = true;
|
||||||
}
|
}
|
||||||
if (!(spi->flags & (kSFNeedRedraw | kSF30)) && spi->res_id)
|
if (!(spi->flags & (kSFNeedRedraw | kSF30)) && spi->resId)
|
||||||
spi->flags |= kSFNeedRedraw;
|
spi->flags |= kSFNeedRedraw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1137,11 +1137,11 @@ void ScummEngine_v90he::spritesUpdateImages() {
|
||||||
|
|
||||||
spi->delayCount = spi->delayAmount;
|
spi->delayCount = spi->delayAmount;
|
||||||
}
|
}
|
||||||
int state = spi->res_state;
|
int resState = spi->resState;
|
||||||
++spi->res_state;
|
++spi->resState;
|
||||||
if (spi->res_state >= spi->res_wiz_states) {
|
if (spi->resState >= spi->res_wiz_states) {
|
||||||
spi->res_state = 0;
|
spi->resState = 0;
|
||||||
if (state == 0)
|
if (resState == 0)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
spi->flags |= kSFChanged | kSFNeedRedraw;
|
spi->flags |= kSFChanged | kSFNeedRedraw;
|
||||||
|
@ -1180,8 +1180,8 @@ void ScummEngine_v90he::spritesSortActiveSprites() {
|
||||||
if (!(spi->flags & kSFImageless))
|
if (!(spi->flags & kSFImageless))
|
||||||
spi->flags |= kSFChanged;
|
spi->flags |= kSFChanged;
|
||||||
}
|
}
|
||||||
if (spi->group_num)
|
if (spi->groupNum)
|
||||||
groupZorder = _spriteGroups[spi->group_num].zorderPriority;
|
groupZorder = _spriteGroups[spi->groupNum].zorderPriority;
|
||||||
else
|
else
|
||||||
groupZorder = 0;
|
groupZorder = 0;
|
||||||
|
|
||||||
|
@ -1201,9 +1201,9 @@ void ScummEngine_v90he::spritesSortActiveSprites() {
|
||||||
void ScummEngine_v90he::spritesProcessWiz(bool arg) {
|
void ScummEngine_v90he::spritesProcessWiz(bool arg) {
|
||||||
int spr_flags;
|
int spr_flags;
|
||||||
int16 spr_wiz_x, spr_wiz_y;
|
int16 spr_wiz_x, spr_wiz_y;
|
||||||
int res_id, res_state;
|
int resId, resState;
|
||||||
Common::Rect *bboxPtr;
|
Common::Rect *bboxPtr;
|
||||||
int rot_angle, zoom;
|
int angle, zoom;
|
||||||
int32 w, h;
|
int32 w, h;
|
||||||
WizParameters wiz;
|
WizParameters wiz;
|
||||||
|
|
||||||
|
@ -1226,16 +1226,16 @@ void ScummEngine_v90he::spritesProcessWiz(bool arg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
spi->flags &= ~kSFNeedRedraw;
|
spi->flags &= ~kSFNeedRedraw;
|
||||||
res_id = spi->res_id;
|
resId = spi->resId;
|
||||||
res_state = spi->res_state;
|
resState = spi->resState;
|
||||||
loadImgSpot(spi->res_id, spi->res_state, spr_wiz_x, spr_wiz_y);
|
loadImgSpot(spi->resId, spi->resState, spr_wiz_x, spr_wiz_y);
|
||||||
|
|
||||||
if (spi->group_num) {
|
if (spi->groupNum) {
|
||||||
SpriteGroup *spg = &_spriteGroups[spi->group_num];
|
SpriteGroup *spg = &_spriteGroups[spi->groupNum];
|
||||||
|
|
||||||
if (spg->scaling) {
|
if (spg->scaling) {
|
||||||
wiz.img.x1 = spi->tx * spg->scale_x - spr_wiz_x + spg->tx;
|
wiz.img.x1 = spi->tx * spg->scaleX - spr_wiz_x + spg->tx;
|
||||||
wiz.img.y1 = spi->ty * spg->scale_y - spr_wiz_y + spg->ty;
|
wiz.img.y1 = spi->ty * spg->scaleY - spr_wiz_y + spg->ty;
|
||||||
} else {
|
} else {
|
||||||
wiz.img.x1 = spi->tx - spr_wiz_x + spg->tx;
|
wiz.img.x1 = spi->tx - spr_wiz_x + spg->tx;
|
||||||
wiz.img.y1 = spi->ty - spr_wiz_y + spg->ty;
|
wiz.img.y1 = spi->ty - spr_wiz_y + spg->ty;
|
||||||
|
@ -1245,18 +1245,18 @@ void ScummEngine_v90he::spritesProcessWiz(bool arg) {
|
||||||
wiz.img.y1 = spi->ty - spr_wiz_y;
|
wiz.img.y1 = spi->ty - spr_wiz_y;
|
||||||
}
|
}
|
||||||
|
|
||||||
spi->cur_img_state = wiz.img.state = res_state;
|
spi->curImageState = wiz.img.state = resState;
|
||||||
spi->cur_res_id = wiz.img.resNum = res_id;
|
spi->curResId = wiz.img.resNum = resId;
|
||||||
wiz.processFlags = kWPFNewState | kWPFSetPos;
|
wiz.processFlags = kWPFNewState | kWPFSetPos;
|
||||||
spi->cur_rot_angle = spi->rot_angle;
|
spi->curAngle = spi->angle;
|
||||||
spi->cur_zoom = spi->zoom;
|
spi->cur_zoom = spi->zoom;
|
||||||
spi->pos.x = wiz.img.x1;
|
spi->pos.x = wiz.img.x1;
|
||||||
spi->pos.y = wiz.img.y1;
|
spi->pos.y = wiz.img.y1;
|
||||||
bboxPtr = &spi->bbox;
|
bboxPtr = &spi->bbox;
|
||||||
if (res_id) {
|
if (resId) {
|
||||||
rot_angle = spi->rot_angle;
|
angle = spi->angle;
|
||||||
zoom = spi->zoom;
|
zoom = spi->zoom;
|
||||||
getWizImageDim(res_id, res_state, w, h);
|
getWizImageDim(resId, resState, w, h);
|
||||||
if (!(spi->flags & (kSFZoomed | kSFRotated))) {
|
if (!(spi->flags & (kSFZoomed | kSFRotated))) {
|
||||||
bboxPtr->left = wiz.img.x1;
|
bboxPtr->left = wiz.img.x1;
|
||||||
bboxPtr->top = wiz.img.y1;
|
bboxPtr->top = wiz.img.y1;
|
||||||
|
@ -1275,8 +1275,8 @@ void ScummEngine_v90he::spritesProcessWiz(bool arg) {
|
||||||
pts[j].y = pts[j].y * zoom / 256;
|
pts[j].y = pts[j].y * zoom / 256;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((spi->flags & kSFRotated) && rot_angle)
|
if ((spi->flags & kSFRotated) && angle)
|
||||||
_wiz.polygonRotatePoints(pts, 4, rot_angle);
|
_wiz.polygonRotatePoints(pts, 4, angle);
|
||||||
|
|
||||||
for (int j = 0; j < 4; ++j) {
|
for (int j = 0; j < 4; ++j) {
|
||||||
pts[j].x += wiz.img.x1;
|
pts[j].x += wiz.img.x1;
|
||||||
|
@ -1301,10 +1301,10 @@ void ScummEngine_v90he::spritesProcessWiz(bool arg) {
|
||||||
wiz.img.flags &= ~kWIFMarkBufferDirty;
|
wiz.img.flags &= ~kWIFMarkBufferDirty;
|
||||||
wiz.img.flags |= kWIFBlitToFrontVideoBuffer;
|
wiz.img.flags |= kWIFBlitToFrontVideoBuffer;
|
||||||
}
|
}
|
||||||
if (spi->field_54) {
|
if (spi->xmapNum) {
|
||||||
wiz.img.flags |= 0x200;
|
wiz.img.flags |= 0x200;
|
||||||
wiz.processFlags |= 4;
|
wiz.processFlags |= 4;
|
||||||
wiz.unk_15C = spi->field_54;
|
wiz.xmapNum = spi->xmapNum;
|
||||||
}
|
}
|
||||||
if (spr_flags & kSFNeedPaletteRemap)
|
if (spr_flags & kSFNeedPaletteRemap)
|
||||||
wiz.img.flags |= kWIFRemapPalette;
|
wiz.img.flags |= kWIFRemapPalette;
|
||||||
|
@ -1316,7 +1316,7 @@ void ScummEngine_v90he::spritesProcessWiz(bool arg) {
|
||||||
|
|
||||||
if (spr_flags & kSFRotated) {
|
if (spr_flags & kSFRotated) {
|
||||||
wiz.processFlags |= kWPFRotate;
|
wiz.processFlags |= kWPFRotate;
|
||||||
wiz.angle = spi->rot_angle;
|
wiz.angle = spi->angle;
|
||||||
}
|
}
|
||||||
if (spr_flags & kSFZoomed) {
|
if (spr_flags & kSFZoomed) {
|
||||||
wiz.processFlags |= kWPFZoom;
|
wiz.processFlags |= kWPFZoom;
|
||||||
|
@ -1324,9 +1324,9 @@ void ScummEngine_v90he::spritesProcessWiz(bool arg) {
|
||||||
}
|
}
|
||||||
spi->imgFlags = wiz.img.flags;
|
spi->imgFlags = wiz.img.flags;
|
||||||
|
|
||||||
if (spi->group_num && (_spriteGroups[spi->group_num].flags & kSGFClipBox)) {
|
if (spi->groupNum && (_spriteGroups[spi->groupNum].flags & kSGFClipBox)) {
|
||||||
if (spi->bbox.intersects(_spriteGroups[spi->group_num].bbox)) {
|
if (spi->bbox.intersects(_spriteGroups[spi->groupNum].bbox)) {
|
||||||
spi->bbox.clip(_spriteGroups[spi->group_num].bbox);
|
spi->bbox.clip(_spriteGroups[spi->groupNum].bbox);
|
||||||
wiz.processFlags |= kWPFClipBox;
|
wiz.processFlags |= kWPFClipBox;
|
||||||
wiz.box = spi->bbox;
|
wiz.box = spi->bbox;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1341,9 +1341,9 @@ void ScummEngine_v90he::spritesProcessWiz(bool arg) {
|
||||||
wiz.processFlags |= kWPFPaletteNum;
|
wiz.processFlags |= kWPFPaletteNum;
|
||||||
wiz.img.paletteNum = spi->paletteNum;
|
wiz.img.paletteNum = spi->paletteNum;
|
||||||
}
|
}
|
||||||
if (spi->res_id && spi->group_num && _spriteGroups[spi->group_num].dstResNum) {
|
if (spi->resId && spi->groupNum && _spriteGroups[spi->groupNum].dstResNum) {
|
||||||
wiz.processFlags |= kWPFDstResNum;
|
wiz.processFlags |= kWPFDstResNum;
|
||||||
wiz.dstResNum = _spriteGroups[spi->group_num].dstResNum;
|
wiz.dstResNum = _spriteGroups[spi->groupNum].dstResNum;
|
||||||
}
|
}
|
||||||
displayWizComplexImage(&wiz);
|
displayWizComplexImage(&wiz);
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,9 +50,9 @@ struct SpriteInfo {
|
||||||
int id;
|
int id;
|
||||||
int zorder;
|
int zorder;
|
||||||
int flags;
|
int flags;
|
||||||
int res_id;
|
int resId;
|
||||||
int res_state;
|
int resState;
|
||||||
int group_num;
|
int groupNum;
|
||||||
int paletteNum;
|
int paletteNum;
|
||||||
int zorderPriority;
|
int zorderPriority;
|
||||||
Common::Rect bbox;
|
Common::Rect bbox;
|
||||||
|
@ -62,22 +62,22 @@ struct SpriteInfo {
|
||||||
int tx;
|
int tx;
|
||||||
int ty;
|
int ty;
|
||||||
int field_44;
|
int field_44;
|
||||||
int cur_img_state;
|
int curImageState;
|
||||||
int cur_res_id;
|
int curResId;
|
||||||
int imglist_num;
|
int imglistNum;
|
||||||
int field_54;
|
int xmapNum;
|
||||||
int res_wiz_states;
|
int res_wiz_states;
|
||||||
int rot_angle;
|
int angle;
|
||||||
int zoom;
|
int zoom;
|
||||||
int delayCount;
|
int delayCount;
|
||||||
int cur_rot_angle;
|
int curAngle;
|
||||||
int cur_zoom;
|
int cur_zoom;
|
||||||
int imgFlags;
|
int imgFlags;
|
||||||
int field_74;
|
int field_74;
|
||||||
int delayAmount;
|
int delayAmount;
|
||||||
int field_7C;
|
int field_7C;
|
||||||
int field_80;
|
int field_80;
|
||||||
int class_flags;
|
int classFlags;
|
||||||
int field_88;
|
int field_88;
|
||||||
int field_8C;
|
int field_8C;
|
||||||
int field_90;
|
int field_90;
|
||||||
|
@ -91,8 +91,8 @@ struct SpriteGroup {
|
||||||
int ty;
|
int ty;
|
||||||
int dstResNum;
|
int dstResNum;
|
||||||
int scaling;
|
int scaling;
|
||||||
int scale_x;
|
int scaleX;
|
||||||
int scale_y;
|
int scaleY;
|
||||||
int scale_x_ratio_mul;
|
int scale_x_ratio_mul;
|
||||||
int scale_x_ratio_div;
|
int scale_x_ratio_div;
|
||||||
int scale_y_ratio_mul;
|
int scale_y_ratio_mul;
|
||||||
|
|
138
scumm/wiz_he.cpp
138
scumm/wiz_he.cpp
|
@ -850,8 +850,8 @@ void ScummEngine_v72he::captureWizImage(int resNum, const Common::Rect& r, bool
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScummEngine_v72he::getWizImageDim(int resnum, int state, int32 &w, int32 &h) {
|
void ScummEngine_v72he::getWizImageDim(int resNum, int state, int32 &w, int32 &h) {
|
||||||
uint8 *dataPtr = getResourceAddress(rtImage, resnum);
|
uint8 *dataPtr = getResourceAddress(rtImage, resNum);
|
||||||
assert(dataPtr);
|
assert(dataPtr);
|
||||||
uint8 *wizh = findWrappedBlock(MKID('WIZH'), dataPtr, state, 0);
|
uint8 *wizh = findWrappedBlock(MKID('WIZH'), dataPtr, state, 0);
|
||||||
assert(wizh);
|
assert(wizh);
|
||||||
|
@ -868,11 +868,11 @@ void ScummEngine_v72he::displayWizImage(WizImage *pwi) {
|
||||||
drawWizPolygon(pwi->resNum, pwi->state, pwi->x1, pwi->flags);
|
drawWizPolygon(pwi->resNum, pwi->state, pwi->x1, pwi->flags);
|
||||||
} else {
|
} else {
|
||||||
const Common::Rect *r = NULL;
|
const Common::Rect *r = NULL;
|
||||||
drawWizImage(pwi->resNum, pwi->state, pwi->x1, pwi->y1, pwi->unk, r, pwi->flags, NULL, 0);
|
drawWizImage(pwi->resNum, pwi->state, pwi->x1, pwi->y1, pwi->xmapNum, r, pwi->flags, NULL, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8 *ScummEngine_v72he::drawWizImage(int resNum, int state, int x1, int y1, int create, const Common::Rect *clipBox, int flags, uint8 *newResourcePtr, int paletteNum) {
|
uint8 *ScummEngine_v72he::drawWizImage(int resNum, int state, int x1, int y1, int xmapNum, const Common::Rect *clipBox, int flags, uint8 *dstPtr, int paletteNum) {
|
||||||
debug(1, "drawWizImage(%d, %d, %d, 0x%X)", resNum, x1, y1, flags);
|
debug(1, "drawWizImage(%d, %d, %d, 0x%X)", resNum, x1, y1, flags);
|
||||||
uint8 *dst = NULL;
|
uint8 *dst = NULL;
|
||||||
uint8 *dataPtr = getResourceAddress(rtImage, resNum);
|
uint8 *dataPtr = getResourceAddress(rtImage, resNum);
|
||||||
|
@ -916,10 +916,10 @@ uint8 *ScummEngine_v72he::drawWizImage(int resNum, int state, int x1, int y1, in
|
||||||
cw = width;
|
cw = width;
|
||||||
ch = height;
|
ch = height;
|
||||||
} else {
|
} else {
|
||||||
if (newResourcePtr) {
|
if (dstPtr) {
|
||||||
cw = READ_LE_UINT32(newResourcePtr + 0x4);
|
cw = READ_LE_UINT32(dstPtr + 0x4);
|
||||||
ch = READ_LE_UINT32(newResourcePtr + 0x8);
|
ch = READ_LE_UINT32(dstPtr + 0x8);
|
||||||
dst = newResourcePtr;
|
dst = dstPtr;
|
||||||
} else {
|
} else {
|
||||||
VirtScreen *pvs = &virtscr[kMainVirtScreen];
|
VirtScreen *pvs = &virtscr[kMainVirtScreen];
|
||||||
if (flags & kWIFMarkBufferDirty) {
|
if (flags & kWIFMarkBufferDirty) {
|
||||||
|
@ -968,7 +968,7 @@ uint8 *ScummEngine_v72he::drawWizImage(int resNum, int state, int x1, int y1, in
|
||||||
warning("unhandled wiz compression type %d", comp);
|
warning("unhandled wiz compression type %d", comp);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(flags & kWIFBlitToMemBuffer) && newResourcePtr == NULL) {
|
if (!(flags & kWIFBlitToMemBuffer) && dstPtr == NULL) {
|
||||||
Common::Rect rImage(x1, y1, x1 + width, y1 + height);
|
Common::Rect rImage(x1, y1, x1 + width, y1 + height);
|
||||||
if (rImage.intersects(rScreen)) {
|
if (rImage.intersects(rScreen)) {
|
||||||
rImage.clip(rScreen);
|
rImage.clip(rScreen);
|
||||||
|
@ -1050,7 +1050,65 @@ struct PolygonDrawData {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
void ScummEngine_v72he::drawWizPolygon(int resnum, int state, int id, int flags) {
|
void ScummEngine_v72he::drawWizComplexPolygon(int resNum, int state, int po_x, int po_y, int xmapNum, int angle, int zoom, const Common::Rect *r, int flags, uint8 *dstPtr, int paletteNum) {
|
||||||
|
Common::Point pts[4];
|
||||||
|
int32 w, h;
|
||||||
|
getWizImageDim(resNum, state, w, h);
|
||||||
|
|
||||||
|
pts[1].x = pts[2].x = w / 2 - 1;
|
||||||
|
pts[0].x = pts[0].y = pts[1].y = pts[3].x = -w / 2;
|
||||||
|
pts[2].y = pts[3].y = h / 2 - 1;
|
||||||
|
|
||||||
|
// transform points
|
||||||
|
if (zoom != 256) {
|
||||||
|
for (int i = 0; i < 4; ++i) {
|
||||||
|
pts[i].x = pts[i].x * zoom / 256;
|
||||||
|
pts[i].y = pts[i].y * zoom / 256;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (angle)
|
||||||
|
_wiz.polygonRotatePoints(pts, 4, angle);
|
||||||
|
|
||||||
|
for (int i = 0; i < 4; ++i) {
|
||||||
|
pts[i].x += po_x;
|
||||||
|
pts[i].y += po_y;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (zoom != 256) {
|
||||||
|
warning("drawWizComplexPolygon() zoom not implemented");
|
||||||
|
|
||||||
|
//drawWizPolygonTransform(resNum, state, pts, flags, VAR(VAR_WIZ_TCOLOR), r, dstPtr, paletteNum, xmapPtr);
|
||||||
|
} else {
|
||||||
|
warning("drawWizComplexPolygon() angle partially implemented");
|
||||||
|
|
||||||
|
Common::Rect bounds;
|
||||||
|
_wiz.polygonCalcBoundBox(pts, 4, bounds);
|
||||||
|
int x1 = bounds.left;
|
||||||
|
int y1 = bounds.top;
|
||||||
|
// XXX angle changed
|
||||||
|
switch(angle) {
|
||||||
|
case 270:
|
||||||
|
flags |= kWIFFlipX | kWIFFlipY;
|
||||||
|
//drawWizComplexPolygonHelper(resNum, state, x1, y1, r, flags, dstPtr, paletteNum);
|
||||||
|
break;
|
||||||
|
case 180:
|
||||||
|
flags |= kWIFFlipX | kWIFFlipY;
|
||||||
|
drawWizImage(resNum, state, x1, y1, xmapNum, r, flags, dstPtr, paletteNum);
|
||||||
|
break;
|
||||||
|
case 90:
|
||||||
|
//drawWizComplexPolygonHelper(resNum, state, x1, y1, r, flags, dstPtr, paletteNum);
|
||||||
|
break;
|
||||||
|
case 0:
|
||||||
|
drawWizImage(resNum, state, x1, y1, xmapNum, r, flags, dstPtr, paletteNum);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
//drawWizPolygonTransform(resNum, state, pts, flags, VAR(VAR_WIZ_TCOLOR), r, dstPtr, paletteNum, xmapPtr);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScummEngine_v72he::drawWizPolygon(int resNum, int state, int id, int flags) {
|
||||||
int i;
|
int i;
|
||||||
WizPolygon *wp = NULL;
|
WizPolygon *wp = NULL;
|
||||||
for (i = 0; i < ARRAYSIZE(_wiz._polygons); ++i) {
|
for (i = 0; i < ARRAYSIZE(_wiz._polygons); ++i) {
|
||||||
|
@ -1066,7 +1124,7 @@ void ScummEngine_v72he::drawWizPolygon(int resnum, int state, int id, int flags)
|
||||||
error("Invalid point count %d for Polygon %d", wp->numVerts, id);
|
error("Invalid point count %d for Polygon %d", wp->numVerts, id);
|
||||||
}
|
}
|
||||||
const Common::Rect *r = NULL;
|
const Common::Rect *r = NULL;
|
||||||
uint8 *srcWizBuf = drawWizImage(resnum, state, 0, 0, 0, r, kWIFBlitToMemBuffer, 0, 0);
|
uint8 *srcWizBuf = drawWizImage(resNum, state, 0, 0, 0, r, kWIFBlitToMemBuffer, 0, 0);
|
||||||
if (srcWizBuf) {
|
if (srcWizBuf) {
|
||||||
uint8 *dst;
|
uint8 *dst;
|
||||||
VirtScreen *pvs = &virtscr[kMainVirtScreen];
|
VirtScreen *pvs = &virtscr[kMainVirtScreen];
|
||||||
|
@ -1080,7 +1138,7 @@ void ScummEngine_v72he::drawWizPolygon(int resnum, int state, int id, int flags)
|
||||||
}
|
}
|
||||||
|
|
||||||
int32 wizW, wizH;
|
int32 wizW, wizH;
|
||||||
getWizImageDim(resnum, state, wizW, wizH);
|
getWizImageDim(resNum, state, wizW, wizH);
|
||||||
Common::Point bbox[4];
|
Common::Point bbox[4];
|
||||||
bbox[0].x = 0;
|
bbox[0].x = 0;
|
||||||
bbox[0].y = 0;
|
bbox[0].y = 0;
|
||||||
|
@ -1152,7 +1210,7 @@ void ScummEngine_v72he::flushWizBuffer() {
|
||||||
drawWizPolygon(pwi->resNum, pwi->state, pwi->x1, pwi->flags);
|
drawWizPolygon(pwi->resNum, pwi->state, pwi->x1, pwi->flags);
|
||||||
} else {
|
} else {
|
||||||
const Common::Rect *r = NULL;
|
const Common::Rect *r = NULL;
|
||||||
drawWizImage(pwi->resNum, pwi->state, pwi->x1, pwi->y1, pwi->unk, r, pwi->flags, NULL, 0);
|
drawWizImage(pwi->resNum, pwi->state, pwi->x1, pwi->y1, pwi->xmapNum, r, pwi->flags, NULL, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_wiz._imagesNum = 0;
|
_wiz._imagesNum = 0;
|
||||||
|
@ -1194,34 +1252,6 @@ void ScummEngine_v80he::loadWizCursor(int resId) {
|
||||||
free(cursor);
|
free(cursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScummEngine_v72he::drawWizComplexPolygon(int resnum, int state, int po_x, int po_y, int arg14, int angle, int zoom, const Common::Rect *r) {
|
|
||||||
Common::Point pts[4];
|
|
||||||
int32 w, h;
|
|
||||||
getWizImageDim(resnum, state, w, h);
|
|
||||||
|
|
||||||
pts[1].x = pts[2].x = w / 2 - 1;
|
|
||||||
pts[0].x = pts[0].y = pts[1].y = pts[3].x = -w / 2;
|
|
||||||
pts[2].y = pts[3].y = h / 2 - 1;
|
|
||||||
|
|
||||||
// transform points
|
|
||||||
if (zoom != 256) {
|
|
||||||
for (int i = 0; i < 4; ++i) {
|
|
||||||
pts[i].x = pts[i].x * zoom / 256;
|
|
||||||
pts[i].y = pts[i].y * zoom / 256;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (angle)
|
|
||||||
_wiz.polygonRotatePoints(pts, 4, angle);
|
|
||||||
|
|
||||||
for (int i = 0; i < 4; ++i) {
|
|
||||||
pts[i].x += po_x;
|
|
||||||
pts[i].y += po_y;
|
|
||||||
}
|
|
||||||
|
|
||||||
// XXX drawWizPolygonPoints(resnum, state, pts, r, VAR(VAR_WIZ_TCOLOR));
|
|
||||||
warning("drawWizComplexPolygon() partially implemented");
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScummEngine_v72he::displayWizComplexImage(const WizParameters *params) {
|
void ScummEngine_v72he::displayWizComplexImage(const WizParameters *params) {
|
||||||
int unk_178 = 0;
|
int unk_178 = 0;
|
||||||
if (params->processFlags & 0x80000) {
|
if (params->processFlags & 0x80000) {
|
||||||
|
@ -1254,9 +1284,9 @@ void ScummEngine_v72he::displayWizComplexImage(const WizParameters *params) {
|
||||||
po_x = params->img.x1;
|
po_x = params->img.x1;
|
||||||
po_y = params->img.y1;
|
po_y = params->img.y1;
|
||||||
}
|
}
|
||||||
int unk = 0;
|
int xmapNum = 0;
|
||||||
if (params->processFlags & 0x4) {
|
if (params->processFlags & 0x4) {
|
||||||
unk = params->unk_15C;
|
xmapNum = params->xmapNum;
|
||||||
}
|
}
|
||||||
const Common::Rect *r = NULL;
|
const Common::Rect *r = NULL;
|
||||||
if (params->processFlags & kWPFClipBox) {
|
if (params->processFlags & kWPFClipBox) {
|
||||||
|
@ -1296,19 +1326,19 @@ void ScummEngine_v72he::displayWizComplexImage(const WizParameters *params) {
|
||||||
pwi->y1 = po_y;
|
pwi->y1 = po_y;
|
||||||
pwi->state = state;
|
pwi->state = state;
|
||||||
pwi->flags = flags;
|
pwi->flags = flags;
|
||||||
pwi->unk = unk;
|
pwi->xmapNum = xmapNum;
|
||||||
pwi->paletteNum = paletteNum;
|
pwi->paletteNum = paletteNum;
|
||||||
++_wiz._imagesNum;
|
++_wiz._imagesNum;
|
||||||
} else {
|
} else {
|
||||||
if (unk_178 != 0) {
|
if (unk_178 != 0) {
|
||||||
// TODO
|
// TODO
|
||||||
} else if (params->processFlags & (kWPFZoom | kWPFRotate)) {
|
} else if (params->processFlags & (kWPFZoom | kWPFRotate)) {
|
||||||
drawWizComplexPolygon(params->img.resNum, state, po_x, po_y, unk, rotationAngle, zoom, r);
|
drawWizComplexPolygon(params->img.resNum, state, po_x, po_y, xmapNum, rotationAngle, zoom, r, flags, wizd, paletteNum);
|
||||||
} else {
|
} else {
|
||||||
if (flags & kWIFIsPolygon) {
|
if (flags & kWIFIsPolygon) {
|
||||||
drawWizPolygon(params->img.resNum, state, po_x, flags); // XXX , VAR(VAR_WIZ_TCOLOR));
|
drawWizPolygon(params->img.resNum, state, po_x, flags); // XXX , VAR(VAR_WIZ_TCOLOR));
|
||||||
} else {
|
} else {
|
||||||
drawWizImage(params->img.resNum, state, po_x, po_y, unk, r, flags, wizd, paletteNum);
|
drawWizImage(params->img.resNum, state, po_x, po_y, xmapNum, r, flags, wizd, paletteNum);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1530,8 +1560,8 @@ void ScummEngine_v90he::processWizImage(const WizParameters *params) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int ScummEngine_v90he::getWizImageStates(int resnum) {
|
int ScummEngine_v90he::getWizImageStates(int resNum) {
|
||||||
const uint8 *dataPtr = getResourceAddress(rtImage, resnum);
|
const uint8 *dataPtr = getResourceAddress(rtImage, resNum);
|
||||||
assert(dataPtr);
|
assert(dataPtr);
|
||||||
if (READ_UINT32(dataPtr) == MKID('MULT')) {
|
if (READ_UINT32(dataPtr) == MKID('MULT')) {
|
||||||
const byte *offs, *wrap;
|
const byte *offs, *wrap;
|
||||||
|
@ -1550,9 +1580,9 @@ int ScummEngine_v90he::getWizImageStates(int resnum) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int ScummEngine_v90he::isWizPixelNonTransparent(int resnum, int state, int x, int y, int flags) {
|
int ScummEngine_v90he::isWizPixelNonTransparent(int resNum, int state, int x, int y, int flags) {
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
uint8 *data = getResourceAddress(rtImage, resnum);
|
uint8 *data = getResourceAddress(rtImage, resNum);
|
||||||
assert(data);
|
assert(data);
|
||||||
uint8 *wizh = findWrappedBlock(MKID('WIZH'), data, state, 0);
|
uint8 *wizh = findWrappedBlock(MKID('WIZH'), data, state, 0);
|
||||||
assert(wizh);
|
assert(wizh);
|
||||||
|
@ -1577,9 +1607,9 @@ int ScummEngine_v90he::isWizPixelNonTransparent(int resnum, int state, int x, in
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8 ScummEngine_v90he::getWizPixelColor(int resnum, int state, int x, int y, int flags) {
|
uint8 ScummEngine_v90he::getWizPixelColor(int resNum, int state, int x, int y, int flags) {
|
||||||
uint8 color;
|
uint8 color;
|
||||||
uint8 *data = getResourceAddress(rtImage, resnum);
|
uint8 *data = getResourceAddress(rtImage, resNum);
|
||||||
assert(data);
|
assert(data);
|
||||||
uint8 *wizh = findWrappedBlock(MKID('WIZH'), data, state, 0);
|
uint8 *wizh = findWrappedBlock(MKID('WIZH'), data, state, 0);
|
||||||
assert(wizh);
|
assert(wizh);
|
||||||
|
@ -1598,11 +1628,11 @@ uint8 ScummEngine_v90he::getWizPixelColor(int resnum, int state, int x, int y, i
|
||||||
return color;
|
return color;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ScummEngine_v90he::computeWizHistogram(int resnum, int state, int x, int y, int w, int h) {
|
int ScummEngine_v90he::computeWizHistogram(int resNum, int state, int x, int y, int w, int h) {
|
||||||
writeVar(0, 0);
|
writeVar(0, 0);
|
||||||
defineArray(0, kDwordArray, 0, 0, 0, 255);
|
defineArray(0, kDwordArray, 0, 0, 0, 255);
|
||||||
if (readVar(0) != 0) {
|
if (readVar(0) != 0) {
|
||||||
uint8 *data = getResourceAddress(rtImage, resnum);
|
uint8 *data = getResourceAddress(rtImage, resNum);
|
||||||
assert(data);
|
assert(data);
|
||||||
uint8 *wizh = findWrappedBlock(MKID('WIZH'), data, state, 0);
|
uint8 *wizh = findWrappedBlock(MKID('WIZH'), data, state, 0);
|
||||||
assert(wizh);
|
assert(wizh);
|
||||||
|
|
|
@ -41,7 +41,7 @@ struct WizImage {
|
||||||
int y1;
|
int y1;
|
||||||
int flags;
|
int flags;
|
||||||
int state;
|
int state;
|
||||||
int unk;
|
int xmapNum;
|
||||||
int paletteNum;
|
int paletteNum;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ struct WizParameters {
|
||||||
int fileWriteMode;
|
int fileWriteMode;
|
||||||
int angle;
|
int angle;
|
||||||
int zoom;
|
int zoom;
|
||||||
int unk_15C;
|
int xmapNum;
|
||||||
int unk_160;
|
int unk_160;
|
||||||
int unk_164;
|
int unk_164;
|
||||||
int resDefImgW;
|
int resDefImgW;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue