mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-05 02:17:05 +00:00
SCUMM HE: Resolved couple of TODOs in Moonbase FOW code
This commit is contained in:
parent
200882277a
commit
fc198503c8
@ -138,7 +138,7 @@ bool Moonbase::setFOWImage(int image) {
|
||||
return false;
|
||||
}
|
||||
|
||||
int nStates = _vm->_wiz->getWizImageStates(0); //_fowImage); // TODO
|
||||
int nStates = _vm->_wiz->getWizImageStates(_fowImage);
|
||||
|
||||
if (nStates > FOW_ANIM_FRAME_COUNT) {
|
||||
releaseFOWResources();
|
||||
@ -349,7 +349,7 @@ void Moonbase::setFOWInfo(int fowInfoArray, int downDim, int acrossDim, int view
|
||||
void Moonbase::renderFOWState(uint8 *destSurface, int dstPitch, int dstType, int dstw, int dsth, int x, int y, int srcw, int srch, int state, int flags) {
|
||||
int spotx, spoty;
|
||||
|
||||
//getWizImageSpot(_fowImage, state, &spotx, &spoty); // TODO
|
||||
_vm->_wiz->getWizStateSpot(_fowImage, state, &spotx, &spoty);
|
||||
Common::Rect r(_fowClipX1, _fowClipY1, _fowClipX2, _fowClipY2);
|
||||
|
||||
_vm->_wiz->drawWizImageEx(destSurface, _fowImage, 0, dstPitch, dstType, dstw, dsth, x - spotx, y - spoty, srcw, srch, state, &r, flags, 0, 0, 16, 0, 0);
|
||||
|
@ -2744,6 +2744,11 @@ int Wiz::getWizImageData(int resNum, int state, int type) {
|
||||
int Wiz::getWizImageStates(int resNum) {
|
||||
const uint8 *dataPtr = _vm->getResourceAddress(rtImage, resNum);
|
||||
assert(dataPtr);
|
||||
|
||||
return getWizImageStates(dataPtr);
|
||||
}
|
||||
|
||||
int Wiz::getWizImageStates(const uint8 *dataPtr) {
|
||||
if (READ_BE_UINT32(dataPtr) == MKTAG('M','U','L','T')) {
|
||||
const byte *offs, *wrap;
|
||||
|
||||
@ -2761,6 +2766,18 @@ int Wiz::getWizImageStates(int resNum) {
|
||||
}
|
||||
}
|
||||
|
||||
void Wiz::getWizStateSpot(byte *data, int state, int *x, int *y) {
|
||||
byte *spot = _vm->findWrappedBlock(MKTAG('S','P','O','T'), data, state, 0);
|
||||
|
||||
if (!spot) {
|
||||
*x = *y = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
*x = READ_LE_UINT32(spot + 0x0);
|
||||
*y = READ_LE_UINT32(spot + 0x4);
|
||||
}
|
||||
|
||||
int Wiz::isWizPixelNonTransparent(int resNum, int state, int x, int y, int flags) {
|
||||
int ret = 0;
|
||||
uint8 *data = _vm->getResourceAddress(rtImage, resNum);
|
||||
|
@ -221,6 +221,8 @@ public:
|
||||
|
||||
void getWizImageDim(int resNum, int state, int32 &w, int32 &h);
|
||||
int getWizImageStates(int resnum);
|
||||
int getWizImageStates(const uint8 *ptr);
|
||||
void getWizStateSpot(byte *data, int state, int *x, int *y);
|
||||
int isWizPixelNonTransparent(int resnum, int state, int x, int y, int flags);
|
||||
uint16 getWizPixelColor(int resnum, int state, int x, int y);
|
||||
int getWizImageData(int resNum, int state, int type);
|
||||
|
Loading…
x
Reference in New Issue
Block a user