Commit 989fb4dd authored by alistert's avatar alistert

Reduced number of global fonts.

parent 58b2311d
......@@ -192,12 +192,25 @@ Bonus::Bonus (char * fileName, unsigned char diff) {
char *string, *fileString;
int count, x, y;
try {
font = new Font(true);
} catch (int e) {
throw e;
}
try {
file = new File(fileName, false);
} catch (int e) {
delete font;
throw e;
}
......@@ -367,9 +380,11 @@ Bonus::Bonus (char * fileName, unsigned char diff) {
Bonus::~Bonus () {
// Restore font palettes
// Restore panelBigFont palette
panelBigFont->restorePalette();
delete font;
return;
}
......@@ -622,20 +637,20 @@ void Bonus::draw () {
// Show gem count
bonusFont->showString("*", 0, 0);
bonusFont->showNumber(localPlayer->getItems() / 10, 50, 0);
bonusFont->showNumber(localPlayer->getItems() % 10, 68, 0);
bonusFont->showString("/", 65, 0);
bonusFont->showNumber(items, 124, 0);
font->showString("*", 0, 0);
font->showNumber(localPlayer->getItems() / 10, 50, 0);
font->showNumber(localPlayer->getItems() % 10, 68, 0);
font->showString("/", 65, 0);
font->showNumber(items, 124, 0);
// Show time remaining
if (endTime > ticks) x = (endTime - ticks) / 1000;
else x = 0;
bonusFont->showNumber(x / 60, 250, 0);
bonusFont->showString(":", 247, 0);
bonusFont->showNumber((x / 10) % 6, 274, 0);
bonusFont->showNumber(x % 10, 291, 0);
font->showNumber(x / 60, 250, 0);
font->showString(":", 247, 0);
font->showNumber((x / 10) % 6, 274, 0);
font->showNumber(x % 10, 291, 0);
return;
......@@ -774,7 +789,7 @@ int Bonus::play () {
// If paused, draw "PAUSE"
if (pmessage && !pmenu)
bonusFont->showString("pause", (canvasW >> 1) - 44, 32);
font->showString("pause", (canvasW >> 1) - 44, 32);
// Draw statistics
drawStats(stats, 0);
......
......@@ -50,12 +50,15 @@ typedef struct {
} BonusGridElement;
// Class
// Classes
class Font;
class Bonus : public BaseLevel {
private:
SDL_Surface* background;
Font* font;
Anim animSet[BANIMS];
BonusGridElement grid[BLH][BLW];
char mask[60][64]; // At most 60 tiles, all with 8 * 8 masks
......
......@@ -72,7 +72,7 @@ unsigned char CooperativeGameMode::chooseTeam () {
}
void CooperativeGameMode::drawScore () {
void CooperativeGameMode::drawScore (Font* font) {
// Do nothing
......@@ -103,9 +103,9 @@ unsigned char FreeForAllGameMode::chooseTeam () {
}
void FreeForAllGameMode::drawScore () {
void FreeForAllGameMode::drawScore (Font* font) {
fontsFont->showNumber(localPlayer->teamScore, 64, 4);
font->showNumber(localPlayer->teamScore, 64, 4);
return;
......@@ -138,9 +138,9 @@ unsigned char TeamGameMode::chooseTeam () {
}
void TeamGameMode::drawScore () {
void TeamGameMode::drawScore (Font* font) {
fontsFont->showNumber(localPlayer->teamScore, 64, 4);
font->showNumber(localPlayer->teamScore, 64, 4);
return;
......
......@@ -43,6 +43,7 @@ enum GameModeType {
// Classes
class Font;
class Player;
class GameMode {
......@@ -50,7 +51,7 @@ class GameMode {
public:
virtual GameModeType getMode () = 0;
virtual unsigned char chooseTeam () = 0;
virtual void drawScore () = 0;
virtual void drawScore (Font* font) = 0;
virtual bool hit (Player *source, Player *victim);
virtual bool kill (Player *source, Player *victim);
virtual bool endOfLevel (Player *player, unsigned char gridX, unsigned char gridY);
......@@ -62,7 +63,7 @@ class CooperativeGameMode : public GameMode {
public:
unsigned char chooseTeam ();
virtual void drawScore ();
virtual void drawScore (Font* font);
};
......@@ -70,7 +71,7 @@ class FreeForAllGameMode : public GameMode {
public:
unsigned char chooseTeam ();
virtual void drawScore ();
virtual void drawScore (Font* font);
};
......@@ -78,7 +79,7 @@ class TeamGameMode : public GameMode {
public:
unsigned char chooseTeam ();
virtual void drawScore ();
virtual void drawScore (Font* font);
};
......
......@@ -68,8 +68,6 @@ EXTERN Font *fontmn1; /* Taken from .0FN file name */
EXTERN Font *fontmn2; /* Taken from .0FN file name */
EXTERN Font *panelBigFont; /* Found in PANEL.000 */
EXTERN Font *panelSmallFont; /* Found in PANEL.000 */
EXTERN Font *fontsFont; /* Found in FONTS.000 */
EXTERN Font *bonusFont; /* Found in BONUS.000 */
#endif
......@@ -175,7 +175,7 @@ int DemoLevel::play () {
drawStats(stats, BLACK);
fontsFont->showString("demo", (canvasW >> 1) - 36, 32);
font->showString("demo", (canvasW >> 1) - 36, 32);
}
......
......@@ -106,6 +106,8 @@ Level::~Level () {
delete[] sceneFile;
delete[] musicFile;
delete font;
return;
}
......@@ -670,11 +672,11 @@ int Level::play () {
// If paused, draw "PAUSE"
if (pmessage && !pmenu)
fontsFont->showString("pause", (canvasW >> 1) - 44, 32);
font->showString("pause", (canvasW >> 1) - 44, 32);
// If this is a competitive game, draw the score
if (gameMode) gameMode->drawScore();
if (gameMode) gameMode->drawScore(font);
// Draw statistics
......@@ -726,30 +728,30 @@ int Level::play () {
// Display statistics & bonuses
// TODO: Display percentage symbol
fontsFont->showString("time", (canvasW >> 1) - 152, (canvasH >> 1) - 60);
fontsFont->showNumber(timeBonus, (canvasW >> 1) + 124, (canvasH >> 1) - 60);
font->showString("time", (canvasW >> 1) - 152, (canvasH >> 1) - 60);
font->showNumber(timeBonus, (canvasW >> 1) + 124, (canvasH >> 1) - 60);
fontsFont->showString("enemies", (canvasW >> 1) - 152, (canvasH >> 1) - 40);
font->showString("enemies", (canvasW >> 1) - 152, (canvasH >> 1) - 40);
if (enemies)
fontsFont->showNumber((localPlayer->getEnemies() * 100) / enemies, (canvasW >> 1) + 124, (canvasH >> 1) - 40);
font->showNumber((localPlayer->getEnemies() * 100) / enemies, (canvasW >> 1) + 124, (canvasH >> 1) - 40);
else
fontsFont->showNumber(0, (canvasW >> 1) + 124, (canvasH >> 1) - 40);
fontsFont->showString("%", (canvasW >> 1) + 124, (canvasH >> 1) - 40);
font->showNumber(0, (canvasW >> 1) + 124, (canvasH >> 1) - 40);
font->showString("%", (canvasW >> 1) + 124, (canvasH >> 1) - 40);
fontsFont->showString("items", (canvasW >> 1) - 152, (canvasH >> 1) - 20);
font->showString("items", (canvasW >> 1) - 152, (canvasH >> 1) - 20);
if (items)
fontsFont->showNumber((localPlayer->getItems() * 100) / items, (canvasW >> 1) + 124, (canvasH >> 1) - 20);
font->showNumber((localPlayer->getItems() * 100) / items, (canvasW >> 1) + 124, (canvasH >> 1) - 20);
else
fontsFont->showNumber(0, (canvasW >> 1) + 124, (canvasH >> 1) - 20);
fontsFont->showString("%", (canvasW >> 1) + 124, (canvasH >> 1) - 20);
font->showNumber(0, (canvasW >> 1) + 124, (canvasH >> 1) - 20);
font->showString("%", (canvasW >> 1) + 124, (canvasH >> 1) - 20);
fontsFont->showString("perfect", (canvasW >> 1) - 152, canvasH >> 1);
fontsFont->showNumber(perfect, (canvasW >> 1) + 124, canvasH >> 1);
font->showString("perfect", (canvasW >> 1) - 152, canvasH >> 1);
font->showNumber(perfect, (canvasW >> 1) + 124, canvasH >> 1);
fontsFont->showString("score", (canvasW >> 1) - 152, (canvasH >> 1) + 40);
fontsFont->showNumber(localPlayer->getScore(), (canvasW >> 1) + 124, (canvasH >> 1) + 40);
font->showString("score", (canvasW >> 1) - 152, (canvasH >> 1) + 40);
font->showNumber(localPlayer->getScore(), (canvasW >> 1) + 124, (canvasH >> 1) + 40);
}
......
......@@ -86,6 +86,7 @@ typedef struct {
class Bullet;
class Event;
class Font;
class Player;
class Scene;
......@@ -123,6 +124,7 @@ class Level : public BaseLevel {
void draw ();
public:
Font* font;
Event* events;
Bullet* bullets;
EventPath path[PATHS];
......
......@@ -330,6 +330,17 @@ int Level::load (char *fileName, unsigned char diff, bool checkpoint) {
int count, x, y, type;
try {
font = new Font(false);
} catch (int e) {
throw e;
}
difficulty = diff;
......@@ -356,6 +367,7 @@ int Level::load (char *fileName, unsigned char diff, bool checkpoint) {
} catch (int e) {
delete[] string;
delete font;
return e;
......@@ -422,6 +434,8 @@ int Level::load (char *fileName, unsigned char diff, bool checkpoint) {
} catch (int e) {
delete font;
return e;
}
......@@ -483,6 +497,7 @@ int Level::load (char *fileName, unsigned char diff, bool checkpoint) {
if (tiles < 0) {
delete file;
delete font;
return tiles;
......@@ -501,6 +516,7 @@ int Level::load (char *fileName, unsigned char diff, bool checkpoint) {
SDL_FreeSurface(tileSet);
delete file;
delete font;
return count;
......
......@@ -396,8 +396,6 @@ int loadMain (int argc, char *argv[]) {
// Load fonts
fontsFont = NULL;
bonusFont = NULL;
panelBigFont = NULL;
panelSmallFont = NULL;
font2 = NULL;
......@@ -407,8 +405,6 @@ int loadMain (int argc, char *argv[]) {
try {
fontsFont = new Font(false);
bonusFont = new Font(true);
panelBigFont = new Font(pixels + (40 * 320), true);
panelSmallFont = new Font(pixels + (48 * 320), false);
font2 = new Font(F_FONT2_0FN);
......@@ -419,8 +415,6 @@ int loadMain (int argc, char *argv[]) {
} catch (int e) {
if (fontsFont) delete fontsFont;
if (bonusFont) delete bonusFont;
if (panelBigFont) delete panelBigFont;
if (panelSmallFont) delete panelSmallFont;
if (font2) delete font2;
......@@ -476,8 +470,6 @@ void freeMain () {
delete net;
delete fontsFont;
delete bonusFont;
delete panelBigFont;
delete panelSmallFont;
delete font2;
......
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