Commit 9c12f2d7 authored by alistert's avatar alistert

Fixed menu and player size in Bonus levels. The viewW/viewH variables are now...

Fixed menu and player size in Bonus levels. The viewW/viewH variables are now only used with ordinary levels (which have the panel).
parent ca11300c
......@@ -773,9 +773,9 @@ int Bonus::play () {
// Draw the menu
drawRect((canvasW >> 2) - 8, (canvasH >> 1) - 46, 144, 60, 0);
drawRect((canvasW >> 2) - 8, (canvasH >> 1) - 46, 144, 92, 0);
for (count = 0; count < 3; count++) {
for (count = 0; count < 5; count++) {
if (count == option) fontmn2->mapPalette(240, 8, 31, 16);
else fontmn2->mapPalette(240, 8, 0, 16);
......
......@@ -286,11 +286,11 @@ void Game::view (int change) {
// Move the viewport towards the exit sign
if (TTOF(checkX) > viewX + (viewW << 9) + change) viewX += change;
else if (TTOF(checkX) < viewX + (viewW << 9) - change) viewX -= change;
if (TTOF(checkX) > viewX + (canvasW << 9) + change) viewX += change;
else if (TTOF(checkX) < viewX + (canvasW << 9) - change) viewX -= change;
if (TTOF(checkY) > viewY + (viewH << 9) + change) viewY += change;
else if (TTOF(checkY) < viewY + (viewH << 9) - change) viewY -= change;
if (TTOF(checkY) > viewY + (canvasH << 9) + change) viewY += change;
else if (TTOF(checkY) < viewY + (canvasH << 9) - change) viewY -= change;
return;
......
......@@ -145,6 +145,16 @@ void Anim::draw (fixed x, fixed y) {
}
void Anim::drawScaled (fixed x, fixed y, fixed scale) {
// Used to draw bonus level player, so no offset
sprites[frame]->drawScaled(FTOI(x), FTOI(y), scale);
return;
}
void Anim::disableDefaultOffset() {
ignoreDefaultYOffset = true;
......
......@@ -63,6 +63,7 @@ class Anim {
fixed getShootY ();
fixed getOffset ();
void draw (fixed x, fixed y);
void drawScaled (fixed x, fixed y, fixed scale);
void disableDefaultOffset ();
void setPalette (SDL_Color *palette, int start, int amount);
void flashPalette (int index);
......
......@@ -99,8 +99,7 @@ class Video {
// Variables
EXTERN SDL_Surface* canvas;
EXTERN int viewH, canvasW, canvasH;
#define viewW canvasW
EXTERN int canvasW, canvasH;
EXTERN Video video;
......
......@@ -29,6 +29,7 @@
#include "../jj2level.h"
#include "io/gfx/anim.h"
#include "io/gfx/font.h"
#include "io/gfx/video.h"
#include "player/jj2levelplayer.h"
......@@ -95,7 +96,7 @@ void JJ2Event::draw (int change) {
// Don't draw if too far off-screen
if ((x < viewX - F64) || (y < viewY - F64) ||
(x > viewX + ITOF(viewW) + F64) || (y > viewY + ITOF(viewH) + F64)) return;
(x > viewX + ITOF(canvasW) + F64) || (y > viewY + ITOF(canvasH) + F64)) return;
drawX = getDrawX(change);
drawY = getDrawY(change);
......@@ -141,6 +142,7 @@ void JJ2Event::draw (int change) {
default:
drawRect(FTOI(drawX) + 8, FTOI(drawY) + 8, 16, 16, type);
panelBigFont->showNumber(type, FTOI(drawX) + 24, FTOI(drawY) + 12);
return;
......
......@@ -178,9 +178,9 @@ void JJ2Layer::draw (SDL_Surface* tileSet, SDL_Surface* flippedTileSet) {
}
for (y = 0; y <= ITOT(viewH - 1) + 1; y++) {
for (y = 0; y <= ITOT(canvasH - 1) + 1; y++) {
for (x = 0; x <= ITOT(viewW - 1) + 1; x++) {
for (x = 0; x <= ITOT(canvasW - 1) + 1; x++) {
dst.x = TTOI(x) - (vX & 31);
dst.y = TTOI(y) - (vY & 31);
......
......@@ -108,9 +108,9 @@ void JJ2Level::draw () {
// Ensure the new viewport is within the level
if (viewX < 0) viewX = 0;
if (FTOI(viewX) + viewW >= TTOI(width)) viewX = ITOF(TTOI(width) - viewW);
if (FTOI(viewX) + canvasW >= TTOI(width)) viewX = ITOF(TTOI(width) - canvasW);
if (viewY < 0) viewY = 0;
if (FTOI(viewY) + viewH >= TTOI(height)) viewY = ITOF(TTOI(height) - viewH);
if (FTOI(viewY) + canvasH >= TTOI(height)) viewY = ITOF(TTOI(height) - canvasH);
// Show background layers
......@@ -126,14 +126,7 @@ void JJ2Level::draw () {
// Show the players
for (x = 0; x < nPlayers; x++) {
players[x].getJJ2LevelPlayer()->draw(ticks, change);
// Show type of overlapping modifier
//panelBigFont->showNumber(mods[FTOT(players[x].getJJ2LevelPlayer()->getY() + PYO_MID)][FTOT(players[x].getJJ2LevelPlayer()->getX() + PXO_MID)].type, viewW >> 1, viewH >> 1);
}
for (x = 0; x < nPlayers; x++) players[x].getJJ2LevelPlayer()->draw(ticks, change);
// Show foreground layers
......@@ -160,7 +153,7 @@ void JJ2Level::draw () {
for (y = 1; y <= x; y++) {
drawRect(viewW - (y * 12), 4, 8, 8, 48);
drawRect(canvasW - (y * 12), 4, 8, 8, 48);
}
......@@ -172,10 +165,10 @@ void JJ2Level::draw () {
// Show ammo
if (localPlayer->getAmmo(false) == -1) {
panelSmallFont->showString(":", viewW - 24, canvasH - 16);
panelSmallFont->showString(";", viewW - 16, canvasH - 16);
panelSmallFont->showString(":", canvasW - 24, canvasH - 16);
panelSmallFont->showString(";", canvasW - 16, canvasH - 16);
} else panelSmallFont->showNumber(localPlayer->getAmmo(true), viewW - 8, canvasH - 16);
} else panelSmallFont->showNumber(localPlayer->getAmmo(true), canvasW - 8, canvasH - 16);
return;
......
......@@ -181,9 +181,12 @@ class DemoLevel : public Level {
};
// Variable
// Variables
EXTERN Level* level;
EXTERN int viewH;
#define viewW canvasW
#endif
......@@ -191,7 +191,7 @@ void BonusPlayer::draw (unsigned int ticks, Anim* animSet) {
anim = animSet + anims[animType];
anim->disableDefaultOffset();
anim->setFrame(ticks / 75, true);
anim->draw(ITOF((canvasW - anim->getWidth()) >> 1), ITOF(canvasH - anim->getHeight() - 28));
anim->drawScaled(ITOF(canvasW >> 1), ITOF(canvasH - ((((anim->getHeight() >> 1) + 28) * canvasW) / SW)), ITOF(canvasW) / SW);
return;
......
......@@ -368,6 +368,7 @@ void JJ2LevelPlayer::control (unsigned int ticks, int msps) {
break;
case 17: // End of level
case 18: // End of level
if (!energy) return;
......@@ -743,14 +744,12 @@ void JJ2LevelPlayer::view (unsigned int ticks, int mspf) {
// Record old viewport position for applying lag
oldViewX = viewX;
oldViewY = viewY;
// There is no panel, so use the whole height
viewH = canvasH;
// Find new position
viewX = x + F8 - (viewW << 9);
viewY = y - F24 - (viewH << 9);
viewX = x + F8 - (canvasW << 9);
viewY = y - F24 - (canvasH << 9);
if ((lookTime > 0) && ((int)ticks > 1000 + lookTime)) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment