TWINE: use constants for magic numbers

This commit is contained in:
Martin Gerhardy 2020-12-25 13:08:38 +01:00
parent f4fa272b26
commit 438deb671f
6 changed files with 31 additions and 31 deletions

View file

@ -343,9 +343,9 @@ void Redraw::processDrawListShadows(const DrawListStruct &drawCmd) {
_engine->_grid->drawSprite(drawCmd.offset, renderRect.left, renderRect.top, _engine->_resources->spriteShadowPtr); _engine->_grid->drawSprite(drawCmd.offset, renderRect.left, renderRect.top, _engine->_resources->spriteShadowPtr);
} }
const int32 tmpX = (drawCmd.x + 256) / 512; const int32 tmpX = (drawCmd.x + BRICK_HEIGHT) / BRICK_SIZE;
const int32 tmpY = drawCmd.y / 256; const int32 tmpY = drawCmd.y / BRICK_HEIGHT;
const int32 tmpZ = (drawCmd.z + 256) / 512; const int32 tmpZ = (drawCmd.z + BRICK_HEIGHT) / BRICK_SIZE;
_engine->_grid->drawOverModelActor(tmpX, tmpY, tmpZ); _engine->_grid->drawOverModelActor(tmpX, tmpY, tmpZ);
@ -388,9 +388,9 @@ void Redraw::processDrawListActors(const DrawListStruct &drawCmd, bool bgRedraw)
if (_engine->_interface->textWindow.left <= _engine->_interface->textWindow.right && _engine->_interface->textWindow.top <= _engine->_interface->textWindow.bottom) { if (_engine->_interface->textWindow.left <= _engine->_interface->textWindow.right && _engine->_interface->textWindow.top <= _engine->_interface->textWindow.bottom) {
actor->dynamicFlags.bIsVisible = 1; actor->dynamicFlags.bIsVisible = 1;
const int32 tempX = (actor->x + 256) / 512; const int32 tempX = (actor->x + BRICK_HEIGHT) / BRICK_SIZE;
int32 tempY = actor->y / 256; int32 tempY = actor->y / BRICK_HEIGHT;
const int32 tempZ = (actor->z + 256) / 512; const int32 tempZ = (actor->z + BRICK_HEIGHT) / BRICK_SIZE;
if (actor->brickShape() != ShapeType::kNone) { if (actor->brickShape() != ShapeType::kNone) {
tempY++; tempY++;
} }
@ -443,14 +443,14 @@ void Redraw::processDrawListActorSprites(const DrawListStruct &drawCmd, bool bgR
actor->dynamicFlags.bIsVisible = 1; actor->dynamicFlags.bIsVisible = 1;
if (actor->staticFlags.bUsesClipping) { if (actor->staticFlags.bUsesClipping) {
const int32 tmpX = (actor->lastX + 256) / 512; const int32 tmpX = (actor->lastX + BRICK_HEIGHT) / BRICK_SIZE;
const int32 tmpY = actor->lastY / 256; const int32 tmpY = actor->lastY / BRICK_HEIGHT;
const int32 tmpZ = (actor->lastZ + 256) / 512; const int32 tmpZ = (actor->lastZ + BRICK_HEIGHT) / BRICK_SIZE;
_engine->_grid->drawOverSpriteActor(tmpX, tmpY, tmpZ); _engine->_grid->drawOverSpriteActor(tmpX, tmpY, tmpZ);
} else { } else {
const int32 tmpX = (actor->x + actor->boudingBox.x.topRight + 256) / 512; const int32 tmpX = (actor->x + actor->boudingBox.x.topRight + BRICK_HEIGHT) / BRICK_SIZE;
int32 tmpY = actor->y / 256; int32 tmpY = actor->y / BRICK_HEIGHT;
const int32 tmpZ = (actor->z + actor->boudingBox.z.topRight + 256) / 512; const int32 tmpZ = (actor->z + actor->boudingBox.z.topRight + BRICK_HEIGHT) / BRICK_SIZE;
if (actor->brickShape() != ShapeType::kNone) { if (actor->brickShape() != ShapeType::kNone) {
tmpY++; tmpY++;
} }
@ -495,9 +495,9 @@ void Redraw::processDrawListExtras(const DrawListStruct &drawCmd) {
_engine->_interface->setClip(renderRect); _engine->_interface->setClip(renderRect);
if (_engine->_interface->textWindow.left <= _engine->_interface->textWindow.right && _engine->_interface->textWindow.top <= _engine->_interface->textWindow.bottom) { if (_engine->_interface->textWindow.left <= _engine->_interface->textWindow.right && _engine->_interface->textWindow.top <= _engine->_interface->textWindow.bottom) {
const int32 tmpX = (drawCmd.x + 256) / 512; const int32 tmpX = (drawCmd.x + BRICK_HEIGHT) / BRICK_SIZE;
const int32 tmpY = drawCmd.y / 256; const int32 tmpY = drawCmd.y / BRICK_HEIGHT;
const int32 tmpZ = (drawCmd.z + 256) / 512; const int32 tmpZ = (drawCmd.z + BRICK_HEIGHT) / BRICK_SIZE;
_engine->_grid->drawOverModelActor(tmpX, tmpY, tmpZ); _engine->_grid->drawOverModelActor(tmpX, tmpY, tmpZ);
addRedrawArea(_engine->_interface->textWindow.left, _engine->_interface->textWindow.top, renderRect.right, renderRect.bottom); addRedrawArea(_engine->_interface->textWindow.left, _engine->_interface->textWindow.top, renderRect.right, renderRect.bottom);

View file

@ -46,8 +46,8 @@ Renderer::Renderer(TwinEEngine *engine) : _engine(engine), shadeAngleTab3(&shade
int32 Renderer::projectPositionOnScreen(int32 cX, int32 cY, int32 cZ) { int32 Renderer::projectPositionOnScreen(int32 cX, int32 cY, int32 cZ) {
if (isUsingOrhoProjection) { if (isUsingOrhoProjection) {
projPosX = ((cX - cZ) * 24) / 512 + orthoProjX; projPosX = ((cX - cZ) * 24) / BRICK_SIZE + orthoProjX;
projPosY = (((cX + cZ) * 12) - cY * 30) / 512 + orthoProjY; projPosY = (((cX + cZ) * 12) - cY * 30) / BRICK_SIZE + orthoProjY;
projPosZ = cZ - cY - cX; projPosZ = cZ - cY - cX;
return 1; return 1;
} }
@ -1253,8 +1253,8 @@ bool Renderer::renderAnimatedModel(ModelData *modelData, const uint8 *bodyPtr, R
const int32 coY = pointPtr->y + renderY; const int32 coY = pointPtr->y + renderY;
const int32 coZ = -(pointPtr->z + renderZ); const int32 coZ = -(pointPtr->z + renderZ);
pointPtrDest->x = (coX + coZ) * 24 / 512 + orthoProjX; pointPtrDest->x = (coX + coZ) * 24 / BRICK_SIZE + orthoProjX;
pointPtrDest->y = (((coX - coZ) * 12) - coY * 30) / 512 + orthoProjY; pointPtrDest->y = (((coX - coZ) * 12) - coY * 30) / BRICK_SIZE + orthoProjY;
pointPtrDest->z = coZ - coX - coY; pointPtrDest->z = coZ - coX - coY;
if (pointPtrDest->x < _engine->_redraw->renderRect.left) { if (pointPtrDest->x < _engine->_redraw->renderRect.left) {

View file

@ -757,7 +757,7 @@ void Animations::processActorAnimations(int32 actorIdx) { // DoAnim
_engine->_renderer->destZ += _engine->_movements->processActorZ; _engine->_renderer->destZ += _engine->_movements->processActorZ;
if (_engine->_renderer->destX >= 0 && _engine->_renderer->destZ >= 0 && _engine->_renderer->destX <= 0x7E00 && _engine->_renderer->destZ <= 0x7E00) { if (_engine->_renderer->destX >= 0 && _engine->_renderer->destZ >= 0 && _engine->_renderer->destX <= 0x7E00 && _engine->_renderer->destZ <= 0x7E00) {
if (_engine->_grid->getBrickShape(_engine->_renderer->destX, _engine->_movements->processActorY + 256, _engine->_renderer->destZ) != ShapeType::kNone && _engine->cfgfile.WallCollision) { // avoid wall hit damage if (_engine->_grid->getBrickShape(_engine->_renderer->destX, _engine->_movements->processActorY + BRICK_HEIGHT, _engine->_renderer->destZ) != ShapeType::kNone && _engine->cfgfile.WallCollision) { // avoid wall hit damage
_engine->_extra->addExtraSpecial(actor->x, actor->y + 1000, actor->z, ExtraSpecialType::kHitStars); _engine->_extra->addExtraSpecial(actor->x, actor->y + 1000, actor->z, ExtraSpecialType::kHitStars);
initAnim(AnimationTypes::kBigHit, 2, AnimationTypes::kStanding, currentlyProcessedActorIdx); initAnim(AnimationTypes::kBigHit, 2, AnimationTypes::kStanding, currentlyProcessedActorIdx);

View file

@ -186,16 +186,16 @@ void Collision::reajustActorPosition(ShapeType brickShape) {
if (brickShape >= ShapeType::kStairsTopLeft && brickShape <= ShapeType::kStairsBottomRight) { if (brickShape >= ShapeType::kStairsTopLeft && brickShape <= ShapeType::kStairsBottomRight) {
switch (brickShape) { switch (brickShape) {
case ShapeType::kStairsTopLeft: case ShapeType::kStairsTopLeft:
_engine->_movements->processActorY = brkY + getAverageValue(0, 256, 512, _engine->_movements->processActorX - brkX); _engine->_movements->processActorY = brkY + getAverageValue(0, BRICK_HEIGHT, BRICK_SIZE, _engine->_movements->processActorX - brkX);
break; break;
case ShapeType::kStairsTopRight: case ShapeType::kStairsTopRight:
_engine->_movements->processActorY = brkY + getAverageValue(0, 256, 512, _engine->_movements->processActorZ - brkZ); _engine->_movements->processActorY = brkY + getAverageValue(0, BRICK_HEIGHT, BRICK_SIZE, _engine->_movements->processActorZ - brkZ);
break; break;
case ShapeType::kStairsBottomLeft: case ShapeType::kStairsBottomLeft:
_engine->_movements->processActorY = brkY + getAverageValue(256, 0, 512, _engine->_movements->processActorZ - brkZ); _engine->_movements->processActorY = brkY + getAverageValue(BRICK_HEIGHT, 0, BRICK_SIZE, _engine->_movements->processActorZ - brkZ);
break; break;
case ShapeType::kStairsBottomRight: case ShapeType::kStairsBottomRight:
_engine->_movements->processActorY = brkY + getAverageValue(256, 0, 512, _engine->_movements->processActorX - brkX); _engine->_movements->processActorY = brkY + getAverageValue(BRICK_HEIGHT, 0, BRICK_SIZE, _engine->_movements->processActorX - brkX);
break; break;
default: default:
break; break;
@ -450,7 +450,7 @@ void Collision::stopFalling() { // ReceptionObj()
if (IS_HERO(_engine->_animations->currentlyProcessedActorIdx)) { if (IS_HERO(_engine->_animations->currentlyProcessedActorIdx)) {
const int32 fall = _engine->_scene->heroYBeforeFall - _engine->_movements->processActorY; const int32 fall = _engine->_scene->heroYBeforeFall - _engine->_movements->processActorY;
if (fall >= 2048) { if (fall >= BRICK_HEIGHT * 8) {
_engine->_extra->addExtraSpecial(_engine->_actor->processActorPtr->x, _engine->_actor->processActorPtr->y + 1000, _engine->_actor->processActorPtr->z, ExtraSpecialType::kHitStars); _engine->_extra->addExtraSpecial(_engine->_actor->processActorPtr->x, _engine->_actor->processActorPtr->y + 1000, _engine->_actor->processActorPtr->z, ExtraSpecialType::kHitStars);
_engine->_actor->processActorPtr->life--; _engine->_actor->processActorPtr->life--;
_engine->_animations->initAnim(AnimationTypes::kLandingHit, 2, AnimationTypes::kStanding, _engine->_animations->currentlyProcessedActorIdx); _engine->_animations->initAnim(AnimationTypes::kLandingHit, 2, AnimationTypes::kStanding, _engine->_animations->currentlyProcessedActorIdx);

View file

@ -178,6 +178,9 @@ private:
int32 blockBufferSize = 0; int32 blockBufferSize = 0;
uint8 *blockBuffer = nullptr; uint8 *blockBuffer = nullptr;
uint8 *getBlockBuffer(int32 x, int32 y, int32 z);
void updateCollisionCoordinates(int32 x, int32 y, int32 z);
public: public:
Grid(TwinEEngine *engine); Grid(TwinEEngine *engine);
~Grid(); ~Grid();
@ -185,14 +188,11 @@ public:
/** Grid block entry types */ /** Grid block entry types */
typedef struct BlockEntry blockMap[GRID_SIZE_X][GRID_SIZE_Z][GRID_SIZE_Y]; typedef struct BlockEntry blockMap[GRID_SIZE_X][GRID_SIZE_Z][GRID_SIZE_Y];
uint8 *getBlockBuffer(int32 x, int32 y, int32 z);
/** /**
* search down until either ground is found or lower border of the cube is reached * search down until either ground is found or lower border of the cube is reached
*/ */
const uint8 *getBlockBufferGround(int32 x, int32 y, int32 z, int16 &ground) const; const uint8 *getBlockBufferGround(int32 x, int32 y, int32 z, int16 &ground) const;
void updateCollisionCoordinates(int32 x, int32 y, int32 z);
/** New grid camera X coordinates */ /** New grid camera X coordinates */
int32 newCameraX = 0; int32 newCameraX = 0;
/** New grid camera Y coordinates */ /** New grid camera Y coordinates */

View file

@ -708,9 +708,9 @@ static int32 lCAM_FOLLOW(TwinEEngine *engine, LifeScriptContext &ctx) {
if (engine->_scene->currentlyFollowedActor != followedActorIdx) { if (engine->_scene->currentlyFollowedActor != followedActorIdx) {
const ActorStruct *followedActor = engine->_scene->getActor(followedActorIdx); const ActorStruct *followedActor = engine->_scene->getActor(followedActorIdx);
engine->_grid->newCameraX = followedActor->x / 512; engine->_grid->newCameraX = followedActor->x / BRICK_SIZE;
engine->_grid->newCameraY = followedActor->y / 256; engine->_grid->newCameraY = followedActor->y / BRICK_HEIGHT;
engine->_grid->newCameraZ = followedActor->z / 512; engine->_grid->newCameraZ = followedActor->z / BRICK_SIZE;
engine->_scene->currentlyFollowedActor = followedActorIdx; engine->_scene->currentlyFollowedActor = followedActorIdx;
engine->_redraw->reqBgRedraw = true; engine->_redraw->reqBgRedraw = true;