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