diff --git a/projects/mtg/include/MTGDefinitions.h b/projects/mtg/include/MTGDefinitions.h index 77da9858a..aab61fb75 100644 --- a/projects/mtg/include/MTGDefinitions.h +++ b/projects/mtg/include/MTGDefinitions.h @@ -171,11 +171,6 @@ class Constants CHANCE_PURE_OVERRIDE = 50, CHANCE_MIXED_OVERRIDE = 25, - MAIN_FONT = 0, - MENU_FONT = 1, - MAGIC_FONT = 2, - OPTION_FONT = 1, - GRADE_SUPPORTED = 0, GRADE_BORDERLINE = 1, GRADE_UNOFFICIAL = 2, diff --git a/projects/mtg/include/WFont.h b/projects/mtg/include/WFont.h index 2687cfb01..8dd39f7f1 100644 --- a/projects/mtg/include/WFont.h +++ b/projects/mtg/include/WFont.h @@ -1,103 +1,123 @@ -#ifndef WFONT_H_ -#define WFONT_H_ - -#include -#include -#include -#include "config.h" - -class WFont -{ -public: - unsigned char id; - // Rendering text to screen. - virtual void DrawString(const char *s, float x, float y, int align=JGETEXT_LEFT, float leftOffset = 0, float width = 0) = 0; - virtual void DrawString(std::string s, float x, float y, int align=JGETEXT_LEFT, float leftOffset = 0, float width = 0) = 0; - // Set font color. - virtual void SetColor(PIXEL_TYPE color) = 0; - // Get font color. - virtual PIXEL_TYPE GetColor() const = 0; - // Set scale for rendering. - virtual void SetScale(float scale) = 0; - // Get rendering scale. - virtual float GetScale() const = 0; - // Get height of font. - virtual float GetHeight() const = 0; - // Get width of rendering string on screen. - virtual float GetStringWidth(const char *s) const = 0; - // Set font tracking. - virtual void SetTracking(float tracking) = 0; - // Set Base for the character set to use. - virtual void SetBase(int base) = 0; - virtual ~WFont() {}; -}; - -class WLBFont : public WFont -{ -public: - WLBFont(const char *fontname, int lineheight, bool useVideoRAM=false) { - it = NEW JLBFont(fontname,lineheight,useVideoRAM); - }; - ~WLBFont() {SAFE_DELETE(it);}; - - void DrawString(const char *s, float x, float y, int align=JGETEXT_LEFT, float leftOffset = 0, float width = 0) {it->DrawString(s,x,y,align,leftOffset,width);}; - void DrawString(std::string s, float x, float y, int align=JGETEXT_LEFT, float leftOffset = 0, float width = 0) {it->DrawString(s,x,y,align,leftOffset,width);}; - void SetColor(PIXEL_TYPE color) {it->SetColor(color);}; - PIXEL_TYPE GetColor() const {return it->GetColor();}; - void SetScale(float scale) {it->SetScale(scale);}; - float GetScale() const {return it->GetScale();}; - float GetHeight() const {return it->GetHeight();}; - float GetStringWidth(const char *s) const {return it->GetStringWidth(s);}; - void SetTracking(float tracking) {it->SetTracking(tracking);}; - void SetBase(int base) {it->SetBase(base);}; - -private: - JLBFont * it; -}; - -class WFBFont : public WFont -{ -public: - WFBFont(const char *fontname, int lineheight, bool useVideoRAM=false); - ~WFBFont(); - - void DrawString(const char *s, float x, float y, int align=JGETEXT_LEFT, float leftOffset = 0, float width = 0); - void DrawString(std::string s, float x, float y, int align=JGETEXT_LEFT, float leftOffset = 0, float width = 0); - void SetColor(PIXEL_TYPE color); - PIXEL_TYPE GetColor() const {return mColor0;}; - void SetScale(float scale); - float GetScale() const; - float GetHeight() const; - float GetStringWidth(const char *s) const; - void SetTracking(float tracking) {}; - void SetBase(int base) {}; - -private: - static JRenderer * mRenderer; - - u8 * mEngFont; - u8 * mChnFont; - - PIXEL_TYPE mColor0; - PIXEL_TYPE mColor; - unsigned int mFontSize; - float mScale; - unsigned int mBytesPerChar; - unsigned int mBytesPerRow; - - int mCacheImageWidth; - int mCacheImageHeight; - int mCol; - int mRow; - int mCacheSize; - JTexture * mTexture; - JQuad ** mSprites; - int *mGBCode; - int mCurr; - - u32 * mCharBuffer; - - int PreCacheChar(const u8 *ch); -}; - -#endif +#ifndef WFONT_H_ +#define WFONT_H_ + +#include +#include +#include +#include "config.h" + +namespace Fonts +{ + enum Font_Type + { + MAIN_FONT = 0, + MENU_FONT = 1, + OPTION_FONT = 1, + MAGIC_FONT = 2, + SMALLFACE_FONT = 3 + }; + + // when using gbk languages and we need to keep around single byte font variants, + // the single byte fonts will be offset by this value + const unsigned int kSingleByteFontOffset = 100; +} + + +class WFont +{ +public: + int mFontID; + // Rendering text to screen. + virtual void DrawString(const char *s, float x, float y, int align=JGETEXT_LEFT, float leftOffset = 0, float width = 0) = 0; + virtual void DrawString(std::string s, float x, float y, int align=JGETEXT_LEFT, float leftOffset = 0, float width = 0) = 0; + // Set font color. + virtual void SetColor(PIXEL_TYPE color) = 0; + // Get font color. + virtual PIXEL_TYPE GetColor() const = 0; + // Set scale for rendering. + virtual void SetScale(float scale) = 0; + // Get rendering scale. + virtual float GetScale() const = 0; + // Get height of font. + virtual float GetHeight() const = 0; + // Get width of rendering string on screen. + virtual float GetStringWidth(const char *s) const = 0; + // Set font tracking. + virtual void SetTracking(float tracking) = 0; + // Set Base for the character set to use. + virtual void SetBase(int base) = 0; + WFont(int inID) : mFontID(inID) {}; + virtual ~WFont() {}; +}; + +class WLBFont : public WFont +{ +public: + WLBFont(int inFontID, const char *fontname, int lineheight, bool useVideoRAM=false) + : WFont(inFontID) + { + it = NEW JLBFont(fontname,lineheight,useVideoRAM); + }; + ~WLBFont() {SAFE_DELETE(it);}; + + void DrawString(const char *s, float x, float y, int align=JGETEXT_LEFT, float leftOffset = 0, float width = 0) {it->DrawString(s,x,y,align,leftOffset,width);}; + void DrawString(std::string s, float x, float y, int align=JGETEXT_LEFT, float leftOffset = 0, float width = 0) {it->DrawString(s,x,y,align,leftOffset,width);}; + void SetColor(PIXEL_TYPE color) {it->SetColor(color);}; + PIXEL_TYPE GetColor() const {return it->GetColor();}; + void SetScale(float scale) {it->SetScale(scale);}; + float GetScale() const {return it->GetScale();}; + float GetHeight() const {return it->GetHeight();}; + float GetStringWidth(const char *s) const {return it->GetStringWidth(s);}; + void SetTracking(float tracking) {it->SetTracking(tracking);}; + void SetBase(int base) {it->SetBase(base);}; + +private: + JLBFont * it; +}; + +class WFBFont : public WFont +{ +public: + WFBFont(int inFontID, const char *fontname, int lineheight, bool useVideoRAM=false); + ~WFBFont(); + + void DrawString(const char *s, float x, float y, int align=JGETEXT_LEFT, float leftOffset = 0, float width = 0); + void DrawString(std::string s, float x, float y, int align=JGETEXT_LEFT, float leftOffset = 0, float width = 0); + void SetColor(PIXEL_TYPE color); + PIXEL_TYPE GetColor() const {return mColor0;}; + void SetScale(float scale); + float GetScale() const; + float GetHeight() const; + float GetStringWidth(const char *s) const; + void SetTracking(float tracking) {}; + void SetBase(int base) {}; + +private: + static JRenderer * mRenderer; + + u8 * mEngFont; + u8 * mChnFont; + + PIXEL_TYPE mColor0; + PIXEL_TYPE mColor; + unsigned int mFontSize; + float mScale; + unsigned int mBytesPerChar; + unsigned int mBytesPerRow; + + int mCacheImageWidth; + int mCacheImageHeight; + int mCol; + int mRow; + int mCacheSize; + JTexture * mTexture; + JQuad ** mSprites; + int *mGBCode; + int mCurr; + + u32 * mCharBuffer; + + int PreCacheChar(const u8 *ch); +}; + +#endif diff --git a/projects/mtg/include/WResourceManager.h b/projects/mtg/include/WResourceManager.h index 452bea97d..755bae6ee 100644 --- a/projects/mtg/include/WResourceManager.h +++ b/projects/mtg/include/WResourceManager.h @@ -178,16 +178,12 @@ public: JTexture* GetTexture(const string &textureName); JTexture* GetTexture(int id); - int reloadWFonts(); - int reloadWLBFonts(); - //Wrapped from JResourceManger. TODO: Privatize - WFont * LoadWLBFont(const string &fontName, int height); - WFont * LoadWFBFont(const string &fontName, int height); - WFont * GetWFont(const string &fontName); - WFont * GetWFont(int id); - WFont * GetWLBFont(int id); + // Font management functions + void InitFonts(const std::string& inLang); + int ReloadWFonts(); + WFont* LoadWFont(const string& inFontname, int inFontHeight, int inFontID); + WFont* GetWFont(int id); void RemoveWFonts(); - void RemoveWLBFonts(); //Wrapped from JSoundSystem. TODO: Privatize. JMusic * ssLoadMusic(const char *fileName); @@ -210,7 +206,7 @@ private: WCache sampleWCache; WCache psiWCache; - typedef std::map ManagedQuadMap; + typedef std::map ManagedQuadMap; ManagedQuadMap mManagedQuads; typedef std::map IDLookupMap; @@ -219,10 +215,10 @@ private: //Statistics of record. unsigned int lastTime; int lastError; - vector mWFontList; - map mWFontMap; - vector mWLBFontList; - map mWLBFontMap; + + typedef std::map FontMap; + FontMap mWFontMap; + std::string mFontFileExtension; }; extern WResourceManager resources; diff --git a/projects/mtg/src/AIStats.cpp b/projects/mtg/src/AIStats.cpp index 80ccfeedf..951c26205 100644 --- a/projects/mtg/src/AIStats.cpp +++ b/projects/mtg/src/AIStats.cpp @@ -152,7 +152,7 @@ void AIStats::Render(){ if (player == g->players[1]) x0 = 280; JRenderer::GetInstance()->FillRoundRect(x0,10,200,180,5,ARGB(50,0,0,0)); - WFont * f = resources.GetWFont("simon"); + WFont * f = resources.GetWFont(Fonts::MAIN_FONT); int i = 0; char buffer[512]; list::iterator it; diff --git a/projects/mtg/src/ActionLayer.cpp b/projects/mtg/src/ActionLayer.cpp index 1bc8d7728..210960e65 100644 --- a/projects/mtg/src/ActionLayer.cpp +++ b/projects/mtg/src/ActionLayer.cpp @@ -225,7 +225,7 @@ void ActionLayer::setMenuObject(Targetable * object, bool must){ SAFE_DELETE(abilitiesMenu); - abilitiesMenu = NEW SimpleMenu(10, this, Constants::MAIN_FONT, 100, 100,object->getDisplayName().c_str()); + abilitiesMenu = NEW SimpleMenu(10, this, Fonts::MAIN_FONT, 100, 100,object->getDisplayName().c_str()); for (int i=0;igetCurrentGamePhase() + 1) % Constants::MTG_PHASE_CLEANUP; - WFont * mFont = resources.GetWFont(Constants::MAIN_FONT); + WFont * mFont = resources.GetWFont(Fonts::MAIN_FONT); mFont->SetBase(0); mFont->SetScale(DEFAULT_MAIN_FONT_SCALE); char buffer[200]; @@ -66,7 +66,7 @@ const string Interruptible::getDisplayName() const } void Interruptible::Render(MTGCardInstance * source, JQuad * targetQuad, string alt1, string alt2, string action, bool bigQuad){ - WFont * mFont = resources.GetWFont(Constants::MAIN_FONT); + WFont * mFont = resources.GetWFont(Fonts::MAIN_FONT); mFont->SetColor(ARGB(255,255,255,255)); mFont->SetScale(DEFAULT_MAIN_FONT_SCALE); mFont->DrawString(_(action).c_str(), x + 30 , y, JGETEXT_LEFT); @@ -317,7 +317,7 @@ int PutInGraveyard::resolve(){ } void PutInGraveyard::Render(){ - WFont * mFont = resources.GetWFont(Constants::MAIN_FONT); + WFont * mFont = resources.GetWFont(Fonts::MAIN_FONT); mFont->SetBase(0); mFont->SetScale(DEFAULT_MAIN_FONT_SCALE); if (!removeFromGame){ @@ -354,7 +354,7 @@ int DrawAction::resolve(){ } void DrawAction::Render(){ - WFont * mFont = resources.GetWFont(Constants::MAIN_FONT); + WFont * mFont = resources.GetWFont(Fonts::MAIN_FONT); mFont->SetBase(0); mFont->SetScale(DEFAULT_MAIN_FONT_SCALE); char buffer[200]; @@ -789,7 +789,7 @@ void ActionStack::Render(){ if (current->state==NOT_RESOLVED) height += current->mHeight; } - WFont * mFont = resources.GetWFont(Constants::MAIN_FONT); + WFont * mFont = resources.GetWFont(Fonts::MAIN_FONT); mFont->SetBase(0); mFont->SetScale(DEFAULT_MAIN_FONT_SCALE); mFont->SetColor(ARGB(255,255,255,255)); @@ -845,7 +845,7 @@ void ActionStack::Render(){ if (current->display) height += current->mHeight; } - WFont * mFont = resources.GetWFont(Constants::MAIN_FONT); + WFont * mFont = resources.GetWFont(Fonts::MAIN_FONT); mFont->SetScale(DEFAULT_MAIN_FONT_SCALE); mFont->SetColor(ARGB(255,255,255,255)); diff --git a/projects/mtg/src/CardGui.cpp b/projects/mtg/src/CardGui.cpp index c589cbee8..5a810e43d 100644 --- a/projects/mtg/src/CardGui.cpp +++ b/projects/mtg/src/CardGui.cpp @@ -64,7 +64,7 @@ void CardGui::Update(float dt) void CardGui::Render() { - WFont * mFont = resources.GetWFont(Constants::MAIN_FONT); + WFont * mFont = resources.GetWFont(Fonts::MAIN_FONT); JRenderer * renderer = JRenderer::GetInstance(); GameObserver * game = GameObserver::GetInstance(); @@ -215,7 +215,7 @@ void CardGui::alternateRender(MTGCard * card, const Pos& pos){ renderer->RenderQuad(q, x, pos.actY, pos.actT, scale, scale); } // Write the title - WFont * font = resources.GetWFont("magic"); + WFont * font = resources.GetWFont(Fonts::MAGIC_FONT); float backup_scale = font->GetScale(); font->SetColor(ARGB((int)pos.actA, 0, 0, 0)); font->SetScale(kWidthScaleFactor * pos.actZ); @@ -418,7 +418,7 @@ void CardGui::tinyCropRender(MTGCard * card, const Pos& pos, JQuad * quad) { renderer->RenderQuad(quad, x, imgY , pos.actT, imgScale, imgScale); // Write the title - WFont * font = resources.GetWFont("magic"); + WFont * font = resources.GetWFont(Fonts::MAGIC_FONT); float backup_scale = font->GetScale(); font->SetColor(ARGB((int)pos.actA, 0, 0, 0)); font->SetScale(kWidthScaleFactor * pos.actZ); @@ -612,7 +612,7 @@ void CardGui::RenderBig(MTGCard* card, const Pos& pos){ void CardGui::renderCountersBig(const Pos& pos){ // Write Named Counters if (card->counters) { - WFont * font = resources.GetWFont("magic"); + WFont * font = resources.GetWFont(Fonts::MAGIC_FONT); font->SetColor(ARGB((int)pos.actA, 0, 0, 0)); font->SetScale(kWidthScaleFactor * pos.actZ); std::vector txt = card->formattedText(); diff --git a/projects/mtg/src/Credits.cpp b/projects/mtg/src/Credits.cpp index 3662babab..c17e3b55e 100644 --- a/projects/mtg/src/Credits.cpp +++ b/projects/mtg/src/Credits.cpp @@ -173,9 +173,9 @@ void Credits::Render(){ if (!p1) return; GameObserver * g = GameObserver::GetInstance(); JRenderer * r = JRenderer::GetInstance(); - WFont * f = resources.GetWFont(Constants::MAIN_FONT); - WFont * f2 = resources.GetWFont(Constants::MENU_FONT); - WFont * f3 = resources.GetWFont(Constants::MAGIC_FONT); + WFont * f = resources.GetWFont(Fonts::MAIN_FONT); + WFont * f2 = resources.GetWFont(Fonts::MENU_FONT); + WFont * f3 = resources.GetWFont(Fonts::MAGIC_FONT); f->SetScale(1); f->SetColor(ARGB(255,255,255,255)); f2->SetScale(1); diff --git a/projects/mtg/src/Damage.cpp b/projects/mtg/src/Damage.cpp index 00705ff35..42d044330 100644 --- a/projects/mtg/src/Damage.cpp +++ b/projects/mtg/src/Damage.cpp @@ -139,7 +139,7 @@ int Damage::resolve(){ return a; } void Damage::Render(){ - WFont * mFont = resources.GetWFont(Constants::MAIN_FONT); + WFont * mFont = resources.GetWFont(Fonts::MAIN_FONT); mFont->SetBase(0); mFont->SetScale(DEFAULT_MAIN_FONT_SCALE); char buffer[200]; diff --git a/projects/mtg/src/DamagerDamaged.cpp b/projects/mtg/src/DamagerDamaged.cpp index df7260c20..bc187801a 100644 --- a/projects/mtg/src/DamagerDamaged.cpp +++ b/projects/mtg/src/DamagerDamaged.cpp @@ -51,7 +51,7 @@ void DamagerDamaged::clearDamage() void DamagerDamaged::Render(CombatStep mode) { TransientCardView::Render(); - WFont * mFont = resources.GetWFont(Constants::MAIN_FONT); + WFont * mFont = resources.GetWFont(Fonts::MAIN_FONT); mFont->SetBase(0); switch (mode) diff --git a/projects/mtg/src/ExtraCost.cpp b/projects/mtg/src/ExtraCost.cpp index bdd6b619f..8158719e8 100644 --- a/projects/mtg/src/ExtraCost.cpp +++ b/projects/mtg/src/ExtraCost.cpp @@ -36,7 +36,7 @@ int ExtraCost::setSource(MTGCardInstance * _source){ void ExtraCost::Render(){ if (!mCostRenderString.empty()) { - WFont * mFont = resources.GetWFont(Constants::MAIN_FONT); + WFont * mFont = resources.GetWFont(Fonts::MAIN_FONT); mFont->SetScale(DEFAULT_MAIN_FONT_SCALE); mFont->SetColor(ARGB(255,255,255,255)); mFont->DrawString(mCostRenderString, 20 ,20, JGETEXT_LEFT); diff --git a/projects/mtg/src/GameApp.cpp b/projects/mtg/src/GameApp.cpp index b42899503..cc76cdad5 100644 --- a/projects/mtg/src/GameApp.cpp +++ b/projects/mtg/src/GameApp.cpp @@ -149,18 +149,7 @@ void GameApp::Create() LOG("--Loading fonts"); string lang = options[Options::LANG].str; std::transform(lang.begin(), lang.end(), lang.begin(), ::tolower); - if (lang.compare("cn") == 0) { - resources.LoadWFBFont("simon",12); - resources.LoadWFBFont("f3",16); - resources.LoadWFBFont("magic",16); - resources.LoadWFBFont("smallface",12); - } - resources.LoadWLBFont("simon",11); - resources.GetWFont("simon")->SetTracking(-1); - resources.LoadWLBFont("f3",16); - resources.LoadWLBFont("magic",16); - resources.LoadWLBFont("smallface", 7); - + resources.InitFonts(lang); LOG("--Loading various textures"); resources.RetrieveTexture("phasebar.png",RETRIEVE_MANAGE); @@ -334,7 +323,7 @@ void GameApp::Render() { if (systemError.size()){ fprintf(stderr, "%s", systemError.c_str()); - WFont * mFont= resources.GetWFont("simon"); + WFont * mFont= resources.GetWFont(Fonts::MAIN_FONT); if (mFont) mFont->DrawString(systemError.c_str(),1,1); return; } diff --git a/projects/mtg/src/GameStateAwards.cpp b/projects/mtg/src/GameStateAwards.cpp index 23673b512..d815d7a88 100644 --- a/projects/mtg/src/GameStateAwards.cpp +++ b/projects/mtg/src/GameStateAwards.cpp @@ -161,7 +161,7 @@ void GameStateAwards::Update(float dt) case JGE_BTN_MENU: showMenu = true; SAFE_DELETE(menu); - menu = NEW SimpleMenu(-102, this,Constants::MENU_FONT, 50,170); + menu = NEW SimpleMenu(-102, this,Fonts::MENU_FONT, 50,170); if(mState == STATE_DETAILS) menu->Add(2, "Back to Trophies"); menu->Add(1, "Back to Main Menu"); diff --git a/projects/mtg/src/GameStateDeckViewer.cpp b/projects/mtg/src/GameStateDeckViewer.cpp index 91bd7a13c..32537db75 100644 --- a/projects/mtg/src/GameStateDeckViewer.cpp +++ b/projects/mtg/src/GameStateDeckViewer.cpp @@ -132,7 +132,7 @@ void GameStateDeckViewer::switchDisplay(){ void GameStateDeckViewer::updateDecks(){ SAFE_DELETE(welcome_menu); - welcome_menu = NEW SimpleMenu( MENU_DECK_SELECTION, this, Constants::MENU_FONT,20,20); + welcome_menu = NEW SimpleMenu( MENU_DECK_SELECTION, this, Fonts::MENU_FONT,20,20); DeckManager * deckManager = DeckManager::GetInstance(); vector playerDeckList = fillDeckMenu( welcome_menu,options.profileFile()); @@ -172,7 +172,7 @@ void GameStateDeckViewer::Start() myCollection->Sort(WSrcCards::SORT_ALPHA); displayed_deck = myCollection; //Build menu. - menu = NEW SimpleMenu( MENU_DECK_BUILDER, this, Constants::MENU_FONT,SCREEN_WIDTH/2-150,20); + menu = NEW SimpleMenu( MENU_DECK_BUILDER, this, Fonts::MENU_FONT,SCREEN_WIDTH/2-150,20); menu->Add( MENU_ITEM_FILTER_BY, "Filter by..."); menu->Add( MENU_ITEM_SWITCH_DECKS_NO_SAVE, "Switch decks without saving"); menu->Add( MENU_ITEM_SAVE_RENAME, "Save & Rename"); @@ -340,7 +340,7 @@ void GameStateDeckViewer::Update(float dt) if (card && displayed_deck->count(card)){ price = pricelist->getSellPrice(card->getMTGId()); sprintf(buffer,"%s : %i %s",_(card->data->getName()).c_str(),price,_("credits").c_str()); - subMenu = NEW SimpleMenu( MENU_CARD_PURCHASE, this, Constants::MAIN_FONT,SCREEN_WIDTH-300,SCREEN_HEIGHT/2,buffer); + subMenu = NEW SimpleMenu( MENU_CARD_PURCHASE, this, Fonts::MAIN_FONT,SCREEN_WIDTH-300,SCREEN_HEIGHT/2,buffer); subMenu->Add( MENU_ITEM_YES,"Yes"); subMenu->Add( MENU_ITEM_NO,"No","",true); } @@ -466,7 +466,7 @@ void GameStateDeckViewer::Update(float dt) void GameStateDeckViewer::renderOnScreenBasicInfo(){ - WFont * mFont = resources.GetWFont(Constants::MAIN_FONT); + WFont * mFont = resources.GetWFont(Fonts::MAIN_FONT); char buffer[256]; int myD = (displayed_deck == myDeck); @@ -500,7 +500,7 @@ int GameStateDeckViewer::getCurrentPos() { } void GameStateDeckViewer::renderSlideBar(){ - WFont * mFont = resources.GetWFont(Constants::MAIN_FONT); + WFont * mFont = resources.GetWFont(Fonts::MAIN_FONT); int total = displayed_deck->Size(); if(total == 0) @@ -568,7 +568,7 @@ void GameStateDeckViewer::renderDeckBackground(){ void GameStateDeckViewer::renderOnScreenMenu(){ - WFont * font = resources.GetWFont(Constants::MAIN_FONT); + WFont * font = resources.GetWFont(Fonts::MAIN_FONT); font->SetColor(ARGB(255,255,255,255)); JRenderer * r = JRenderer::GetInstance(); float pspIconsSize = 0.5; @@ -1229,7 +1229,7 @@ int GameStateDeckViewer::countCardsByType(const char * _type) { } void GameStateDeckViewer::renderCard(int id, float rotation){ - WFont * mFont = resources.GetWFont(Constants::MAIN_FONT); + WFont * mFont = resources.GetWFont(Fonts::MAIN_FONT); MTGCard * card = cardIndex[id]; float max_scale = 0.96f; @@ -1310,7 +1310,7 @@ void GameStateDeckViewer::renderCard (int id){ void GameStateDeckViewer::Render() { - WFont * mFont = resources.GetWFont(Constants::MAIN_FONT); + WFont * mFont = resources.GetWFont(Fonts::MAIN_FONT); JRenderer * r = JRenderer::GetInstance(); r->ClearScreen(ARGB(0,0,0,0)); diff --git a/projects/mtg/src/GameStateDuel.cpp b/projects/mtg/src/GameStateDuel.cpp index c013b0ba7..5d4fd3fb0 100644 --- a/projects/mtg/src/GameStateDuel.cpp +++ b/projects/mtg/src/GameStateDuel.cpp @@ -91,7 +91,7 @@ void GameStateDuel::Start() for (int i = 0; i<2; i ++){ if (mParent->players[i] == PLAYER_TYPE_HUMAN){ decksneeded = 1; - deckmenu = NEW SimpleMenu(DUEL_MENU_CHOOSE_DECK, this, Constants::MENU_FONT, 35, 25, "Choose a Deck"); + deckmenu = NEW SimpleMenu(DUEL_MENU_CHOOSE_DECK, this, Fonts::MENU_FONT, 35, 25, "Choose a Deck"); DeckManager *deckManager = DeckManager::GetInstance(); vector playerDeckList = getValidDeckMetaData( options.profileFile() ); @@ -236,7 +236,7 @@ bool GameStateDuel::MusicExist(string FileName){ void GameStateDuel::ensureOpponentMenu(){ if (!opponentMenu){ - opponentMenu = NEW SimpleMenu(DUEL_MENU_CHOOSE_OPPONENT, this, Constants::MENU_FONT, 35, 25, "Choose Opponent"); + opponentMenu = NEW SimpleMenu(DUEL_MENU_CHOOSE_OPPONENT, this, Fonts::MENU_FONT, 35, 25, "Choose Opponent"); opponentMenu->Add( MENUITEM_RANDOM_AI, "Random"); if (options[Options::EVILTWIN_MODE_UNLOCKED].number) opponentMenu->Add( MENUITEM_EVIL_TWIN, "Evil Twin", _("Can you play against yourself?").c_str()); @@ -375,7 +375,7 @@ void GameStateDuel::Update(float dt) } if (mEngine->GetButtonClick(JGE_BTN_MENU)) { if (!menu) { - menu = NEW SimpleMenu(DUEL_MENU_GAME_MENU, this, Constants::MENU_FONT, SCREEN_WIDTH/2-100, 25, game->players[1]->deckName.c_str()); + menu = NEW SimpleMenu(DUEL_MENU_GAME_MENU, this, Fonts::MENU_FONT, SCREEN_WIDTH/2-100, 25, game->players[1]->deckName.c_str()); int cardsinhand = game->players[0]->game->hand->nb_cards; //almosthumane - mulligan @@ -428,7 +428,7 @@ void GameStateDuel::Update(float dt) void GameStateDuel::Render() { - WFont * mFont = resources.GetWFont(Constants::MAIN_FONT); + WFont * mFont = resources.GetWFont(Fonts::MAIN_FONT); JRenderer * r = JRenderer::GetInstance(); r->ClearScreen(ARGB(0,0,0,0)); diff --git a/projects/mtg/src/GameStateMenu.cpp b/projects/mtg/src/GameStateMenu.cpp index b4b99373d..03dfa52a9 100644 --- a/projects/mtg/src/GameStateMenu.cpp +++ b/projects/mtg/src/GameStateMenu.cpp @@ -117,7 +117,7 @@ void GameStateMenu::Create() if (!langChosen){ currentState = MENU_STATE_MAJOR_LANG | MENU_STATE_MINOR_NONE; } - scroller = NEW TextScroller(Constants::MAIN_FONT, SCREEN_WIDTH/2 - 90 , SCREEN_HEIGHT-17,180); + scroller = NEW TextScroller(Fonts::MAIN_FONT, SCREEN_WIDTH/2 - 90 , SCREEN_HEIGHT-17,180); scrollerSet = 0; splashTex = NULL; @@ -317,7 +317,7 @@ void GameStateMenu::setLang(int id){ void GameStateMenu::loadLangMenu(){ LOG("GameStateMenu::loadLangMenu"); - subMenuController = NEW SimpleMenu( MENU_LANGUAGE_SELECTION, this, Constants::MENU_FONT, 150,60); + subMenuController = NEW SimpleMenu( MENU_LANGUAGE_SELECTION, this, Fonts::MENU_FONT, 150,60); if (!subMenuController) return; resetDirectory(); if (!mDip){ @@ -371,7 +371,7 @@ void GameStateMenu::ensureMGuiController(){ if (!mGuiController) { mGuiController = NEW JGuiController(100, this); if (mGuiController) { - WFont * mFont = resources.GetWFont(Constants::MENU_FONT); + WFont * mFont = resources.GetWFont(Fonts::MENU_FONT); mFont->SetColor(ARGB(255,255,255,255)); mGuiController->Add(NEW MenuItem(MENUITEM_PLAY, mFont, "Play", 80, 50 + SCREEN_HEIGHT/2, mIcons[8], mIcons[9],"particle1.psi",resources.GetQuad("particles"), true)); mGuiController->Add(NEW MenuItem(MENUITEM_DECKEDITOR, mFont, "Deck Editor", 160, 50 + SCREEN_HEIGHT/2, mIcons[2], mIcons[3],"particle2.psi",resources.GetQuad("particles"))); @@ -469,7 +469,7 @@ void GameStateMenu::Update(float dt) if (MENU_STATE_MINOR_NONE == (currentState & MENU_STATE_MINOR)) { if (!hasChosenGameType){ currentState = MENU_STATE_MAJOR_SUBMENU; - subMenuController = NEW SimpleMenu( MENU_FIRST_DUEL_SUBMENU, this, Constants::MENU_FONT, 150,60); + subMenuController = NEW SimpleMenu( MENU_FIRST_DUEL_SUBMENU, this, Fonts::MENU_FONT, 150,60); if (subMenuController){ subMenuController->Add(SUBMENUITEM_CLASSIC,"Classic"); if (options[Options::MOMIR_MODE_UNLOCKED].number) @@ -547,7 +547,7 @@ void GameStateMenu::Render() return; JRenderer * renderer = JRenderer::GetInstance(); - WFont * mFont = resources.GetWFont(Constants::MENU_FONT); + WFont * mFont = resources.GetWFont(Fonts::MENU_FONT); if ((currentState & MENU_STATE_MAJOR) == MENU_STATE_MAJOR_LANG){ }else if ((currentState & MENU_STATE_MAJOR) == MENU_STATE_MAJOR_LOADING_CARDS){ if(!splashTex){ @@ -580,7 +580,7 @@ void GameStateMenu::Render() mFont->SetColor(ARGB(255,255,255,255)); mFont->DrawString(text,SCREEN_WIDTH/2,SCREEN_HEIGHT - 50,JGETEXT_CENTER); }else{ - mFont = resources.GetWFont(Constants::MAIN_FONT); + mFont = resources.GetWFont(Fonts::MAIN_FONT); PIXEL_TYPE colors[] = { @@ -614,7 +614,7 @@ void GameStateMenu::Render() if(options.newAward()) alp = (int)(sin(timeIndex) * 255); float olds = mFont->GetScale(); - mFont = resources.GetWFont(Constants::OPTION_FONT); + mFont = resources.GetWFont(Fonts::OPTION_FONT); jq->SetColor(ARGB(abs(alp),255,255,255)); mFont->SetColor(ARGB(abs(alp),0,0,0)); string s = _("Trophy Room");; @@ -622,7 +622,7 @@ void GameStateMenu::Render() mFont->SetScale(50.0f/mFont->GetStringWidth(s.c_str())); renderer->RenderQuad(jq, SCREEN_WIDTH-64, 2); mFont->DrawString(s,SCREEN_WIDTH-10,9,JGETEXT_RIGHT); - mFont = resources.GetWFont(Constants::MENU_FONT); + mFont = resources.GetWFont(Fonts::MENU_FONT); mFont->SetScale(olds); } } @@ -634,13 +634,13 @@ void GameStateMenu::Render() void GameStateMenu::ButtonPressed(int controllerId, int controlId) { - WFont * mFont = resources.GetWFont(Constants::MENU_FONT); + WFont * mFont = resources.GetWFont(Fonts::MENU_FONT); DebugTrace("GameStateMenu: controllerId " << controllerId << " selected"); switch (controllerId){ case MENU_LANGUAGE_SELECTION: setLang(controlId); - resources.reloadWFonts(); // Fix for choosing Chinese language at first time. + resources.ReloadWFonts(); // Fix for choosing Chinese language at first time. subMenuController->Close(); currentState = MENU_STATE_MAJOR_LOADING_CARDS | MENU_STATE_MINOR_SUBMENU_CLOSING; break; @@ -652,7 +652,7 @@ void GameStateMenu::ButtonPressed(int controllerId, int controlId) switch (controlId) { case MENUITEM_PLAY: - subMenuController = NEW SimpleMenu( MENU_FIRST_DUEL_SUBMENU, this, Constants::MENU_FONT, 150,60); + subMenuController = NEW SimpleMenu( MENU_FIRST_DUEL_SUBMENU, this, Fonts::MENU_FONT, 150,60); if (subMenuController){ subMenuController->Add(SUBMENUITEM_1PLAYER,"1 Player"); // TODO Put 2 players mode back diff --git a/projects/mtg/src/GameStateOptions.cpp b/projects/mtg/src/GameStateOptions.cpp index c55af23ed..649721589 100644 --- a/projects/mtg/src/GameStateOptions.cpp +++ b/projects/mtg/src/GameStateOptions.cpp @@ -87,7 +87,7 @@ void GameStateOptions::Start() optionsList->failMsg = ""; optionsTabs->Add(optionsList); - optionsMenu = NEW SimpleMenu(-102, this,Constants::MENU_FONT, 50,170); + optionsMenu = NEW SimpleMenu(-102, this,Fonts::MENU_FONT, 50,170); optionsMenu->Add(2, "Back to Main Menu"); optionsMenu->Add(1, "Save & Back to Main Menu"); optionsMenu->Add(3, "Cancel"); @@ -212,7 +212,7 @@ void GameStateOptions::Render() "Please support this project with donations at http://wololo.net/wagic", }; - WFont * mFont = resources.GetWFont(Constants::MAGIC_FONT); + WFont * mFont = resources.GetWFont(Fonts::MAGIC_FONT); mFont->SetColor(ARGB(255,200,200,200)); mFont->SetScale(1.0); float startpos = 272 - timer; diff --git a/projects/mtg/src/GameStateShop.cpp b/projects/mtg/src/GameStateShop.cpp index 758ad5307..7af71c68d 100644 --- a/projects/mtg/src/GameStateShop.cpp +++ b/projects/mtg/src/GameStateShop.cpp @@ -166,15 +166,15 @@ string GameStateShop::descPurchase(int controlId, bool tiny){ return buffer; } void GameStateShop::beginPurchase(int controlId){ - WFont * mFont = resources.GetWFont(Constants::MENU_FONT); + WFont * mFont = resources.GetWFont(Fonts::MENU_FONT); mFont->SetScale(DEFAULT_MENU_FONT_SCALE); SAFE_DELETE(menu); if(mInventory[controlId] <= 0){ - menu = NEW SimpleMenu(-145,this,Constants::MENU_FONT,SCREEN_WIDTH-300,SCREEN_HEIGHT/2,_("Sold Out").c_str()); + menu = NEW SimpleMenu(-145,this,Fonts::MENU_FONT,SCREEN_WIDTH-300,SCREEN_HEIGHT/2,_("Sold Out").c_str()); menu->Add(-1,"Ok"); } else if(playerdata->credits - mPrices[controlId] < 0){ - menu = NEW SimpleMenu(-145,this,Constants::MENU_FONT,SCREEN_WIDTH-300,SCREEN_HEIGHT/2,_("Not enough credits").c_str()); + menu = NEW SimpleMenu(-145,this,Fonts::MENU_FONT,SCREEN_WIDTH-300,SCREEN_HEIGHT/2,_("Not enough credits").c_str()); menu->Add(-1,"Ok"); if(options[Options::CHEATMODE].number) { menu->Add(-2,"Steal it"); @@ -186,7 +186,7 @@ void GameStateShop::beginPurchase(int controlId){ sprintf(buf,_("Purchase Booster: %i credits").c_str(),mPrices[controlId]); else sprintf(buf,_("Purchase Card: %i credits").c_str(),mPrices[controlId]); - menu = NEW SimpleMenu(-145,this,Constants::MENU_FONT,SCREEN_WIDTH-300,SCREEN_HEIGHT/2,buf); + menu = NEW SimpleMenu(-145,this,Fonts::MENU_FONT,SCREEN_WIDTH-300,SCREEN_HEIGHT/2,buf); menu->Add(controlId,"Yes"); menu->Add(-1,"No"); @@ -410,7 +410,7 @@ void GameStateShop::Update(float dt) if (menu) menu->Update(dt); else{ - menu = NEW SimpleMenu(11,this,Constants::MENU_FONT,SCREEN_WIDTH/2-100,20); + menu = NEW SimpleMenu(11,this,Fonts::MENU_FONT,SCREEN_WIDTH/2-100,20); menu->Add(22,"Ask about..."); menu->Add(14,"Check task board"); if (options[Options::CHEATMODE].number) @@ -433,7 +433,7 @@ void GameStateShop::Update(float dt) return; } else if (taskList->getState() == TaskList::TASKS_ACTIVE && btn == JGE_BTN_MENU){ if (!menu) { - menu = NEW SimpleMenu(11,this,Constants::MENU_FONT,SCREEN_WIDTH/2-100,20); + menu = NEW SimpleMenu(11,this,Fonts::MENU_FONT,SCREEN_WIDTH/2-100,20); menu->Add(15,"Return to shop"); menu->Add(12,"Save & Back to Main Menu"); menu->Add(13, "Cancel"); @@ -550,7 +550,7 @@ void GameStateShop::deleteDisplay(){ void GameStateShop::Render() { //Erase - WFont * mFont = resources.GetWFont(Constants::MAIN_FONT); + WFont * mFont = resources.GetWFont(Fonts::MAIN_FONT); JRenderer * r = JRenderer::GetInstance(); r->ClearScreen(ARGB(0,0,0,0)); if(mStage == STAGE_FADE_IN) diff --git a/projects/mtg/src/GameStateStory.cpp b/projects/mtg/src/GameStateStory.cpp index ae3f90063..a2dc35d86 100644 --- a/projects/mtg/src/GameStateStory.cpp +++ b/projects/mtg/src/GameStateStory.cpp @@ -44,7 +44,7 @@ void GameStateStory::loadStoriesMenu(const char * root){ flow = NEW StoryFlow(stories[0]); break; default: - menu = NEW SimpleMenu(103, this, Constants::MENU_FONT, 150,60); + menu = NEW SimpleMenu(103, this, Fonts::MENU_FONT, 150,60); for (size_t i = 0; i < stories.size(); ++i){ menu->Add(i, stories[i].c_str()); } @@ -60,7 +60,7 @@ void GameStateStory::Start() { void GameStateStory::Update(float dt) { if (!menu && mEngine->GetButtonClick(JGE_BTN_MENU)){ - menu = NEW SimpleMenu(100, this, Constants::MENU_FONT, SCREEN_WIDTH/2-100, 25); + menu = NEW SimpleMenu(100, this, Fonts::MENU_FONT, SCREEN_WIDTH/2-100, 25); menu->Add(0,"Back to main menu"); menu->Add(-1, "Cancel"); } diff --git a/projects/mtg/src/GuiCombat.cpp b/projects/mtg/src/GuiCombat.cpp index 91acb671b..5e7052ccd 100644 --- a/projects/mtg/src/GuiCombat.cpp +++ b/projects/mtg/src/GuiCombat.cpp @@ -294,7 +294,7 @@ void GuiCombat::Render() { go->opponent()->mAvatar->SetHotSpot(18, 25); enemy_avatar.Render(go->opponent()->mAvatar); - WFont * mFont = resources.GetWFont(Constants::MAIN_FONT); + WFont * mFont = resources.GetWFont(Fonts::MAIN_FONT); mFont->SetColor(ARGB(255, 255, 64, 0)); { char buf[10]; sprintf(buf, "%i", damage); @@ -310,7 +310,7 @@ void GuiCombat::Render() renderer->DrawLine(0, SCREEN_HEIGHT / 2 + 10, SCREEN_WIDTH, SCREEN_HEIGHT / 2 + 10, ARGB(255, 255, 64, 0)); if (FIRST_STRIKE == step) { - WFont * mFont = resources.GetWFont(Constants::MAIN_FONT); + WFont * mFont = resources.GetWFont(Fonts::MAIN_FONT); mFont->SetColor(ARGB(255, 64, 255, 64)); mFont->DrawString("First strike damage", 370, 2); } diff --git a/projects/mtg/src/GuiHand.cpp b/projects/mtg/src/GuiHand.cpp index 2323fcbfe..6c239bfb2 100644 --- a/projects/mtg/src/GuiHand.cpp +++ b/projects/mtg/src/GuiHand.cpp @@ -171,7 +171,7 @@ void GuiHandSelf::Render() { //Empty hand if (state == Open && cards.size() == 0){ - WFont * mFont = resources.GetWFont(Constants::MAIN_FONT); + WFont * mFont = resources.GetWFont(Fonts::MAIN_FONT); mFont->SetColor(ARGB(255,255,0,0)); if (OptionHandDirection::HORIZONTAL == options[Options::HANDDIRECTION].number){ back->SetColor(ARGB(255,255,0,0)); diff --git a/projects/mtg/src/GuiMana.cpp b/projects/mtg/src/GuiMana.cpp index e9a89e551..232623553 100644 --- a/projects/mtg/src/GuiMana.cpp +++ b/projects/mtg/src/GuiMana.cpp @@ -213,7 +213,7 @@ GuiMana::~GuiMana(){ void GuiMana::RenderStatic(){ int values[Constants::MTG_NB_COLORS]; int totalColors = 0; - WFont * mFont = resources.GetWFont(Constants::MAIN_FONT); + WFont * mFont = resources.GetWFont(Fonts::MAIN_FONT); JRenderer * r = JRenderer::GetInstance(); for (int i = 0; i < Constants::MTG_NB_COLORS; ++i) values[i] = 0; diff --git a/projects/mtg/src/GuiPhaseBar.cpp b/projects/mtg/src/GuiPhaseBar.cpp index 144b489a1..b59038d7d 100644 --- a/projects/mtg/src/GuiPhaseBar.cpp +++ b/projects/mtg/src/GuiPhaseBar.cpp @@ -90,7 +90,7 @@ void GuiPhaseBar::Render() } //print phase name - WFont * font = resources.GetWFont(Constants::MAIN_FONT); + WFont * font = resources.GetWFont(Fonts::MAIN_FONT); string currentP = _("your turn"); string interrupt = ""; if (g->currentPlayer == g->players[1]){ diff --git a/projects/mtg/src/GuiStatic.cpp b/projects/mtg/src/GuiStatic.cpp index 5cfbb8298..3b3eb55b4 100644 --- a/projects/mtg/src/GuiStatic.cpp +++ b/projects/mtg/src/GuiStatic.cpp @@ -23,7 +23,7 @@ void GuiAvatar::Render() JRenderer * r = JRenderer::GetInstance(); int life = player->life; int poisonCount = player->poisonCount; - WFont * mFont = resources.GetWFont(Constants::MAIN_FONT); + WFont * mFont = resources.GetWFont(Fonts::MAIN_FONT); mFont->SetScale(DEFAULT_MAIN_FONT_SCALE); //Avatar int lifeDiff = life - currentLife; @@ -152,7 +152,7 @@ void GuiGameZone::Render(){ JRenderer::GetInstance()->FillRect(actX,actY,quad->mWidth * scale * actZ,quad->mHeight *scale * actZ, ARGB(abs(128 - wave),255,255,255)); //Number of cards - WFont * mFont = resources.GetWFont(Constants::MAIN_FONT); + WFont * mFont = resources.GetWFont(Fonts::MAIN_FONT); mFont->SetScale(DEFAULT_MAIN_FONT_SCALE); char buffer[11]; int mAlpha = (int)(actA); diff --git a/projects/mtg/src/MTGGamePhase.cpp b/projects/mtg/src/MTGGamePhase.cpp index a9793126d..36e591fc1 100644 --- a/projects/mtg/src/MTGGamePhase.cpp +++ b/projects/mtg/src/MTGGamePhase.cpp @@ -5,7 +5,7 @@ MTGGamePhase::MTGGamePhase(int id):ActionElement(id){ animation = 0; currentState = -1; - mFont= resources.GetWFont("simon"); + mFont= resources.GetWFont(Fonts::MAIN_FONT); mFont->SetBase(0); // using 2nd font } diff --git a/projects/mtg/src/MTGRules.cpp b/projects/mtg/src/MTGRules.cpp index 67b4f69b3..75f9704b3 100644 --- a/projects/mtg/src/MTGRules.cpp +++ b/projects/mtg/src/MTGRules.cpp @@ -1034,7 +1034,7 @@ void MTGMomirRule::Update(float dt){ void MTGMomirRule::Render(){ if (!textAlpha) return; - WFont * mFont = resources.GetWFont(Constants::MENU_FONT); + WFont * mFont = resources.GetWFont(Fonts::MENU_FONT); mFont->SetScale(2 - (float)textAlpha/130); mFont->SetColor(ARGB(textAlpha,255,255,255)); mFont->DrawString(text.c_str(),SCREEN_WIDTH/2,SCREEN_HEIGHT/2,JGETEXT_CENTER); @@ -1130,7 +1130,7 @@ void HUDDisplay::Render(){ HUDDisplay::HUDDisplay(int _id):MTGAbility(_id, NULL){ timestamp = 0; popdelay = 2; - f = resources.GetWFont(Constants::MAIN_FONT); + f = resources.GetWFont(Fonts::MAIN_FONT); maxWidth = 0; } diff --git a/projects/mtg/src/OptionItem.cpp b/projects/mtg/src/OptionItem.cpp index 1ec848358..736514225 100644 --- a/projects/mtg/src/OptionItem.cpp +++ b/projects/mtg/src/OptionItem.cpp @@ -18,7 +18,7 @@ OptionItem::OptionItem( int _id, string _displayValue): WGuiItem(_displayValue) //OptionInteger void OptionInteger::Render(){ - WFont * mFont = resources.GetWFont(Constants::OPTION_FONT); + WFont * mFont = resources.GetWFont(Fonts::OPTION_FONT); mFont->SetColor(getColor(WGuiColor::TEXT)); JRenderer * renderer = JRenderer::GetInstance(); @@ -68,7 +68,7 @@ void OptionSelect::Entering(JButton key){ } void OptionSelect::Render(){ - WFont * mFont = resources.GetWFont(Constants::OPTION_FONT); + WFont * mFont = resources.GetWFont(Fonts::OPTION_FONT); mFont->SetColor(getColor(WGuiColor::TEXT)); JRenderer * renderer = JRenderer::GetInstance(); @@ -165,7 +165,7 @@ void OptionProfile::populate(){ void OptionProfile::Render(){ JRenderer * renderer = JRenderer::GetInstance(); - WFont * mFont = resources.GetWFont(Constants::OPTION_FONT); + WFont * mFont = resources.GetWFont(Fonts::OPTION_FONT); mFont->SetScale(1); int spacing = 2+(int)mFont->GetHeight(); @@ -426,7 +426,7 @@ void OptionTheme::Render(){ renderer->RenderQuad(q,x, y,0,scale,scale); } - WFont * mFont = resources.GetWFont(Constants::OPTION_FONT); + WFont * mFont = resources.GetWFont(Fonts::OPTION_FONT); mFont->SetColor(getColor(WGuiColor::TEXT_HEADER)); mFont->DrawString(buf, x + 2, y + 2); if(bChecked && author.size()){ @@ -464,7 +464,7 @@ OptionKey::OptionKey(GameStateOptions* g, LocalKeySym from, JButton to) : WGuiIt void OptionKey::Update(float dt) { if (btnMenu) btnMenu->Update(dt); } void OptionKey::Render() { - WFont * mFont = resources.GetWFont(Constants::OPTION_FONT); + WFont * mFont = resources.GetWFont(Fonts::OPTION_FONT); mFont->SetColor(getColor(WGuiColor::TEXT)); JRenderer * renderer = JRenderer::GetInstance(); @@ -514,7 +514,7 @@ void OptionKey::KeyPressed(LocalKeySym key) { g->UngrabKeyboard(this); grabbed = false; - btnMenu = NEW SimpleMenu(0, this, Constants::MENU_FONT, 80, 10); + btnMenu = NEW SimpleMenu(0, this, Fonts::MENU_FONT, 80, 10); for (int i = sizeof(btnList) / sizeof(btnList[0]) - 1; i >= 0; --i) { const KeyRep& rep = translateKey(btnList[i]); btnMenu->Add(i, rep.first.c_str()); @@ -524,7 +524,7 @@ bool OptionKey::isModal() { return grabbed || btnMenu; } void OptionKey::Overlay() { JRenderer * renderer = JRenderer::GetInstance(); - WFont * mFont = resources.GetWFont(Constants::OPTION_FONT); + WFont * mFont = resources.GetWFont(Fonts::OPTION_FONT); mFont->SetColor(ARGB(255, 0, 0, 0)); if (grabbed) { static const int x = 30, y = 45; diff --git a/projects/mtg/src/SimpleMenu.cpp b/projects/mtg/src/SimpleMenu.cpp index 0e335b8df..e44852fcc 100644 --- a/projects/mtg/src/SimpleMenu.cpp +++ b/projects/mtg/src/SimpleMenu.cpp @@ -93,7 +93,7 @@ void SimpleMenu::drawVertPole(int x, int y, int height) } void SimpleMenu::Render() { - WFont * titleFont = resources.GetWFont("smallface"); + WFont * titleFont = resources.GetWFont(Fonts::SMALLFACE_FONT); WFont * mFont = resources.GetWFont(fontId); if (0 == mWidth) { float sY = mY + kVerticalMargin; @@ -138,7 +138,7 @@ void SimpleMenu::Render() { if (i > mCount-1) break; if ((static_cast(mObjects[i]))->mY - kLineHeight * startId < mY + height - kLineHeight + 7) { if (static_cast(mObjects[i])->hasFocus()){ - resources.GetWFont(Constants::MAIN_FONT)->DrawString(static_cast(mObjects[i])->desc.c_str(),mX+mWidth+10,mY+15); + resources.GetWFont(Fonts::MAIN_FONT)->DrawString(static_cast(mObjects[i])->desc.c_str(),mX+mWidth+10,mY+15); mFont->SetColor(ARGB(255,255,255,0)); } else mFont->SetColor(ARGB(150,255,255,255)); diff --git a/projects/mtg/src/SimplePad.cpp b/projects/mtg/src/SimplePad.cpp index e8595421f..7772b6b06 100644 --- a/projects/mtg/src/SimplePad.cpp +++ b/projects/mtg/src/SimplePad.cpp @@ -299,7 +299,7 @@ string SimplePad::Finish() { void SimplePad::Render(){ //This could use some cleaning up to make margins more explicit - WFont * mFont = resources.GetWFont("f3"); + WFont * mFont = resources.GetWFont(Fonts::MENU_FONT); float offX = 0, offY = 0; float kH = mFont->GetHeight(); diff --git a/projects/mtg/src/StoryFlow.cpp b/projects/mtg/src/StoryFlow.cpp index 02b0f4270..aecbc72ee 100644 --- a/projects/mtg/src/StoryFlow.cpp +++ b/projects/mtg/src/StoryFlow.cpp @@ -386,7 +386,7 @@ StoryDialog::StoryDialog(TiXmlElement* root, StoryFlow * mParent):StoryPage(mPar graphics.push_back(NEW StoryText(text,x,y,align, font)); } else if (strcmp(element->Value(), "title")==0) { - graphics.push_back(NEW StoryText(text,x,y,"center", Constants::MENU_FONT)); + graphics.push_back(NEW StoryText(text,x,y,"center", Fonts::MENU_FONT)); } else if (strcmp(element->Value(), "img")==0) { //special case to force center diff --git a/projects/mtg/src/Tasks.cpp b/projects/mtg/src/Tasks.cpp index 11613ed72..fa0097a14 100644 --- a/projects/mtg/src/Tasks.cpp +++ b/projects/mtg/src/Tasks.cpp @@ -431,9 +431,9 @@ void TaskList::Update(float dt) { void TaskList::Render() { JRenderer * r = JRenderer::GetInstance(); //Setup fonts. - WFont * f = resources.GetWFont(Constants::MAIN_FONT); - WFont * f2 = resources.GetWFont(Constants::MAGIC_FONT); - WFont * f3 = resources.GetWFont(Constants::MENU_FONT); //OPTION_FONT + WFont * f = resources.GetWFont(Fonts::MAIN_FONT); + WFont * f2 = resources.GetWFont(Fonts::MAGIC_FONT); + WFont * f3 = resources.GetWFont(Fonts::MENU_FONT); //OPTION_FONT f2->SetColor(ARGB(255, 205, 237, 240)); f3->SetColor(ARGB(255, 219, 206, 151)); diff --git a/projects/mtg/src/WFont.cpp b/projects/mtg/src/WFont.cpp index 240778a53..5304d321b 100644 --- a/projects/mtg/src/WFont.cpp +++ b/projects/mtg/src/WFont.cpp @@ -34,16 +34,16 @@ static PIXEL_TYPE gencolor(int id, PIXEL_TYPE color) r0 = g0 = b0 = 255; switch (id) { - case 0: // simon 245, 228, 156 + case Fonts::MAIN_FONT: // simon 245, 228, 156 r0 = 245; g0 = 228; b0 = 156; break; - case 1: // f3 255, 252, 175 + case Fonts::MENU_FONT: // f3 255, 252, 175 r0 = 255; g0 = 252; b0 = 175; break; - case 2: // magic 219, 255, 151 + case Fonts::MAGIC_FONT: // magic 219, 255, 151 r0 = 219; g0 = 255; b0 = 151; break; - case 3: // smallface 255, 255, 255 + case Fonts::SMALLFACE_FONT: // smallface 255, 255, 255 r0 = 255; g0 = 255; b0 = 255; break; default: @@ -93,7 +93,8 @@ static int genmana(u8 c) JRenderer * WFBFont::mRenderer = NULL; -WFBFont::WFBFont(const char *fontname, int lineheight, bool useVideoRAM) +WFBFont::WFBFont(int inFontID, const char *fontname, int lineheight, bool useVideoRAM) + : WFont(inFontID) { mRenderer = JRenderer::GetInstance(); @@ -312,7 +313,9 @@ void WFBFont::DrawString(const char *s, float x, float y, int align, float leftO unsigned char c = *(unsigned short *)s & 0xFF; if (ISGBK(c) || (s[1] == ':' && s[2] == ' ')) {} else { - WFont * mFont = resources.GetWLBFont(id); + // tricky: the single byte font is always mFontID + kSingleByteFontOffset! + // See WResourceManager::InitFonts() + WFont * mFont = resources.GetWFont(mFontID + Fonts::kSingleByteFontOffset); mFont->SetScale(GetScale()); mFont->SetColor(GetColor()); mFont->DrawString(s, x, y, align, leftOffset, width); @@ -472,7 +475,7 @@ void WFBFont::DrawString(std::string s, float x, float y, int align, float leftO void WFBFont::SetColor(PIXEL_TYPE color) { mColor0 = color; - mColor = gencolor(id, color); + mColor = gencolor(mFontID, color); } float WFBFont::GetStringWidth(const char *s) const @@ -501,7 +504,7 @@ float WFBFont::GetStringWidth(const char *s) const return xx; } else { - WFont * mFont = resources.GetWLBFont(id); + WFont * mFont = resources.GetWFont(mFontID + Fonts::kSingleByteFontOffset); mFont->SetScale(GetScale()); return mFont->GetStringWidth(s); } diff --git a/projects/mtg/src/WGui.cpp b/projects/mtg/src/WGui.cpp index 05e87e631..9e0c0d04f 100644 --- a/projects/mtg/src/WGui.cpp +++ b/projects/mtg/src/WGui.cpp @@ -65,11 +65,11 @@ void WGuiItem::Entering(JButton key){ mFocus = true; } float WGuiItem::minWidth(){ - WFont * mFont = resources.GetWFont(Constants::OPTION_FONT); + WFont * mFont = resources.GetWFont(Fonts::OPTION_FONT); return mFont->GetStringWidth(_(displayValue).c_str())+4; } float WGuiItem::minHeight(){ - WFont * mFont = resources.GetWFont(Constants::OPTION_FONT); + WFont * mFont = resources.GetWFont(Fonts::OPTION_FONT); return mFont->GetHeight(); } @@ -80,7 +80,7 @@ bool WGuiItem::Leaving(JButton key){ void WGuiItem::Render(){ JRenderer * renderer = JRenderer::GetInstance(); - WFont * mFont = resources.GetWFont(Constants::OPTION_FONT); + WFont * mFont = resources.GetWFont(Fonts::OPTION_FONT); DWORD oldcolor = mFont->GetColor(); mFont->SetColor(getColor(WGuiColor::TEXT)); float fH = (height-mFont->GetHeight())/2; @@ -162,7 +162,7 @@ PIXEL_TYPE WDecoStyled::getColor(int type){ //WGuiHeader void WGuiHeader::Render(){ - WFont * mFont = resources.GetWFont(Constants::OPTION_FONT); + WFont * mFont = resources.GetWFont(Fonts::OPTION_FONT); mFont->SetColor(getColor(WGuiColor::TEXT)); JRenderer * renderer = JRenderer::GetInstance(); @@ -263,7 +263,7 @@ void WGuiList::Render(){ //List is empty. if (!items.size() && failMsg != ""){ - WFont * mFont = resources.GetWFont(Constants::OPTION_FONT); + WFont * mFont = resources.GetWFont(Fonts::OPTION_FONT); mFont->SetColor(getColor(WGuiColor::TEXT_FAIL)); mFont->DrawString(_(failMsg).c_str(),x+width/2, y, JGETEXT_RIGHT); return; @@ -401,7 +401,7 @@ string WDecoEnum::lookupVal(int value){ void WDecoEnum::Render() { - WFont * mFont = resources.GetWFont(Constants::OPTION_FONT); + WFont * mFont = resources.GetWFont(Fonts::OPTION_FONT); mFont->SetColor(getColor(WGuiColor::TEXT)); JRenderer * renderer = JRenderer::GetInstance(); mFont->DrawString(_(getDisplay()).c_str(), getX() + 2, getY() + 3); @@ -451,7 +451,7 @@ void WDecoConfirm::Entering(JButton key){ SAFE_DELETE(confirmMenu); mState = OP_CONFIRMED; - confirmMenu = NEW SimpleMenu(444, listener,Constants::MENU_FONT, 50,170); + confirmMenu = NEW SimpleMenu(444, listener,Fonts::MENU_FONT, 50,170); confirmMenu->Add(1,confirm.c_str()); confirmMenu->Add(2,cancel.c_str()); } @@ -968,7 +968,7 @@ void WGuiTabMenu::Add(WGuiBase * it){ } void WGuiTabMenu::Render(){ - WFont * mFont = resources.GetWFont(Constants::OPTION_FONT); + WFont * mFont = resources.GetWFont(Fonts::OPTION_FONT); JRenderer * renderer = JRenderer::GetInstance(); if (!items.size()) @@ -1000,7 +1000,7 @@ void WGuiTabMenu::save(){ //WGuiAward void WGuiAward::Overlay(){ JRenderer * r = JRenderer::GetInstance(); - WFont * mFont = resources.GetWFont(Constants::OPTION_FONT); + WFont * mFont = resources.GetWFont(Fonts::OPTION_FONT); mFont->SetScale(0.8f); mFont->SetColor(getColor(WGuiColor::TEXT)); @@ -1051,7 +1051,7 @@ void WGuiAward::Render(){ return; JRenderer * renderer = JRenderer::GetInstance(); - WFont * mFont = resources.GetWFont(Constants::OPTION_FONT); + WFont * mFont = resources.GetWFont(Fonts::OPTION_FONT); mFont->SetScale(1); mFont->SetColor(getColor(WGuiColor::TEXT)); @@ -1293,7 +1293,7 @@ void WGuiListRow::Render(){ //List is empty. if (!items.size() && failMsg != ""){ - WFont * mFont = resources.GetWFont(Constants::OPTION_FONT); + WFont * mFont = resources.GetWFont(Fonts::OPTION_FONT); mFont->SetColor(getColor(WGuiColor::TEXT_FAIL)); mFont->DrawString(_(failMsg).c_str(),x+width/2, y, JGETEXT_RIGHT); return; @@ -1603,7 +1603,7 @@ void WGuiFilterItem::updateValue(){ SAFE_DELETE(mParent->subMenu); mState = STATE_CHOOSE_TYPE; SAFE_DELETE(mParent->subMenu); - mParent->subMenu = NEW SimpleMenu(-1234,this,Constants::MENU_FONT,20,20,"Filter By...",10); + mParent->subMenu = NEW SimpleMenu(-1234,this,Fonts::MENU_FONT,20,20,"Filter By...",10); if(mParent->isAvailable(FILTER_SET)){ mParent->subMenu->Add(FILTER_SET,"Set"); delMenu = false; @@ -1660,7 +1660,7 @@ void WGuiFilterItem::updateValue(){ SAFE_DELETE(mParent->subMenu); mParent->clearArgs(); mState = STATE_CHOOSE_VAL; - mParent->subMenu = NEW SimpleMenu(-1234,this,Constants::MENU_FONT,20,20,"Filter:"); + mParent->subMenu = NEW SimpleMenu(-1234,this,Fonts::MENU_FONT,20,20,"Filter:"); if(filterType == FILTER_TYPE){ mParent->addArg("Artifact","t:Artifact;"); mParent->addArg("Artifact Creature","t:Artifact;&t:Creature;"); @@ -1892,7 +1892,7 @@ WGuiBase::CONFIRM_TYPE WGuiKeyBinder::needsConfirm() { confirmationString = ss.str(); // Then create the menu. - confirmMenu = NEW SimpleMenu(0, this, Constants::MENU_FONT, 40, 130, "Conflict"); + confirmMenu = NEW SimpleMenu(0, this, Fonts::MENU_FONT, 40, 130, "Conflict"); confirmMenu->Add(1, _("Cancel and return to the options menu").c_str()); confirmMenu->Add(2, _("This is okay, validate and save").c_str()); return CONFIRM_NEED; @@ -1913,7 +1913,7 @@ WGuiBase::CONFIRM_TYPE WGuiKeyBinder::needsConfirm() { confirmationString = s; confirmingButton = btnToCheck[i]; - confirmMenu = NEW SimpleMenu(1, this, Constants::MENU_FONT, 40, 130, "Binding missing"); + confirmMenu = NEW SimpleMenu(1, this, Fonts::MENU_FONT, 40, 130, "Binding missing"); confirmMenu->Add(1, _("Cancel and return to the options menu").c_str()); confirmMenu->Add(2, _("This is okay, validate and save").c_str()); return CONFIRM_NEED; @@ -1936,7 +1936,7 @@ void WGuiKeyBinder::Render() { WGuiList::Render(); if (confirmMenu) { JRenderer * renderer = JRenderer::GetInstance(); - WFont * mFont = resources.GetWFont(Constants::OPTION_FONT); + WFont * mFont = resources.GetWFont(Fonts::OPTION_FONT); mFont->SetColor(ARGB(255, 255, 0, 0)); renderer->FillRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, ARGB(230, 255, 240, 240)); diff --git a/projects/mtg/src/WResourceManager.cpp b/projects/mtg/src/WResourceManager.cpp index a942ec45a..7dcd5cb3a 100644 --- a/projects/mtg/src/WResourceManager.cpp +++ b/projects/mtg/src/WResourceManager.cpp @@ -16,30 +16,36 @@ #include #endif #include "../include/WFont.h" + extern bool neofont; - int idCounter = OTHERS_OFFSET; - WResourceManager resources; -unsigned int vTime = 0; + +namespace +{ + const std::string kExtension_png(".png"); + const std::string kExtension_gbk(".gbk"); +} + int WResourceManager::RetrieveError(){ return lastError; } -bool WResourceManager::RemoveOldest(){ - if(sampleWCache.RemoveOldest()) - return true; - if(textureWCache.RemoveOldest()) - return true; - if(psiWCache.RemoveOldest()) - return true; - return false; +bool WResourceManager::RemoveOldest(){ + if(sampleWCache.RemoveOldest()) + return true; + if(textureWCache.RemoveOldest()) + return true; + if(psiWCache.RemoveOldest()) + return true; + + return false; } //WResourceManager void WResourceManager::DebugRender(){ JRenderer* renderer = JRenderer::GetInstance(); - WFont * font = resources.GetWFont(Constants::MAIN_FONT); + WFont * font = resources.GetWFont(Fonts::MAIN_FONT); font->SetColor(ARGB(255,255,255,255)); if(!font || !renderer) @@ -173,14 +179,6 @@ WResourceManager::WResourceManager(){ mQuadList.reserve(0); mQuadMap.clear(); - mWFontList.clear(); - mWFontList.reserve(4); - mWFontMap.clear(); - - mWLBFontList.clear(); - mWLBFontList.reserve(4); - mWLBFontMap.clear(); - psiWCache.Resize(PSI_CACHE_SIZE,20); sampleWCache.Resize(SAMPLES_CACHE_SIZE,MAX_CACHED_SAMPLES); textureWCache.Resize(TEXTURES_CACHE_MINSIZE,MAX_CACHE_OBJECTS); @@ -193,7 +191,6 @@ WResourceManager::~WResourceManager(){ LOG("==Destroying WResourceManager=="); RemoveAll(); RemoveWFonts(); - RemoveWLBFonts(); LOG("==Successfully Destroyed WResourceManager=="); } @@ -248,7 +245,7 @@ JQuad * WResourceManager::RetrieveCard(MTGCard * card, int style, int submode){ } lastError = textureWCache.mError; if(jq){ - jq->SetHotSpot(jq->mTex->mWidth / 2, jq->mTex->mHeight / 2); + jq->SetHotSpot(static_cast(jq->mTex->mWidth / 2), static_cast(jq->mTex->mHeight / 2)); return jq; } @@ -849,120 +846,81 @@ int WResourceManager::fileOK(string filename, bool relative){ return result; } -int WResourceManager::reloadWLBFonts(){ - vector fontNames; - vector fontSizes; +void WResourceManager::InitFonts(const std::string& inLang) +{ + unsigned int idOffset = 0; - fontNames.resize(mWLBFontList.size()); - fontSizes.resize(mWLBFontList.size()); - for ( map::iterator itr = mWLBFontMap.begin(); itr != mWLBFontMap.end(); ++itr){ - fontNames[itr->second] = itr->first; - fontSizes[itr->second] = mWLBFontList[itr->second]->GetHeight(); - } - RemoveWLBFonts(); - for(size_t i = 0; i < fontNames.size(); ++i){ - LoadWLBFont(fontNames[i],fontSizes[i]); + if (inLang.compare("cn") == 0) + { + mFontFileExtension = kExtension_gbk; + LoadWFont("simon", 12, Fonts::MAIN_FONT); + LoadWFont("f3", 16, Fonts::MENU_FONT); + LoadWFont("magic", 16, Fonts::MAGIC_FONT); + LoadWFont("smallface", 12, Fonts::SMALLFACE_FONT); + + idOffset = Fonts::kSingleByteFontOffset; } - return 1; + mFontFileExtension = kExtension_png; + LoadWFont("simon", 11, Fonts::MAIN_FONT + idOffset); + GetWFont(Fonts::MAIN_FONT)->SetTracking(-1); + LoadWFont("f3", 16, Fonts::MENU_FONT + idOffset); + LoadWFont("magic", 16, Fonts::MAGIC_FONT + idOffset); + LoadWFont("smallface", 7, Fonts::SMALLFACE_FONT + idOffset); } -int WResourceManager::reloadWFonts(){ +int WResourceManager::ReloadWFonts(){ + RemoveWFonts(); + string lang = options[Options::LANG].str; std::transform(lang.begin(), lang.end(), lang.begin(), ::tolower); - if (lang.compare("cn") != 0) - RemoveWFonts(); - else if (mWFontList.size() == 0){ - resources.LoadWFBFont("simon",12); - resources.LoadWFBFont("f3",16); - resources.LoadWFBFont("magic",16); - resources.LoadWFBFont("smallface",12); - } + InitFonts(lang); return 1; } +WFont* WResourceManager::LoadWFont(const string& inFontname, int inFontHeight, int inFontID) +{ + WFont* font = GetWFont(inFontID); + if (font) + { + return font; + } -WFont * WResourceManager::LoadWLBFont(const string &fontName, int height) { - map::iterator itr = mWLBFontMap.find(fontName); - - if (itr != mWLBFontMap.end()) return mWLBFontList[itr->second]; - - string mFontName = fontName + ".png"; + string mFontName = inFontname + mFontFileExtension; string path = graphicsFile(mFontName); if (path.size() > 4 ) path = path.substr(0, path.size() - 4); //some stupid manipulation because of the way Font works in JGE - int id = mWLBFontList.size(); - mWLBFontList.push_back(NEW WLBFont(path.c_str(), height, true)); - mWLBFontMap[fontName] = id; - mWLBFontList[id]->id = id; - - return mWLBFontList[id]; -} - -WFont * WResourceManager::LoadWFBFont(const string &fontName, int height) { - map::iterator itr = mWFontMap.find(fontName); - if (itr != mWFontMap.end()) return mWFontList[itr->second]; - - string mFontName = fontName + ".gbk"; - string path = graphicsFile(mFontName); - if (path.size() > 4 ) path = path.substr(0, path.size() - 4); //some stupid manipulation because of the way WFont works in JGE - - int id = mWFontList.size(); - mWFontList.push_back(NEW WFBFont(path.c_str(), height, true)); - mWFontMap[fontName] = id; - mWFontList[id]->id = id; - - return mWFontList[id]; -} - -WFont * WResourceManager::GetWFont(const string &fontName) { - map::iterator itr; - - if (neofont) { - itr = mWFontMap.find(fontName); - if (itr != mWFontMap.end()) - return mWFontList[itr->second]; - else - return NULL; - } else { - itr = mWLBFontMap.find(fontName); - if (itr != mWLBFontMap.end()) - return mWLBFontList[itr->second]; - else - return NULL; - } -} - -WFont * WResourceManager::GetWFont(int id) { - if (neofont) { - return mWFontList[id]; - } else { - if (id >=0 && id < (int)mWLBFontList.size()) - return mWLBFontList[id]; - else - return NULL; - } -} - -WFont * WResourceManager::GetWLBFont(int id) { - if (id >=0 && id < (int)mWLBFontList.size()) - return mWLBFontList[id]; + + if (mFontFileExtension == kExtension_gbk) + { + font = NEW WFBFont(inFontID, path.c_str(), inFontHeight, true); + } else - return NULL; + { + font = NEW WLBFont(inFontID, path.c_str(), inFontHeight, true); + } + mWFontMap[inFontID] = font; + + return font; } -void WResourceManager::RemoveWLBFonts() { - for (vector::iterator font = mWLBFontList.begin(); font != mWLBFontList.end(); ++font) - delete *font; - mWLBFontList.clear(); - mWLBFontMap.clear(); +WFont* WResourceManager::GetWFont(int id) +{ + WFont* font = NULL; + FontMap::iterator iter = mWFontMap.find(id); + if (iter != mWFontMap.end()) + { + font = iter->second; + } + return font; } void WResourceManager::RemoveWFonts() { - for (vector::iterator font = mWFontList.begin(); font != mWFontList.end(); ++font) - delete *font; - mWFontList.clear(); + for (FontMap::iterator font = mWFontMap.begin(); font != mWFontMap.end(); ++font) + { + delete font->second; + } mWFontMap.clear(); } @@ -989,8 +947,7 @@ JMusic * WResourceManager::ssLoadMusic(const char *fileName){ void WResourceManager::Refresh(){ //Really easy cache relinking. - reloadWFonts(); - reloadWLBFonts(); + ReloadWFonts(); sampleWCache.Refresh(); textureWCache.Refresh(); psiWCache.Refresh(); @@ -1337,7 +1294,6 @@ WCache::~WCache(){ for(it=managed.begin();it!=managed.end();it++){ SAFE_DELETE(it->second); } - }