Forcing LF as the line ending style through SVN properties. No actual code changes here.

This commit is contained in:
wrenczes@gmail.com
2011-01-28 06:00:51 +00:00
parent 8156619d49
commit 32cabc15c2
20 changed files with 6391 additions and 6391 deletions
+21 -21
View File
@@ -1,21 +1,21 @@
#pragma once #pragma once
#include "DeckMenu.h" #include "DeckMenu.h"
#include "DeckDataWrapper.h" #include "DeckDataWrapper.h"
#include "DeckStats.h" #include "DeckStats.h"
class DeckEditorMenu: public DeckMenu class DeckEditorMenu: public DeckMenu
{ {
protected: protected:
string deckTitle; string deckTitle;
private: private:
void drawDeckStatistics(); void drawDeckStatistics();
DeckDataWrapper *selectedDeck; DeckDataWrapper *selectedDeck;
StatsWrapper *stw; StatsWrapper *stw;
public: public:
DeckEditorMenu(int id, JGuiListener* listener = NULL, int fontId = 1, const char * _title = "", DeckDataWrapper *selectedDeck = NULL, StatsWrapper *stats = NULL); DeckEditorMenu(int id, JGuiListener* listener = NULL, int fontId = 1, const char * _title = "", DeckDataWrapper *selectedDeck = NULL, StatsWrapper *stats = NULL);
void Render(); void Render();
~DeckEditorMenu(); ~DeckEditorMenu();
}; };
+43 -43
View File
@@ -1,43 +1,43 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include "DeckMetaData.h" #include "DeckMetaData.h"
using namespace std; using namespace std;
class DeckManager class DeckManager
{ {
private: private:
static bool instanceFlag; static bool instanceFlag;
static DeckManager *mInstance; static DeckManager *mInstance;
DeckManager() DeckManager()
{ {
//private constructor //private constructor
} }
public: public:
vector<DeckMetaData *> playerDeckOrderList; vector<DeckMetaData *> playerDeckOrderList;
vector<DeckMetaData *> aiDeckOrderList; vector<DeckMetaData *> aiDeckOrderList;
map<string, StatsWrapper *> playerDeckStatsMap; map<string, StatsWrapper *> playerDeckStatsMap;
map<string, StatsWrapper *> aiDeckStatsMap; map<string, StatsWrapper *> aiDeckStatsMap;
void updateMetaDataList(vector<DeckMetaData *>* refList, bool isAI); void updateMetaDataList(vector<DeckMetaData *>* refList, bool isAI);
vector<DeckMetaData *> * getPlayerDeckOrderList(); vector<DeckMetaData *> * getPlayerDeckOrderList();
vector<DeckMetaData *> * getAIDeckOrderList(); vector<DeckMetaData *> * getAIDeckOrderList();
DeckMetaData * getDeckMetaDataById( int deckId, bool isAI ); DeckMetaData * getDeckMetaDataById( int deckId, bool isAI );
StatsWrapper * getExtendedStatsForDeckId( int deckId, MTGAllCards *collection, bool isAI ); StatsWrapper * getExtendedStatsForDeckId( int deckId, MTGAllCards *collection, bool isAI );
StatsWrapper * getExtendedDeckStats( DeckMetaData *selectedDeck, MTGAllCards *collection, bool isAI ); StatsWrapper * getExtendedDeckStats( DeckMetaData *selectedDeck, MTGAllCards *collection, bool isAI );
static DeckManager * GetInstance(); static DeckManager * GetInstance();
static void EndInstance(); static void EndInstance();
//convenience method to get the difficulty rating between two decks. This should be refined a little more //convenience method to get the difficulty rating between two decks. This should be refined a little more
//since the eventual move of all deck meta data should be managed by this class //since the eventual move of all deck meta data should be managed by this class
static int getDifficultyRating(Player *statsPlayer, Player *player); static int getDifficultyRating(Player *statsPlayer, Player *player);
~DeckManager(); ~DeckManager();
}; };
+84 -84
View File
@@ -1,84 +1,84 @@
/* /*
A class for menus with a fixed layout A class for menus with a fixed layout
*/ */
#ifndef _DeckMenu_H_ #ifndef _DeckMenu_H_
#define _DeckMenu_H_ #define _DeckMenu_H_
#include <string> #include <string>
#include "WFont.h" #include "WFont.h"
#include "hge/hgeparticle.h" #include "hge/hgeparticle.h"
#include "DeckMetaData.h" #include "DeckMetaData.h"
#include "TextScroller.h" #include "TextScroller.h"
class DeckMenu: public JGuiController class DeckMenu: public JGuiController
{ {
protected: protected:
float mHeight, mWidth, mX, mY; float mHeight, mWidth, mX, mY;
float titleX, titleY, titleWidth; float titleX, titleY, titleWidth;
float descX, descY, descHeight, descWidth; float descX, descY, descHeight, descWidth;
float statsX, statsY, statsHeight, statsWidth; float statsX, statsY, statsHeight, statsWidth;
float avatarX, avatarY; float avatarX, avatarY;
float detailedInfoBoxX, detailedInfoBoxY; float detailedInfoBoxX, detailedInfoBoxY;
float starsOffsetX; float starsOffsetX;
bool menuInitialized; bool menuInitialized;
string backgroundName; string backgroundName;
int fontId; int fontId;
string title; string title;
string displayTitle; string displayTitle;
WFont * mFont; WFont * mFont;
float titleFontScale; float titleFontScale;
int maxItems, startId; int maxItems, startId;
float selectionT, selectionY; float selectionT, selectionY;
float timeOpen; float timeOpen;
static hgeParticleSystem* stars; static hgeParticleSystem* stars;
void initMenuItems(); void initMenuItems();
string getDescription(); string getDescription();
string getMetaInformation(); string getMetaInformation();
DeckMetaData *mSelectedDeck; DeckMetaData *mSelectedDeck;
int mSelectedDeckId; int mSelectedDeckId;
bool mShowDetailsScreen; bool mShowDetailsScreen;
bool mAlwaysShowDetailsButton; bool mAlwaysShowDetailsButton;
bool mClosed; bool mClosed;
public: public:
VerticalTextScroller * mScroller; VerticalTextScroller * mScroller;
bool mAutoTranslate; bool mAutoTranslate;
float mSelectionTargetY; float mSelectionTargetY;
//used for detailed info button //used for detailed info button
JQuad * pspIcons[8]; JQuad * pspIcons[8];
JTexture * pspIconsTexture; JTexture * pspIconsTexture;
DeckMenu(int id, JGuiListener* listener, int fontId, const string _title = "", const int& startIndex = 0, bool alwaysShowDetailsButton = false); DeckMenu(int id, JGuiListener* listener, int fontId, const string _title = "", const int& startIndex = 0, bool alwaysShowDetailsButton = false);
~DeckMenu(); ~DeckMenu();
DeckMetaData * getSelectedDeck(); DeckMetaData * getSelectedDeck();
void enableDisplayDetailsOverride(); void enableDisplayDetailsOverride();
bool showDetailsScreen(); bool showDetailsScreen();
bool isClosed() bool isClosed()
{ {
return mClosed; return mClosed;
} }
int getSelectedDeckId() int getSelectedDeckId()
{ {
return mSelectedDeckId; return mSelectedDeckId;
} }
void Render(); void Render();
void Update(float dt); void Update(float dt);
void Add(int id, const char * Text, string desc = "", bool forceFocus = false, DeckMetaData *deckMetaData = NULL); void Add(int id, const char * Text, string desc = "", bool forceFocus = false, DeckMetaData *deckMetaData = NULL);
void Close(); void Close();
void updateScroller(); void updateScroller();
void RenderBackground(); void RenderBackground();
static void destroy(); static void destroy();
}; };
#endif #endif
+109 -109
View File
@@ -1,109 +1,109 @@
#ifndef _DECKSTATS_H_ #ifndef _DECKSTATS_H_
#define _DECKSTATS_H_ #define _DECKSTATS_H_
#include <map> #include <map>
#include <string> #include <string>
#include <vector> #include <vector>
#include "MTGDefinitions.h" #include "MTGDefinitions.h"
#include <DeckDataWrapper.h> #include <DeckDataWrapper.h>
using namespace std; using namespace std;
class Player; class Player;
class GameObserver; class GameObserver;
class DeckStat class DeckStat
{ {
public: public:
DeckStat(int _nbgames = 0, int _victories = 0); DeckStat(int _nbgames = 0, int _victories = 0);
int nbgames; int nbgames;
int victories; int victories;
int percentVictories(); int percentVictories();
}; };
class DeckStats class DeckStats
{ {
protected: protected:
static DeckStats * mInstance; static DeckStats * mInstance;
public: public:
//map<string, DeckStat *> stats; // current set of statistics //map<string, DeckStat *> stats; // current set of statistics
string currentDeck; string currentDeck;
map<string, map<string,DeckStat*> > masterDeckStats; map<string, map<string,DeckStat*> > masterDeckStats;
static DeckStats * GetInstance(); static DeckStats * GetInstance();
static void EndInstance(); static void EndInstance();
void saveStats(Player * player, Player * opponent, GameObserver * game); void saveStats(Player * player, Player * opponent, GameObserver * game);
void save(const char * filename); void save(const char * filename);
void save(Player * player); void save(Player * player);
void load(const char * filename); void load(const char * filename);
void load(Player * player); void load(Player * player);
void cleanStats(); void cleanStats();
~DeckStats(); ~DeckStats();
int percentVictories(string opponentsDeckFile); int percentVictories(string opponentsDeckFile);
int percentVictories(); int percentVictories();
DeckStat * getDeckStat(string opponentsFile); DeckStat * getDeckStat(string opponentsFile);
//returns the total number of games played with this deck //returns the total number of games played with this deck
int nbGames(); int nbGames();
}; };
class StatsWrapper class StatsWrapper
{ {
private: private:
void initValues(); void initValues();
public: public:
StatsWrapper(int deckId); StatsWrapper(int deckId);
StatsWrapper(string filename); StatsWrapper(string filename);
~StatsWrapper(); ~StatsWrapper();
void initStatistics(string deckstats); void initStatistics(string deckstats);
// Stats parameters and status // Stats parameters and status
int mDeckId; int mDeckId;
int currentPage; int currentPage;
int pageCount; int pageCount;
bool needUpdate; bool needUpdate;
// Actual stats // Actual stats
int percentVictories; int percentVictories;
int gamesPlayed; int gamesPlayed;
int cardCount; int cardCount;
int countLands; int countLands;
int totalPrice; int totalPrice;
int totalManaCost; int totalManaCost;
float avgManaCost; float avgManaCost;
int totalCreatureCost; int totalCreatureCost;
float avgCreatureCost; float avgCreatureCost;
int totalSpellCost; int totalSpellCost;
float avgSpellCost; float avgSpellCost;
int countManaProducers; int countManaProducers;
int countCreatures, countSpells, countInstants, countEnchantments, countSorceries, countArtifacts; int countCreatures, countSpells, countInstants, countEnchantments, countSorceries, countArtifacts;
float noLandsProbInTurn[Constants::STATS_FOR_TURNS]; float noLandsProbInTurn[Constants::STATS_FOR_TURNS];
float noCreaturesProbInTurn[Constants::STATS_FOR_TURNS]; float noCreaturesProbInTurn[Constants::STATS_FOR_TURNS];
int countCardsPerCost[Constants::STATS_MAX_MANA_COST + 1]; int countCardsPerCost[Constants::STATS_MAX_MANA_COST + 1];
int countCardsPerCostAndColor[Constants::STATS_MAX_MANA_COST + 1][Constants::MTG_NB_COLORS + 1]; int countCardsPerCostAndColor[Constants::STATS_MAX_MANA_COST + 1][Constants::MTG_NB_COLORS + 1];
int countCreaturesPerCost[Constants::STATS_MAX_MANA_COST + 1]; int countCreaturesPerCost[Constants::STATS_MAX_MANA_COST + 1];
int countCreaturesPerCostAndColor[Constants::STATS_MAX_MANA_COST + 1][Constants::MTG_NB_COLORS + 1]; int countCreaturesPerCostAndColor[Constants::STATS_MAX_MANA_COST + 1][Constants::MTG_NB_COLORS + 1];
int countSpellsPerCost[Constants::STATS_MAX_MANA_COST + 1]; int countSpellsPerCost[Constants::STATS_MAX_MANA_COST + 1];
int countSpellsPerCostAndColor[Constants::STATS_MAX_MANA_COST + 1][Constants::MTG_NB_COLORS + 1]; int countSpellsPerCostAndColor[Constants::STATS_MAX_MANA_COST + 1][Constants::MTG_NB_COLORS + 1];
int countLandsPerColor[Constants::MTG_NB_COLORS + 1]; int countLandsPerColor[Constants::MTG_NB_COLORS + 1];
int countBasicLandsPerColor[Constants::MTG_NB_COLORS + 1]; int countBasicLandsPerColor[Constants::MTG_NB_COLORS + 1];
int countNonLandProducersPerColor[Constants::MTG_NB_COLORS + 1]; int countNonLandProducersPerColor[Constants::MTG_NB_COLORS + 1];
int totalCostPerColor[Constants::MTG_NB_COLORS + 1]; int totalCostPerColor[Constants::MTG_NB_COLORS + 1];
int totalColoredSymbols; int totalColoredSymbols;
void updateStats(string filename, MTGAllCards * collection); void updateStats(string filename, MTGAllCards * collection);
void updateStats(DeckDataWrapper *mtgDeck); void updateStats(DeckDataWrapper *mtgDeck);
int countCardsByType(const char * _type, DeckDataWrapper * myDeck); int countCardsByType(const char * _type, DeckDataWrapper * myDeck);
float noLuck(int n, int a, int x); float noLuck(int n, int a, int x);
vector<string> aiDeckNames; vector<string> aiDeckNames;
vector<DeckStat*> aiDeckStats; vector<DeckStat*> aiDeckStats;
}; };
#endif #endif
+153 -153
View File
@@ -1,153 +1,153 @@
#ifndef _EXTRACOST_H_ #ifndef _EXTRACOST_H_
#define _EXTRACOST_H_ #define _EXTRACOST_H_
#include <vector> #include <vector>
#include "Counters.h" #include "Counters.h"
using std::vector; using std::vector;
class TargetChooser; class TargetChooser;
class MTGCardInstance; class MTGCardInstance;
class MTGAbility; class MTGAbility;
class ExtraCost{ class ExtraCost{
public: public:
TargetChooser * tc; TargetChooser * tc;
MTGCardInstance * source; MTGCardInstance * source;
MTGCardInstance * target; MTGCardInstance * target;
MTGCardInstance * targets[20]; MTGCardInstance * targets[20];
std::string mCostRenderString; std::string mCostRenderString;
ExtraCost(const std::string& inCostRenderString, TargetChooser *_tc = NULL); ExtraCost(const std::string& inCostRenderString, TargetChooser *_tc = NULL);
virtual ~ExtraCost(); virtual ~ExtraCost();
virtual int setPayment(MTGCardInstance * card); virtual int setPayment(MTGCardInstance * card);
virtual int isPaymentSet() { return (target != NULL && targets != NULL); } virtual int isPaymentSet() { return (target != NULL && targets != NULL); }
virtual int canPay() { return 1; } virtual int canPay() { return 1; }
virtual int doPay() = 0; virtual int doPay() = 0;
virtual void Render(); virtual void Render();
virtual int setSource(MTGCardInstance * _source); virtual int setSource(MTGCardInstance * _source);
virtual ExtraCost* clone() const = 0; virtual ExtraCost* clone() const = 0;
}; };
class ExtraCosts{ class ExtraCosts{
public: public:
vector<ExtraCost *>costs; vector<ExtraCost *>costs;
MTGCardInstance * source; MTGCardInstance * source;
MTGAbility * action; MTGAbility * action;
ExtraCosts(); ExtraCosts();
~ExtraCosts(); ~ExtraCosts();
void Render(); void Render();
int tryToSetPayment(MTGCardInstance * card); int tryToSetPayment(MTGCardInstance * card);
int isPaymentSet(); int isPaymentSet();
int canPay(); int canPay();
int doPay(); int doPay();
int reset(); int reset();
int setAction(MTGAbility * _action, MTGCardInstance * _source); int setAction(MTGAbility * _action, MTGCardInstance * _source);
void Dump(); void Dump();
ExtraCosts * clone() const; ExtraCosts * clone() const;
}; };
class SacrificeCost: public ExtraCost{ class SacrificeCost: public ExtraCost{
public: public:
SacrificeCost(TargetChooser *_tc = NULL); SacrificeCost(TargetChooser *_tc = NULL);
virtual int doPay(); virtual int doPay();
virtual SacrificeCost * clone() const; virtual SacrificeCost * clone() const;
}; };
//life cost //life cost
class LifeCost: public ExtraCost{ class LifeCost: public ExtraCost{
public: public:
LifeCost(TargetChooser *_tc = NULL); LifeCost(TargetChooser *_tc = NULL);
virtual int doPay(); virtual int doPay();
virtual LifeCost * clone() const; virtual LifeCost * clone() const;
}; };
//Discard a random card cost //Discard a random card cost
class DiscardRandomCost: public ExtraCost{ class DiscardRandomCost: public ExtraCost{
public: public:
DiscardRandomCost(TargetChooser *_tc = NULL); DiscardRandomCost(TargetChooser *_tc = NULL);
virtual int canPay(); virtual int canPay();
virtual int doPay(); virtual int doPay();
virtual DiscardRandomCost * clone() const; virtual DiscardRandomCost * clone() const;
}; };
//a choosen discard //a choosen discard
class DiscardCost: public ExtraCost{ class DiscardCost: public ExtraCost{
public: public:
DiscardCost(TargetChooser *_tc = NULL); DiscardCost(TargetChooser *_tc = NULL);
virtual int doPay(); virtual int doPay();
virtual DiscardCost * clone() const; virtual DiscardCost * clone() const;
}; };
//tolibrary cost //tolibrary cost
class ToLibraryCost: public ExtraCost{ class ToLibraryCost: public ExtraCost{
public: public:
ToLibraryCost(TargetChooser *_tc = NULL); ToLibraryCost(TargetChooser *_tc = NULL);
virtual int doPay(); virtual int doPay();
virtual ToLibraryCost * clone() const; virtual ToLibraryCost * clone() const;
}; };
//Millyourself cost //Millyourself cost
class MillCost: public ExtraCost{ class MillCost: public ExtraCost{
public: public:
MillCost(TargetChooser *_tc = NULL); MillCost(TargetChooser *_tc = NULL);
virtual int canPay(); virtual int canPay();
virtual int doPay(); virtual int doPay();
virtual MillCost * clone() const; virtual MillCost * clone() const;
}; };
//Mill to exile yourself cost //Mill to exile yourself cost
class MillExileCost: public MillCost{ class MillExileCost: public MillCost{
public: public:
MillExileCost(TargetChooser *_tc = NULL); MillExileCost(TargetChooser *_tc = NULL);
virtual int doPay(); virtual int doPay();
}; };
//tap other cost //tap other cost
class TapTargetCost: public ExtraCost{ class TapTargetCost: public ExtraCost{
public: public:
TapTargetCost(TargetChooser *_tc = NULL); TapTargetCost(TargetChooser *_tc = NULL);
virtual int isPaymentSet(); virtual int isPaymentSet();
virtual int doPay(); virtual int doPay();
virtual TapTargetCost * clone() const; virtual TapTargetCost * clone() const;
}; };
//exile as cost //exile as cost
class ExileTargetCost: public ExtraCost{ class ExileTargetCost: public ExtraCost{
public: public:
ExileTargetCost(TargetChooser *_tc = NULL); ExileTargetCost(TargetChooser *_tc = NULL);
virtual int doPay(); virtual int doPay();
virtual ExileTargetCost * clone() const; virtual ExileTargetCost * clone() const;
}; };
//bounce cost //bounce cost
class BounceTargetCost: public ExtraCost{ class BounceTargetCost: public ExtraCost{
public: public:
BounceTargetCost(TargetChooser *_tc = NULL); BounceTargetCost(TargetChooser *_tc = NULL);
virtual int doPay(); virtual int doPay();
virtual BounceTargetCost * clone() const; virtual BounceTargetCost * clone() const;
}; };
//bounce cost //bounce cost
class Ninja: public ExtraCost{ class Ninja: public ExtraCost{
public: public:
Ninja(TargetChooser *_tc = NULL); Ninja(TargetChooser *_tc = NULL);
virtual int isPaymentSet(); virtual int isPaymentSet();
virtual int doPay(); virtual int doPay();
virtual Ninja * clone() const; virtual Ninja * clone() const;
}; };
class CounterCost: public ExtraCost{ class CounterCost: public ExtraCost{
public: public:
Counter * counter; Counter * counter;
int hasCounters; int hasCounters;
CounterCost(Counter * _counter,TargetChooser *_tc = NULL); CounterCost(Counter * _counter,TargetChooser *_tc = NULL);
~CounterCost(); ~CounterCost();
virtual int setPayment(MTGCardInstance * card); virtual int setPayment(MTGCardInstance * card);
virtual int isPaymentSet(); virtual int isPaymentSet();
virtual int canPay(); virtual int canPay();
virtual int doPay(); virtual int doPay();
virtual CounterCost * clone() const; virtual CounterCost * clone() const;
}; };
#endif #endif
+152 -152
View File
@@ -1,152 +1,152 @@
#ifndef _GAME_STATE_DECK_VIEWER_H_ #ifndef _GAME_STATE_DECK_VIEWER_H_
#define _GAME_STATE_DECK_VIEWER_H_ #define _GAME_STATE_DECK_VIEWER_H_
#include <math.h> #include <math.h>
#include <iostream> #include <iostream>
#include <JGE.h> #include <JGE.h>
#include "GameState.h" #include "GameState.h"
#include "DeckEditorMenu.h" #include "DeckEditorMenu.h"
#include "SimpleMenu.h" #include "SimpleMenu.h"
#include "WResourceManager.h" #include "WResourceManager.h"
#include "CardGui.h" #include "CardGui.h"
#include "GameOptions.h" #include "GameOptions.h"
#include "PriceList.h" #include "PriceList.h"
#include "PlayerData.h" #include "PlayerData.h"
#include "DeckDataWrapper.h" #include "DeckDataWrapper.h"
#include "DeckStats.h" #include "DeckStats.h"
#include "WDataSrc.h" #include "WDataSrc.h"
#include "WGui.h" #include "WGui.h"
#define NO_USER_ACTIVITY_HELP_DELAY 10 #define NO_USER_ACTIVITY_HELP_DELAY 10
#define NO_USER_ACTIVITY_SHOWCARD_DELAY 0.1 #define NO_USER_ACTIVITY_SHOWCARD_DELAY 0.1
enum enum
{ {
STAGE_TRANSITION_RIGHT = 0, STAGE_TRANSITION_RIGHT = 0,
STAGE_TRANSITION_LEFT = 1, STAGE_TRANSITION_LEFT = 1,
STAGE_WAITING = 2, STAGE_WAITING = 2,
STAGE_TRANSITION_UP = 3, STAGE_TRANSITION_UP = 3,
STAGE_TRANSITION_DOWN = 4, STAGE_TRANSITION_DOWN = 4,
STAGE_ONSCREEN_MENU = 5, STAGE_ONSCREEN_MENU = 5,
STAGE_WELCOME = 6, STAGE_WELCOME = 6,
STAGE_MENU = 7, STAGE_MENU = 7,
STAGE_FILTERS = 8 STAGE_FILTERS = 8
}; };
// TODO: need a better name for MENU_FIRST_MENU, this is reused for the 1st submenu of // TODO: need a better name for MENU_FIRST_MENU, this is reused for the 1st submenu of
// available options in the duel menu // available options in the duel menu
enum enum
{ {
MENU_CARD_PURCHASE = 2, MENU_CARD_PURCHASE = 2,
MENU_DECK_SELECTION = 10, MENU_DECK_SELECTION = 10,
MENU_DECK_BUILDER = 11, MENU_DECK_BUILDER = 11,
MENU_FIRST_DUEL_SUBMENU = 102, MENU_FIRST_DUEL_SUBMENU = 102,
MENU_LANGUAGE_SELECTION = 103, MENU_LANGUAGE_SELECTION = 103,
}; };
// enums for menu options // enums for menu options
// TODO: make these enums a little more descriptive. (ie should reflect what menu they are attached to ) // TODO: make these enums a little more descriptive. (ie should reflect what menu they are attached to )
enum DECK_VIEWER_MENU_ITEMS enum DECK_VIEWER_MENU_ITEMS
{ {
MENU_ITEM_NEW_DECK = -30, MENU_ITEM_NEW_DECK = -30,
MENU_ITEM_CHEAT_MODE = -12, MENU_ITEM_CHEAT_MODE = -12,
MENU_ITEM_CANCEL = kCancelMenuID, MENU_ITEM_CANCEL = kCancelMenuID,
MENU_ITEM_SAVE_RETURN_MAIN_MENU = 0, MENU_ITEM_SAVE_RETURN_MAIN_MENU = 0,
MENU_ITEM_SAVE_RENAME = 1, MENU_ITEM_SAVE_RENAME = 1,
MENU_ITEM_SWITCH_DECKS_NO_SAVE = 2, MENU_ITEM_SWITCH_DECKS_NO_SAVE = 2,
MENU_ITEM_MAIN_MENU = 3, MENU_ITEM_MAIN_MENU = 3,
MENU_ITEM_EDITOR_CANCEL = kCancelMenuID, MENU_ITEM_EDITOR_CANCEL = kCancelMenuID,
MENU_ITEM_SAVE_AS_AI_DECK = 5, MENU_ITEM_SAVE_AS_AI_DECK = 5,
MENU_ITEM_YES = 20, MENU_ITEM_YES = 20,
MENU_ITEM_NO = 21, MENU_ITEM_NO = 21,
MENU_ITEM_FILTER_BY = 22, MENU_ITEM_FILTER_BY = 22,
MENUITEM_MORE_INFO = kInfoMenuID MENUITEM_MORE_INFO = kInfoMenuID
}; };
#define ALL_COLORS -1 #define ALL_COLORS -1
#define ROTATE_LEFT 1; #define ROTATE_LEFT 1;
#define ROTATE_RIGHT 0; #define ROTATE_RIGHT 0;
#define HIGH_SPEED 15.0 #define HIGH_SPEED 15.0
#define MED_SPEED 5.0f #define MED_SPEED 5.0f
#define LOW_SPEED 1.5 #define LOW_SPEED 1.5
#define MAX_SAVED_FILTERS 8 #define MAX_SAVED_FILTERS 8
#define CARDS_DISPLAYED 7 #define CARDS_DISPLAYED 7
class GameStateDeckViewer: public GameState, public JGuiListener class GameStateDeckViewer: public GameState, public JGuiListener
{ {
private: private:
JQuad * mIcons[CARDS_DISPLAYED]; JQuad * mIcons[CARDS_DISPLAYED];
JQuad * pspIcons[8]; JQuad * pspIcons[8];
JTexture * pspIconsTexture; JTexture * pspIconsTexture;
float last_user_activity; float last_user_activity;
float onScreenTransition; float onScreenTransition;
float mRotation; float mRotation;
float mSlide; float mSlide;
int mAlpha; int mAlpha;
int mStage; int mStage;
int nbDecks; int nbDecks;
int deckNum; int deckNum;
int useFilter; int useFilter;
JMusic * bgMusic; JMusic * bgMusic;
JQuad * backQuad; JQuad * backQuad;
int lastPos; int lastPos;
int lastTotal; int lastTotal;
WGuiFilters * filterMenu; WGuiFilters * filterMenu;
WSrcDeckViewer * source; WSrcDeckViewer * source;
DeckEditorMenu * welcome_menu; DeckEditorMenu * welcome_menu;
SimpleMenu * subMenu; SimpleMenu * subMenu;
DeckEditorMenu * menu; DeckEditorMenu * menu;
PriceList* pricelist; PriceList* pricelist;
PlayerData * playerdata; PlayerData * playerdata;
int price; int price;
DeckDataWrapper * displayed_deck; DeckDataWrapper * displayed_deck;
DeckDataWrapper * myDeck; DeckDataWrapper * myDeck;
DeckDataWrapper * myCollection; DeckDataWrapper * myCollection;
MTGCard * cardIndex[CARDS_DISPLAYED]; MTGCard * cardIndex[CARDS_DISPLAYED];
StatsWrapper *stw; StatsWrapper *stw;
int hudAlpha; int hudAlpha;
string newDeckname; string newDeckname;
bool isAIDeckSave; bool isAIDeckSave;
bool mSwitching; bool mSwitching;
void saveDeck(); //Saves the deck and additional necessary information void saveDeck(); //Saves the deck and additional necessary information
void saveAsAIDeck(string deckName); // saves deck as an AI Deck void saveAsAIDeck(string deckName); // saves deck as an AI Deck
int getCurrentPos(); int getCurrentPos();
pair<float, float> cardsCoordinates[CARDS_DISPLAYED]; pair<float, float> cardsCoordinates[CARDS_DISPLAYED];
public: public:
GameStateDeckViewer(GameApp* parent); GameStateDeckViewer(GameApp* parent);
virtual ~GameStateDeckViewer(); virtual ~GameStateDeckViewer();
void updateDecks(); void updateDecks();
void rotateCards(int direction); void rotateCards(int direction);
void loadIndexes(); void loadIndexes();
void updateFilters(); void updateFilters();
void rebuildFilters(); void rebuildFilters();
void switchDisplay(); void switchDisplay();
void Start(); void Start();
virtual void End(); virtual void End();
void addRemove(MTGCard * card); void addRemove(MTGCard * card);
virtual void Update(float dt); virtual void Update(float dt);
void renderOnScreenBasicInfo(); void renderOnScreenBasicInfo();
void renderSlideBar(); void renderSlideBar();
void renderDeckBackground(); void renderDeckBackground();
void renderOnScreenMenu(); void renderOnScreenMenu();
virtual void renderCard(int id, float rotation); virtual void renderCard(int id, float rotation);
virtual void renderCard(int id); virtual void renderCard(int id);
virtual void Render(); virtual void Render();
int loadDeck(int deckid); int loadDeck(int deckid);
void LoadDeckStatistics(int deckId); void LoadDeckStatistics(int deckId);
void buildEditorMenu(); void buildEditorMenu();
virtual void ButtonPressed(int controllerId, int controlId); virtual void ButtonPressed(int controllerId, int controlId);
}; };
#endif #endif
+76 -76
View File
@@ -1,76 +1,76 @@
#ifndef _GAME_STATE_DUEL_H_ #ifndef _GAME_STATE_DUEL_H_
#define _GAME_STATE_DUEL_H_ #define _GAME_STATE_DUEL_H_
#include "GameState.h" #include "GameState.h"
#include "SimpleMenu.h" #include "SimpleMenu.h"
#include "SimplePopup.h" #include "SimplePopup.h"
#include "DeckMenu.h" #include "DeckMenu.h"
#include "MTGDeck.h" #include "MTGDeck.h"
#include "GameObserver.h" #include "GameObserver.h"
#define CHOOSE_OPPONENT 7 #define CHOOSE_OPPONENT 7
#ifdef TESTSUITE #ifdef TESTSUITE
class TestSuite; class TestSuite;
#endif #endif
class Credits; class Credits;
class Rules; class Rules;
class GameStateDuel: public GameState, public JGuiListener class GameStateDuel: public GameState, public JGuiListener
{ {
private: private:
#ifdef TESTSUITE #ifdef TESTSUITE
TestSuite * testSuite; TestSuite * testSuite;
#endif #endif
Credits * credits; Credits * credits;
int mGamePhase; int mGamePhase;
Player * mCurrentPlayer; Player * mCurrentPlayer;
Player * mPlayers[2]; Player * mPlayers[2];
MTGPlayerCards * deck[2]; MTGPlayerCards * deck[2];
GameObserver * game; GameObserver * game;
DeckMenu * deckmenu; DeckMenu * deckmenu;
DeckMenu * opponentMenu; DeckMenu * opponentMenu;
SimpleMenu * menu; SimpleMenu * menu;
SimplePopup * popupScreen; // used for informational screens, modal SimplePopup * popupScreen; // used for informational screens, modal
static int selectedPlayerDeckId; static int selectedPlayerDeckId;
static int selectedAIDeckId; static int selectedAIDeckId;
bool premadeDeck; bool premadeDeck;
int OpponentsDeckid; int OpponentsDeckid;
string musictrack; string musictrack;
Rules * rules; Rules * rules;
bool MusicExist(string FileName); bool MusicExist(string FileName);
void loadPlayer(int playerId, int decknb = 0, int isAI = 0); void loadPlayer(int playerId, int decknb = 0, int isAI = 0);
void ConstructOpponentMenu(); //loads the opponentMenu if it doesn't exist void ConstructOpponentMenu(); //loads the opponentMenu if it doesn't exist
void initScroller(); void initScroller();
public: public:
GameStateDuel(GameApp* parent); GameStateDuel(GameApp* parent);
virtual ~GameStateDuel(); virtual ~GameStateDuel();
#ifdef TESTSUITE #ifdef TESTSUITE
void loadTestSuitePlayers(); void loadTestSuitePlayers();
#endif #endif
virtual void ButtonPressed(int ControllerId, int ControlId); virtual void ButtonPressed(int ControllerId, int ControlId);
virtual void Start(); virtual void Start();
virtual void End(); virtual void End();
virtual void Update(float dt); virtual void Update(float dt);
virtual void Render(); virtual void Render();
void initRand(unsigned seed = 0); void initRand(unsigned seed = 0);
enum ENUM_DUEL_STATE_MENU_ITEM enum ENUM_DUEL_STATE_MENU_ITEM
{ {
MENUITEM_CANCEL = kCancelMenuID, MENUITEM_CANCEL = kCancelMenuID,
MENUITEM_NEW_DECK = -10, MENUITEM_NEW_DECK = -10,
MENUITEM_RANDOM_PLAYER = -11, MENUITEM_RANDOM_PLAYER = -11,
MENUITEM_RANDOM_AI = -12, MENUITEM_RANDOM_AI = -12,
MENUITEM_MAIN_MENU = -13, MENUITEM_MAIN_MENU = -13,
MENUITEM_EVIL_TWIN = -14, MENUITEM_EVIL_TWIN = -14,
MENUITEM_MULLIGAN = -15, MENUITEM_MULLIGAN = -15,
MENUITEM_MORE_INFO = kInfoMenuID MENUITEM_MORE_INFO = kInfoMenuID
}; };
}; };
#endif #endif
+113 -113
View File
@@ -1,113 +1,113 @@
#ifndef _PLAYER_H_ #ifndef _PLAYER_H_
#define _PLAYER_H_ #define _PLAYER_H_
#include "JGE.h" #include "JGE.h"
#include "MTGGameZones.h" #include "MTGGameZones.h"
#include "Damage.h" #include "Damage.h"
#include "Targetable.h" #include "Targetable.h"
class MTGDeck; class MTGDeck;
class MTGPlayerCards; class MTGPlayerCards;
class MTGInPlay; class MTGInPlay;
class ManaPool; class ManaPool;
class Player: public Damageable class Player: public Damageable
{ {
protected: protected:
ManaPool * manaPool; ManaPool * manaPool;
public: public:
enum ENUM_PLAY_MODE enum ENUM_PLAY_MODE
{ {
MODE_TEST_SUITE, MODE_TEST_SUITE,
MODE_HUMAN, MODE_HUMAN,
MODE_AI MODE_AI
}; };
JTexture * mAvatarTex; JTexture * mAvatarTex;
JQuad * mAvatar; JQuad * mAvatar;
int playMode; int playMode;
bool canPutLandsIntoPlay; bool canPutLandsIntoPlay;
int landsPlayerCanStillPlay; int landsPlayerCanStillPlay;
bool nomaxhandsize; bool nomaxhandsize;
int castedspellsthisturn; int castedspellsthisturn;
bool onlyonecast; bool onlyonecast;
int castcount; int castcount;
bool nocreatureinstant; bool nocreatureinstant;
bool nospellinstant; bool nospellinstant;
bool onlyoneinstant; bool onlyoneinstant;
bool castrestrictedcreature; bool castrestrictedcreature;
bool castrestrictedspell; bool castrestrictedspell;
bool onlyoneboth; bool onlyoneboth;
bool bothrestrictedspell; bool bothrestrictedspell;
bool bothrestrictedcreature; bool bothrestrictedcreature;
bool isPoisoned; bool isPoisoned;
MTGPlayerCards * game; MTGPlayerCards * game;
string deckFile; string deckFile;
string deckFileSmall; string deckFileSmall;
string deckName; string deckName;
Player(MTGDeck * deck, string deckFile, string deckFileSmall); Player(MTGDeck * deck, string deckFile, string deckFileSmall);
virtual ~Player(); virtual ~Player();
virtual void End(); virtual void End();
virtual int displayStack() virtual int displayStack()
{ {
return 1; return 1;
} }
const string getDisplayName() const; const string getDisplayName() const;
int typeAsTarget() int typeAsTarget()
{ {
return TARGET_PLAYER; return TARGET_PLAYER;
} }
int afterDamage(); int afterDamage();
int gainLife(int value); int gainLife(int value);
int loseLife(int value); int loseLife(int value);
int gainOrLoseLife(int value); int gainOrLoseLife(int value);
int poisoned(); int poisoned();
int damaged(); int damaged();
int prevented(); int prevented();
void unTapPhase(); void unTapPhase();
MTGInPlay * inPlay(); MTGInPlay * inPlay();
ManaPool * getManaPool(); ManaPool * getManaPool();
void cleanupPhase(); void cleanupPhase();
virtual int Act(float dt) virtual int Act(float dt)
{ {
return 0; return 0;
} }
virtual int isAI() virtual int isAI()
{ {
return 0; return 0;
} }
Player * opponent(); Player * opponent();
int getId(); int getId();
JQuad * getIcon(); JQuad * getIcon();
virtual int receiveEvent(WEvent * event) virtual int receiveEvent(WEvent * event)
{ {
return 0; return 0;
} }
virtual void Render() virtual void Render()
{ {
} }
void loadAvatar(string file); void loadAvatar(string file);
}; };
class HumanPlayer: public Player class HumanPlayer: public Player
{ {
public: public:
HumanPlayer(MTGDeck * deck, string deckFile, string deckFileSmall); HumanPlayer(MTGDeck * deck, string deckFile, string deckFileSmall);
HumanPlayer(string deckFile); HumanPlayer(string deckFile);
}; };
ostream& operator<<(ostream&, const Player&); ostream& operator<<(ostream&, const Player&);
#endif #endif
+50 -50
View File
@@ -1,50 +1,50 @@
#ifndef _REPLACEMENT_EFFECTS_H_ #ifndef _REPLACEMENT_EFFECTS_H_
#define _REPLACEMENT_EFFECTS_H_ #define _REPLACEMENT_EFFECTS_H_
#include <list> #include <list>
using namespace std; using namespace std;
#include "Damage.h" #include "Damage.h"
#include "WEvent.h" #include "WEvent.h"
class TargetChooser; class TargetChooser;
class MTGAbility; class MTGAbility;
class ReplacementEffect class ReplacementEffect
{ {
public: public:
virtual WEvent * replace(WEvent * e) virtual WEvent * replace(WEvent * e)
{ {
return e; return e;
} }
; ;
virtual ~ReplacementEffect() {} virtual ~ReplacementEffect() {}
}; };
class REDamagePrevention: public ReplacementEffect class REDamagePrevention: public ReplacementEffect
{ {
protected: protected:
MTGAbility * source; MTGAbility * source;
TargetChooser * tcSource; TargetChooser * tcSource;
TargetChooser * tcTarget; TargetChooser * tcTarget;
int damage; int damage;
bool oneShot; bool oneShot;
int typeOfDamage; int typeOfDamage;
public: public:
REDamagePrevention(MTGAbility * _source, TargetChooser *_tcSource = NULL, TargetChooser *_tcTarget = NULL, int _damage = -1, bool _oneShot = true, int typeOfDamage = DAMAGE_ALL_TYPES); REDamagePrevention(MTGAbility * _source, TargetChooser *_tcSource = NULL, TargetChooser *_tcTarget = NULL, int _damage = -1, bool _oneShot = true, int typeOfDamage = DAMAGE_ALL_TYPES);
WEvent * replace(WEvent *e); WEvent * replace(WEvent *e);
~REDamagePrevention(); ~REDamagePrevention();
}; };
class ReplacementEffects class ReplacementEffects
{ {
protected: protected:
list<ReplacementEffect *> modifiers; list<ReplacementEffect *> modifiers;
public: public:
ReplacementEffects(); ReplacementEffects();
WEvent * replace(WEvent *e); WEvent * replace(WEvent *e);
int add(ReplacementEffect * re); int add(ReplacementEffect * re);
int remove(ReplacementEffect * re); int remove(ReplacementEffect * re);
~ReplacementEffects(); ~ReplacementEffects();
}; };
#endif #endif
+58 -58
View File
@@ -1,58 +1,58 @@
/* /*
* SimplePopup.h * SimplePopup.h
* Created on: Nov 18, 2010 * Created on: Nov 18, 2010
* *
* Simple popup dialog box for displaying information only. * Simple popup dialog box for displaying information only.
*/ */
#ifndef SIMPLEPOPUP_H_ #ifndef SIMPLEPOPUP_H_
#define SIMPLEPOPUP_H_ #define SIMPLEPOPUP_H_
#pragma once #pragma once
#include <JGui.h> #include <JGui.h>
#include <JTypes.h> #include <JTypes.h>
#include <WFont.h> #include <WFont.h>
#include <DeckMetaData.h> #include <DeckMetaData.h>
class SimplePopup: public JGuiController class SimplePopup: public JGuiController
{ {
private: private:
float mWidth, mX, mY; float mWidth, mX, mY;
int mMaxLines; int mMaxLines;
int mFontId; int mFontId;
DeckMetaData * mDeckInformation; DeckMetaData * mDeckInformation;
string mTitle; string mTitle;
WFont *mTextFont; WFont *mTextFont;
StatsWrapper *mStatsWrapper; StatsWrapper *mStatsWrapper;
bool mClosed; bool mClosed;
MTGAllCards * mCollection; MTGAllCards * mCollection;
void drawHorzPole(string imageName, bool flipX, bool flipY, float x, float y, float width); void drawHorzPole(string imageName, bool flipX, bool flipY, float x, float y, float width);
void drawCorner(string imageName, bool flipX, bool flipY, float x, float y); void drawCorner(string imageName, bool flipX, bool flipY, float x, float y);
void drawVertPole(string imageName, bool flipX, bool flipY, float x, float y, float height); void drawVertPole(string imageName, bool flipX, bool flipY, float x, float y, float height);
public: public:
bool autoTranslate; bool autoTranslate;
SimplePopup(int id, JGuiListener* listener, const int fontId, const char * _title = "", DeckMetaData* deckInfo = NULL, MTGAllCards * collection = NULL); SimplePopup(int id, JGuiListener* listener, const int fontId, const char * _title = "", DeckMetaData* deckInfo = NULL, MTGAllCards * collection = NULL);
~SimplePopup(void); ~SimplePopup(void);
void drawBoundingBox(float x, float y, float width, float height); void drawBoundingBox(float x, float y, float width, float height);
bool isClosed() bool isClosed()
{ {
return mClosed; return mClosed;
} }
MTGAllCards* getCollection() MTGAllCards* getCollection()
{ {
return mCollection; return mCollection;
} }
void Render(); void Render();
void Update(DeckMetaData* deckMetaData); void Update(DeckMetaData* deckMetaData);
string getDetailedInformation(string deckFilename); string getDetailedInformation(string deckFilename);
void Update(float dt); void Update(float dt);
void Close(); void Close();
}; };
#endif /* SIMPLEPOPUP_H_ */ #endif /* SIMPLEPOPUP_H_ */
+55 -55
View File
@@ -1,55 +1,55 @@
#ifndef _TEXTSCROLLER_H_ #ifndef _TEXTSCROLLER_H_
#define _TEXTSCROLLER_H_ #define _TEXTSCROLLER_H_
class JLBFont; class JLBFont;
#include <JGui.h> #include <JGui.h>
#include <string> #include <string>
#include <vector> #include <vector>
using namespace std; using namespace std;
class TextScroller: public JGuiObject class TextScroller: public JGuiObject
{ {
protected: protected:
string mText; string mText;
string tempText; string tempText;
int fontId; int fontId;
float mWidth; // width of the text scroller object float mWidth; // width of the text scroller object
float mScrollSpeed; float mScrollSpeed;
float mX; float mX;
float mY; float mY;
float start; float start;
int timer; int timer;
vector<string> strings; vector<string> strings;
unsigned int currentId; unsigned int currentId;
int mRandom; int mRandom;
int scrollDirection; int scrollDirection;
public: public:
TextScroller(int fontId, float x, float y, float width, float speed = 30); TextScroller(int fontId, float x, float y, float width, float speed = 30);
void Add(string text); void Add(string text);
void Reset(); void Reset();
void setRandom(int mode = 1); void setRandom(int mode = 1);
void Render(); void Render();
void Update(float dt); void Update(float dt);
virtual ostream& toString(ostream& out) const; virtual ostream& toString(ostream& out) const;
}; };
class VerticalTextScroller: public TextScroller class VerticalTextScroller: public TextScroller
{ {
private: private:
size_t mNbItemsShown; size_t mNbItemsShown;
float mHeight; // maximum height availble for display float mHeight; // maximum height availble for display
float mMarginX; float mMarginX;
float mMarginY; // margin used to allow text to scroll off screen without float mMarginY; // margin used to allow text to scroll off screen without
// affecting look and feel. Should be enough // affecting look and feel. Should be enough
// for at least one line of text ( mY - line height of current font ) // for at least one line of text ( mY - line height of current font )
float mOriginalY; // mY initially, used to restore scroller to original position after update float mOriginalY; // mY initially, used to restore scroller to original position after update
public: public:
VerticalTextScroller(int fontId, float x, float y, float width, float height, float scrollSpeed = 30, size_t _minimumItems = 1); VerticalTextScroller(int fontId, float x, float y, float width, float height, float scrollSpeed = 30, size_t _minimumItems = 1);
void Render(); void Render();
void Update(float dt); void Update(float dt);
void Add(string text); void Add(string text);
}; };
#endif #endif
+13 -13
View File
@@ -1,13 +1,13 @@
#ifndef _TOKEN_H_ #ifndef _TOKEN_H_
#define _TOKEN_H_ #define _TOKEN_H_
#include "MTGCardInstance.h" #include "MTGCardInstance.h"
class Token: public MTGCardInstance class Token: public MTGCardInstance
{ {
MTGCardInstance * tokenSource; MTGCardInstance * tokenSource;
public: public:
Token(string _name, MTGCardInstance * source, int _power = 0, int _toughness = 0); Token(string _name, MTGCardInstance * source, int _power = 0, int _toughness = 0);
}; };
#endif #endif
+100 -100
View File
@@ -1,100 +1,100 @@
#include "PrecompiledHeader.h" #include "PrecompiledHeader.h"
#include "DeckEditorMenu.h" #include "DeckEditorMenu.h"
#include "DeckDataWrapper.h" #include "DeckDataWrapper.h"
#include "DeckStats.h" #include "DeckStats.h"
#include "JTypes.h" #include "JTypes.h"
#include "GameApp.h" #include "GameApp.h"
#include <iomanip> #include <iomanip>
DeckEditorMenu::DeckEditorMenu(int id, JGuiListener* listener, int fontId, const char * _title, DeckDataWrapper *_selectedDeck, StatsWrapper *stats) : DeckEditorMenu::DeckEditorMenu(int id, JGuiListener* listener, int fontId, const char * _title, DeckDataWrapper *_selectedDeck, StatsWrapper *stats) :
DeckMenu(id, listener, fontId, _title), selectedDeck(_selectedDeck), stw(stats) DeckMenu(id, listener, fontId, _title), selectedDeck(_selectedDeck), stw(stats)
{ {
backgroundName = "DeckEditorMenuBackdrop"; backgroundName = "DeckEditorMenuBackdrop";
mShowDetailsScreen = false; mShowDetailsScreen = false;
deckTitle = selectedDeck ? selectedDeck->parent->meta_name : ""; deckTitle = selectedDeck ? selectedDeck->parent->meta_name : "";
mX = 123; mX = 123;
mY = 70; mY = 70;
starsOffsetX = 50; starsOffsetX = 50;
titleX = 110; // center point in title box titleX = 110; // center point in title box
titleY = 25; titleY = 25;
titleWidth = 180; // width of inner box of title titleWidth = 180; // width of inner box of title
descX = 275; descX = 275;
descY = 80; descY = 80;
descHeight = 154; descHeight = 154;
descWidth = 175; descWidth = 175;
statsHeight = 50; statsHeight = 50;
statsWidth = 185; statsWidth = 185;
statsX = 280; statsX = 280;
statsY = 12; statsY = 12;
avatarX = 222; avatarX = 222;
avatarY = 8; avatarY = 8;
float scrollerWidth = 80; float scrollerWidth = 80;
SAFE_DELETE(mScroller); // need to delete the scroller init in the base class SAFE_DELETE(mScroller); // need to delete the scroller init in the base class
mScroller = NEW VerticalTextScroller(Fonts::MAIN_FONT, 40, 230, scrollerWidth, 100); mScroller = NEW VerticalTextScroller(Fonts::MAIN_FONT, 40, 230, scrollerWidth, 100);
} }
void DeckEditorMenu::Render() void DeckEditorMenu::Render()
{ {
JRenderer *r = JRenderer::GetInstance(); JRenderer *r = JRenderer::GetInstance();
r->FillRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, ARGB(200,0,0,0)); r->FillRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, ARGB(200,0,0,0));
DeckMenu::Render(); DeckMenu::Render();
if (deckTitle.size() > 0) if (deckTitle.size() > 0)
{ {
WFont *mainFont = WResourceManager::Instance()->GetWFont(Fonts::OPTION_FONT); WFont *mainFont = WResourceManager::Instance()->GetWFont(Fonts::OPTION_FONT);
DWORD currentColor = mainFont->GetColor(); DWORD currentColor = mainFont->GetColor();
mainFont->SetColor(ARGB(255,255,255,255)); mainFont->SetColor(ARGB(255,255,255,255));
mainFont->DrawString(deckTitle.c_str(), statsX + (statsWidth / 2), statsHeight / 2, JGETEXT_CENTER); mainFont->DrawString(deckTitle.c_str(), statsX + (statsWidth / 2), statsHeight / 2, JGETEXT_CENTER);
mainFont->SetColor(currentColor); mainFont->SetColor(currentColor);
} }
if (stw && selectedDeck) drawDeckStatistics(); if (stw && selectedDeck) drawDeckStatistics();
} }
void DeckEditorMenu::drawDeckStatistics() void DeckEditorMenu::drawDeckStatistics()
{ {
ostringstream deckStatsString; ostringstream deckStatsString;
deckStatsString deckStatsString
<< "------- Deck Summary -----" << endl << "------- Deck Summary -----" << endl
<< "Cards: "<< stw->cardCount << endl << "Cards: "<< stw->cardCount << endl
<< "Creatures: "<< setw(2) << stw->countCreatures << "Creatures: "<< setw(2) << stw->countCreatures
<< " Enchantments: " << stw->countEnchantments << endl << " Enchantments: " << stw->countEnchantments << endl
<< "Instants: " << setw(4) << stw->countInstants << "Instants: " << setw(4) << stw->countInstants
<< " Sorceries: " << setw(2) << stw->countSorceries << endl << " Sorceries: " << setw(2) << stw->countSorceries << endl
<< "Lands: " << "Lands: "
<< "A: " << setw(2) << left << stw->countLandsPerColor[ Constants::MTG_COLOR_ARTIFACT ] + stw->countBasicLandsPerColor[ Constants::MTG_COLOR_ARTIFACT ] << " " << "A: " << setw(2) << left << stw->countLandsPerColor[ Constants::MTG_COLOR_ARTIFACT ] + stw->countBasicLandsPerColor[ Constants::MTG_COLOR_ARTIFACT ] << " "
<< "G: " << setw(2) << left << stw->countLandsPerColor[ Constants::MTG_COLOR_GREEN ] + stw->countLandsPerColor[ Constants::MTG_COLOR_GREEN ] << " " << "G: " << setw(2) << left << stw->countLandsPerColor[ Constants::MTG_COLOR_GREEN ] + stw->countLandsPerColor[ Constants::MTG_COLOR_GREEN ] << " "
<< "R: " << setw(2) << left << stw->countLandsPerColor[ Constants::MTG_COLOR_RED ] + stw->countBasicLandsPerColor[ Constants::MTG_COLOR_RED ] << " " << "R: " << setw(2) << left << stw->countLandsPerColor[ Constants::MTG_COLOR_RED ] + stw->countBasicLandsPerColor[ Constants::MTG_COLOR_RED ] << " "
<< "U: " << setw(2) << left << stw->countLandsPerColor[ Constants::MTG_COLOR_BLUE ] + stw->countBasicLandsPerColor[ Constants::MTG_COLOR_BLUE ] << " " << "U: " << setw(2) << left << stw->countLandsPerColor[ Constants::MTG_COLOR_BLUE ] + stw->countBasicLandsPerColor[ Constants::MTG_COLOR_BLUE ] << " "
<< "B: " << setw(2) << left << stw->countLandsPerColor[ Constants::MTG_COLOR_BLACK ] + stw->countBasicLandsPerColor[ Constants::MTG_COLOR_BLACK ] << " " << "B: " << setw(2) << left << stw->countLandsPerColor[ Constants::MTG_COLOR_BLACK ] + stw->countBasicLandsPerColor[ Constants::MTG_COLOR_BLACK ] << " "
<< "W: " << setw(2) << left << stw->countLandsPerColor[ Constants::MTG_COLOR_WHITE ] + stw->countBasicLandsPerColor[ Constants::MTG_COLOR_WHITE ] << endl << "W: " << setw(2) << left << stw->countLandsPerColor[ Constants::MTG_COLOR_WHITE ] + stw->countBasicLandsPerColor[ Constants::MTG_COLOR_WHITE ] << endl
<< " --- Card color count --- " << endl << " --- Card color count --- " << endl
<< "A: " << setw(2) << left << selectedDeck->getCount(Constants::MTG_COLOR_ARTIFACT) << " " << "A: " << setw(2) << left << selectedDeck->getCount(Constants::MTG_COLOR_ARTIFACT) << " "
<< "G: " << setw(2) << left << selectedDeck->getCount(Constants::MTG_COLOR_GREEN) << " " << "G: " << setw(2) << left << selectedDeck->getCount(Constants::MTG_COLOR_GREEN) << " "
<< "U: " << setw(2) << left << selectedDeck->getCount(Constants::MTG_COLOR_BLUE) << " " << "U: " << setw(2) << left << selectedDeck->getCount(Constants::MTG_COLOR_BLUE) << " "
<< "R: " << setw(2) << left << selectedDeck->getCount(Constants::MTG_COLOR_RED) << " " << "R: " << setw(2) << left << selectedDeck->getCount(Constants::MTG_COLOR_RED) << " "
<< "B: " << setw(2) << left << selectedDeck->getCount(Constants::MTG_COLOR_BLACK) << " " << "B: " << setw(2) << left << selectedDeck->getCount(Constants::MTG_COLOR_BLACK) << " "
<< "W: " << setw(2) << left << selectedDeck->getCount(Constants::MTG_COLOR_WHITE) << endl << "W: " << setw(2) << left << selectedDeck->getCount(Constants::MTG_COLOR_WHITE) << endl
<< " --- Average Cost --- " << endl << " --- Average Cost --- " << endl
<< "Creature: "<< setprecision(2) << stw->avgCreatureCost << endl << "Creature: "<< setprecision(2) << stw->avgCreatureCost << endl
<< "Mana: " << setprecision(2) << stw->avgManaCost << " " << "Mana: " << setprecision(2) << stw->avgManaCost << " "
<< "Spell: " << setprecision(2) << stw->avgSpellCost << endl; << "Spell: " << setprecision(2) << stw->avgSpellCost << endl;
WFont *mainFont = WResourceManager::Instance()->GetWFont(Fonts::MAIN_FONT); WFont *mainFont = WResourceManager::Instance()->GetWFont(Fonts::MAIN_FONT);
mainFont->DrawString(deckStatsString.str().c_str(), descX, descY + 25); mainFont->DrawString(deckStatsString.str().c_str(), descX, descY + 25);
} }
DeckEditorMenu::~DeckEditorMenu() DeckEditorMenu::~DeckEditorMenu()
{ {
SAFE_DELETE( mScroller ); SAFE_DELETE( mScroller );
} }
+337 -337
View File
@@ -1,337 +1,337 @@
#include "PrecompiledHeader.h" #include "PrecompiledHeader.h"
#include "DeckMenu.h" #include "DeckMenu.h"
#include "DeckMenuItem.h" #include "DeckMenuItem.h"
#include "DeckMetaData.h" #include "DeckMetaData.h"
#include "JTypes.h" #include "JTypes.h"
#include "GameApp.h" #include "GameApp.h"
#include "Translate.h" #include "Translate.h"
#include "TextScroller.h" #include "TextScroller.h"
#include "Tasks.h" #include "Tasks.h"
#include <iomanip> #include <iomanip>
namespace namespace
{ {
const float kVerticalMargin = 16; const float kVerticalMargin = 16;
const float kHorizontalMargin = 20; const float kHorizontalMargin = 20;
const float kLineHeight = 20; const float kLineHeight = 20;
const float kDescriptionVerticalBoxPadding = 5; const float kDescriptionVerticalBoxPadding = 5;
const float kDescriptionHorizontalBoxPadding = 5; const float kDescriptionHorizontalBoxPadding = 5;
const float kDefaultFontScale = 1.0f; const float kDefaultFontScale = 1.0f;
const float kVerticalScrollSpeed = 7.0f; const float kVerticalScrollSpeed = 7.0f;
const int DETAILED_INFO_THRESHOLD = 20; const int DETAILED_INFO_THRESHOLD = 20;
} }
hgeParticleSystem* DeckMenu::stars = NULL; hgeParticleSystem* DeckMenu::stars = NULL;
// //
// For the additional info window, maximum characters per line is roughly 30 characters across. // For the additional info window, maximum characters per line is roughly 30 characters across.
// TODO: // TODO:
// *** Need to make this configurable in a file somewhere to allow for class reuse // *** Need to make this configurable in a file somewhere to allow for class reuse
DeckMenu::DeckMenu(int id, JGuiListener* listener, int fontId, const string _title, const int& startIndex, bool showDetailsOverride) : DeckMenu::DeckMenu(int id, JGuiListener* listener, int fontId, const string _title, const int& startIndex, bool showDetailsOverride) :
JGuiController(id, listener), fontId(fontId), mShowDetailsScreen( showDetailsOverride ) JGuiController(id, listener), fontId(fontId), mShowDetailsScreen( showDetailsOverride )
{ {
backgroundName = "DeckMenuBackdrop"; backgroundName = "DeckMenuBackdrop";
mAlwaysShowDetailsButton = false; mAlwaysShowDetailsButton = false;
mSelectedDeck = NULL; mSelectedDeck = NULL;
mY = 50; mY = 50;
mWidth = 176; mWidth = 176;
mX = 115; mX = 115;
titleX = 110; // center point in title box titleX = 110; // center point in title box
titleY = 15; titleY = 15;
titleWidth = 180; // width of inner box of title titleWidth = 180; // width of inner box of title
descX = 260 + kDescriptionVerticalBoxPadding; descX = 260 + kDescriptionVerticalBoxPadding;
descY = 100 + kDescriptionHorizontalBoxPadding; descY = 100 + kDescriptionHorizontalBoxPadding;
descHeight = 145; descHeight = 145;
descWidth = 200; descWidth = 200;
detailedInfoBoxX = 400; detailedInfoBoxX = 400;
detailedInfoBoxY = 235; detailedInfoBoxY = 235;
starsOffsetX = 50; starsOffsetX = 50;
statsX = 300; statsX = 300;
statsY = 15; statsY = 15;
statsHeight = 50; statsHeight = 50;
statsWidth = 227; statsWidth = 227;
mSelectedDeckId = startIndex; mSelectedDeckId = startIndex;
avatarX = 232; avatarX = 232;
avatarY = 11; avatarY = 11;
menuInitialized = false; menuInitialized = false;
float scrollerWidth = 200.0f; float scrollerWidth = 200.0f;
float scrollerHeight = 28.0f; float scrollerHeight = 28.0f;
mScroller = NEW VerticalTextScroller(Fonts::MAIN_FONT, 14, 235, scrollerWidth, scrollerHeight, kVerticalScrollSpeed); mScroller = NEW VerticalTextScroller(Fonts::MAIN_FONT, 14, 235, scrollerWidth, scrollerHeight, kVerticalScrollSpeed);
mAutoTranslate = true; mAutoTranslate = true;
maxItems = 7; maxItems = 7;
mHeight = 2 * kVerticalMargin + (maxItems * kLineHeight); mHeight = 2 * kVerticalMargin + (maxItems * kLineHeight);
// we want to cap the deck titles to 15 characters to avoid overflowing deck names // we want to cap the deck titles to 15 characters to avoid overflowing deck names
title = _(_title); title = _(_title);
displayTitle = title; displayTitle = title;
mFont = WResourceManager::Instance()->GetWFont(fontId); mFont = WResourceManager::Instance()->GetWFont(fontId);
startId = 0; startId = 0;
selectionT = 0; selectionT = 0;
timeOpen = 0; timeOpen = 0;
mClosed = false; mClosed = false;
if (mFont->GetStringWidth(title.c_str()) > titleWidth) if (mFont->GetStringWidth(title.c_str()) > titleWidth)
titleFontScale = 0.75f; titleFontScale = 0.75f;
else else
titleFontScale = 1.0f; titleFontScale = 1.0f;
mSelectionTargetY = selectionY = kVerticalMargin; mSelectionTargetY = selectionY = kVerticalMargin;
if (NULL == stars) if (NULL == stars)
stars = NEW hgeParticleSystem(WResourceManager::Instance()->RetrievePSI("stars.psi", WResourceManager::Instance()->GetQuad("stars"))); stars = NEW hgeParticleSystem(WResourceManager::Instance()->RetrievePSI("stars.psi", WResourceManager::Instance()->GetQuad("stars")));
stars->FireAt(mX, mY); stars->FireAt(mX, mY);
updateScroller(); updateScroller();
} }
void DeckMenu::RenderBackground() void DeckMenu::RenderBackground()
{ {
ostringstream bgFilename; ostringstream bgFilename;
bgFilename << backgroundName << ".png"; bgFilename << backgroundName << ".png";
static bool loadBackground = true; static bool loadBackground = true;
if (loadBackground) if (loadBackground)
{ {
JQuad *background = WResourceManager::Instance()->RetrieveTempQuad(bgFilename.str(), TEXTURE_SUB_5551); JQuad *background = WResourceManager::Instance()->RetrieveTempQuad(bgFilename.str(), TEXTURE_SUB_5551);
if (background) if (background)
JRenderer::GetInstance()->RenderQuad(background, 0, 0); JRenderer::GetInstance()->RenderQuad(background, 0, 0);
else else
loadBackground = false; loadBackground = false;
} }
} }
DeckMetaData * DeckMenu::getSelectedDeck() DeckMetaData * DeckMenu::getSelectedDeck()
{ {
if (mSelectedDeck) return mSelectedDeck; if (mSelectedDeck) return mSelectedDeck;
return NULL; return NULL;
} }
void DeckMenu::enableDisplayDetailsOverride() void DeckMenu::enableDisplayDetailsOverride()
{ {
mAlwaysShowDetailsButton = true; mAlwaysShowDetailsButton = true;
} }
bool DeckMenu::showDetailsScreen() bool DeckMenu::showDetailsScreen()
{ {
DeckMetaData * currentMenuItem = getSelectedDeck(); DeckMetaData * currentMenuItem = getSelectedDeck();
if (currentMenuItem) if (currentMenuItem)
{ {
if (mAlwaysShowDetailsButton) return true; if (mAlwaysShowDetailsButton) return true;
if (mShowDetailsScreen && currentMenuItem->getVictories() > DETAILED_INFO_THRESHOLD) return true; if (mShowDetailsScreen && currentMenuItem->getVictories() > DETAILED_INFO_THRESHOLD) return true;
} }
return false; return false;
} }
void DeckMenu::initMenuItems() void DeckMenu::initMenuItems()
{ {
float sY = mY + kVerticalMargin; float sY = mY + kVerticalMargin;
for (int i = startId; i < mCount; ++i) for (int i = startId; i < mCount; ++i)
{ {
float y = mY + kVerticalMargin + i * kLineHeight; float y = mY + kVerticalMargin + i * kLineHeight;
DeckMenuItem * currentMenuItem = static_cast<DeckMenuItem*> (mObjects[i]); DeckMenuItem * currentMenuItem = static_cast<DeckMenuItem*> (mObjects[i]);
currentMenuItem->Relocate(mX, y); currentMenuItem->Relocate(mX, y);
if (currentMenuItem->hasFocus()) sY = y; if (currentMenuItem->hasFocus()) sY = y;
} }
mSelectionTargetY = selectionY = sY; mSelectionTargetY = selectionY = sY;
//Grab a texture in VRAM. //Grab a texture in VRAM.
pspIconsTexture = WResourceManager::Instance()->RetrieveTexture("iconspsp.png", RETRIEVE_LOCK); pspIconsTexture = WResourceManager::Instance()->RetrieveTexture("iconspsp.png", RETRIEVE_LOCK);
char buf[512]; char buf[512];
for (int i = 0; i < 8; i++) for (int i = 0; i < 8; i++)
{ {
sprintf(buf, "iconspsp%d", i); sprintf(buf, "iconspsp%d", i);
pspIcons[i] = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float) i * 32, 0, 32, 32, buf); pspIcons[i] = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float) i * 32, 0, 32, 32, buf);
pspIcons[i]->SetHotSpot(16, 16); pspIcons[i]->SetHotSpot(16, 16);
} }
} }
void DeckMenu::Render() void DeckMenu::Render()
{ {
JRenderer * renderer = JRenderer::GetInstance(); JRenderer * renderer = JRenderer::GetInstance();
float height = mHeight; float height = mHeight;
if (!menuInitialized) if (!menuInitialized)
{ {
initMenuItems(); initMenuItems();
stars->Fire(); stars->Fire();
timeOpen = 0; timeOpen = 0;
menuInitialized = true; menuInitialized = true;
} }
if (timeOpen < 1) height *= timeOpen > 0 ? timeOpen : -timeOpen; if (timeOpen < 1) height *= timeOpen > 0 ? timeOpen : -timeOpen;
for (int i = startId; i < startId + maxItems; i++) for (int i = startId; i < startId + maxItems; i++)
{ {
if (i > mCount - 1) break; if (i > mCount - 1) break;
DeckMenuItem *currentMenuItem = static_cast<DeckMenuItem*> (mObjects[i]); DeckMenuItem *currentMenuItem = static_cast<DeckMenuItem*> (mObjects[i]);
if (currentMenuItem->mY - kLineHeight * startId < mY + height - kLineHeight + 7) if (currentMenuItem->mY - kLineHeight * startId < mY + height - kLineHeight + 7)
{ {
if (currentMenuItem->hasFocus()) if (currentMenuItem->hasFocus())
{ {
mSelectedDeckId = i; mSelectedDeckId = i;
mSelectedDeck = currentMenuItem->meta; mSelectedDeck = currentMenuItem->meta;
WFont *mainFont = WResourceManager::Instance()->GetWFont(Fonts::MAIN_FONT); WFont *mainFont = WResourceManager::Instance()->GetWFont(Fonts::MAIN_FONT);
// display the "more info" button if special condition is met // display the "more info" button if special condition is met
if (showDetailsScreen()) if (showDetailsScreen())
{ {
float pspIconsSize = 0.5; float pspIconsSize = 0.5;
const string detailedInfoString = "Detailed Info"; const string detailedInfoString = "Detailed Info";
float stringWidth = mainFont->GetStringWidth(detailedInfoString.c_str()); float stringWidth = mainFont->GetStringWidth(detailedInfoString.c_str());
float boxStartX = detailedInfoBoxX - stringWidth / 2; float boxStartX = detailedInfoBoxX - stringWidth / 2;
DWORD currentColor = mainFont->GetColor(); DWORD currentColor = mainFont->GetColor();
renderer->FillRoundRect( boxStartX, detailedInfoBoxY - 5, stringWidth, mainFont->GetHeight() + 15, .5, ARGB( 255, 0, 0, 0) ); renderer->FillRoundRect( boxStartX, detailedInfoBoxY - 5, stringWidth, mainFont->GetHeight() + 15, .5, ARGB( 255, 0, 0, 0) );
renderer->RenderQuad(pspIcons[5], detailedInfoBoxX, detailedInfoBoxY + 2, 0, pspIconsSize, pspIconsSize); renderer->RenderQuad(pspIcons[5], detailedInfoBoxX, detailedInfoBoxY + 2, 0, pspIconsSize, pspIconsSize);
mainFont->SetColor(currentColor); mainFont->SetColor(currentColor);
mainFont->DrawString(detailedInfoString, boxStartX, detailedInfoBoxY + 10); mainFont->DrawString(detailedInfoString, boxStartX, detailedInfoBoxY + 10);
} }
// display the avatar image // display the avatar image
if (currentMenuItem->imageFilename.size() > 0) if (currentMenuItem->imageFilename.size() > 0)
{ {
JQuad * quad = WResourceManager::Instance()->RetrieveTempQuad(currentMenuItem->imageFilename, TEXTURE_SUB_AVATAR); JQuad * quad = WResourceManager::Instance()->RetrieveTempQuad(currentMenuItem->imageFilename, TEXTURE_SUB_AVATAR);
if (quad) renderer->RenderQuad(quad, avatarX, avatarY); if (quad) renderer->RenderQuad(quad, avatarX, avatarY);
} }
// fill in the description part of the screen // fill in the description part of the screen
string text = wordWrap(currentMenuItem->desc, descWidth, mainFont->mFontID ); string text = wordWrap(currentMenuItem->desc, descWidth, mainFont->mFontID );
mainFont->DrawString(text.c_str(), descX, descY); mainFont->DrawString(text.c_str(), descX, descY);
mFont->SetColor(ARGB(255,255,255,255)); mFont->SetColor(ARGB(255,255,255,255));
// fill in the statistical portion // fill in the statistical portion
if (currentMenuItem->meta) if (currentMenuItem->meta)
{ {
ostringstream oss; ostringstream oss;
oss << "Deck: " << currentMenuItem->meta->getName() << endl; oss << "Deck: " << currentMenuItem->meta->getName() << endl;
oss << currentMenuItem->meta->getStatsSummary(); oss << currentMenuItem->meta->getStatsSummary();
mainFont->DrawString(oss.str(), statsX, statsY); mainFont->DrawString(oss.str(), statsX, statsY);
} }
} }
else else
{ {
mFont->SetColor(ARGB(150,255,255,255)); mFont->SetColor(ARGB(150,255,255,255));
} }
currentMenuItem->RenderWithOffset(-kLineHeight * startId); currentMenuItem->RenderWithOffset(-kLineHeight * startId);
} }
} }
if (!title.empty()) if (!title.empty())
{ {
mFont->SetColor(ARGB(255,255,255,255)); mFont->SetColor(ARGB(255,255,255,255));
mFont->DrawString(title.c_str(), titleX, titleY, JGETEXT_CENTER); mFont->DrawString(title.c_str(), titleX, titleY, JGETEXT_CENTER);
} }
mScroller->Render(); mScroller->Render();
RenderBackground(); RenderBackground();
renderer->SetTexBlend(BLEND_SRC_ALPHA, BLEND_ONE); renderer->SetTexBlend(BLEND_SRC_ALPHA, BLEND_ONE);
stars->Render(); stars->Render();
renderer->SetTexBlend(BLEND_SRC_ALPHA, BLEND_ONE_MINUS_SRC_ALPHA); renderer->SetTexBlend(BLEND_SRC_ALPHA, BLEND_ONE_MINUS_SRC_ALPHA);
} }
void DeckMenu::Update(float dt) void DeckMenu::Update(float dt)
{ {
JGuiController::Update(dt); JGuiController::Update(dt);
if (mCurr > startId + maxItems - 1) if (mCurr > startId + maxItems - 1)
startId = mCurr - maxItems + 1; startId = mCurr - maxItems + 1;
else if (mCurr < startId) startId = mCurr; else if (mCurr < startId) startId = mCurr;
stars->Update(dt); stars->Update(dt);
selectionT += 3 * dt; selectionT += 3 * dt;
selectionY += (mSelectionTargetY - selectionY) * 8 * dt; selectionY += (mSelectionTargetY - selectionY) * 8 * dt;
float starsX = starsOffsetX + ((mWidth - 2 * kHorizontalMargin) * (1 + cos(selectionT)) / 2); float starsX = starsOffsetX + ((mWidth - 2 * kHorizontalMargin) * (1 + cos(selectionT)) / 2);
float starsY = selectionY + 5 * cos(selectionT * 2.35f) + kLineHeight / 2 - kLineHeight * startId; float starsY = selectionY + 5 * cos(selectionT * 2.35f) + kLineHeight / 2 - kLineHeight * startId;
stars->MoveTo(starsX, starsY); stars->MoveTo(starsX, starsY);
if (timeOpen < 0) if (timeOpen < 0)
{ {
timeOpen += dt * 10; timeOpen += dt * 10;
if (timeOpen >= 0) if (timeOpen >= 0)
{ {
timeOpen = 0; timeOpen = 0;
mClosed = true; mClosed = true;
stars->FireAt(mX, mY); stars->FireAt(mX, mY);
} }
} }
else else
{ {
mClosed = false; mClosed = false;
timeOpen += dt * 10; timeOpen += dt * 10;
} }
if (mScroller) if (mScroller)
mScroller->Update(dt); mScroller->Update(dt);
} }
void DeckMenu::Add(int id, const char * text, string desc, bool forceFocus, DeckMetaData * deckMetaData) void DeckMenu::Add(int id, const char * text, string desc, bool forceFocus, DeckMetaData * deckMetaData)
{ {
DeckMenuItem * menuItem = NEW DeckMenuItem(this, id, fontId, text, 0, DeckMenuItem * menuItem = NEW DeckMenuItem(this, id, fontId, text, 0,
mY + kVerticalMargin + mCount * kLineHeight, (mCount == 0), mAutoTranslate, deckMetaData); mY + kVerticalMargin + mCount * kLineHeight, (mCount == 0), mAutoTranslate, deckMetaData);
Translator * t = Translator::GetInstance(); Translator * t = Translator::GetInstance();
map<string, string>::iterator it = t->deckValues.find(text); map<string, string>::iterator it = t->deckValues.find(text);
if (it != t->deckValues.end()) //translate decks desc if (it != t->deckValues.end()) //translate decks desc
menuItem->desc = it->second; menuItem->desc = it->second;
else else
menuItem->desc = deckMetaData ? deckMetaData->getDescription() : desc; menuItem->desc = deckMetaData ? deckMetaData->getDescription() : desc;
JGuiController::Add(menuItem); JGuiController::Add(menuItem);
if (mCount <= maxItems) mHeight += kLineHeight; if (mCount <= maxItems) mHeight += kLineHeight;
if (forceFocus) if (forceFocus)
{ {
mObjects[mCurr]->Leaving(JGE_BTN_DOWN); mObjects[mCurr]->Leaving(JGE_BTN_DOWN);
mCurr = mCount - 1; mCurr = mCount - 1;
menuItem->Entering(); menuItem->Entering();
} }
} }
void DeckMenu::updateScroller() void DeckMenu::updateScroller()
{ {
// add all the items from the Tasks db. // add all the items from the Tasks db.
TaskList taskList; TaskList taskList;
mScroller->Reset(); mScroller->Reset();
for (vector<Task*>::iterator it = taskList.tasks.begin(); it != taskList.tasks.end(); it++) for (vector<Task*>::iterator it = taskList.tasks.begin(); it != taskList.tasks.end(); it++)
{ {
ostringstream taskDescription; ostringstream taskDescription;
taskDescription << "Credits: " << setw(4) << (*it)->getReward() << " / " taskDescription << "Credits: " << setw(4) << (*it)->getReward() << " / "
<< "Days Left: " << (*it)->getExpiration() << endl << "Days Left: " << (*it)->getExpiration() << endl
<< (*it)->getDesc() << endl << endl; << (*it)->getDesc() << endl << endl;
mScroller->Add(taskDescription.str()); mScroller->Add(taskDescription.str());
} }
} }
void DeckMenu::Close() void DeckMenu::Close()
{ {
timeOpen = -1.0; timeOpen = -1.0;
stars->Stop(true); stars->Stop(true);
} }
void DeckMenu::destroy() void DeckMenu::destroy()
{ {
SAFE_DELETE(DeckMenu::stars); SAFE_DELETE(DeckMenu::stars);
} }
DeckMenu::~DeckMenu() DeckMenu::~DeckMenu()
{ {
WResourceManager::Instance()->Release(pspIconsTexture); WResourceManager::Instance()->Release(pspIconsTexture);
SAFE_DELETE(mScroller); SAFE_DELETE(mScroller);
} }
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1237 -1237
View File
File diff suppressed because it is too large Load Diff
+64 -64
View File
@@ -1,64 +1,64 @@
#include "PrecompiledHeader.h" #include "PrecompiledHeader.h"
#include "MTGGamePhase.h" #include "MTGGamePhase.h"
MTGGamePhase::MTGGamePhase(int id) : MTGGamePhase::MTGGamePhase(int id) :
ActionElement(id) ActionElement(id)
{ {
animation = 0; animation = 0;
currentState = -1; currentState = -1;
mFont = WResourceManager::Instance()->GetWFont(Fonts::MAIN_FONT); mFont = WResourceManager::Instance()->GetWFont(Fonts::MAIN_FONT);
mFont->SetBase(0); // using 2nd font mFont->SetBase(0); // using 2nd font
} }
void MTGGamePhase::Update(float dt) void MTGGamePhase::Update(float dt)
{ {
int newState = GameObserver::GetInstance()->getCurrentGamePhase(); int newState = GameObserver::GetInstance()->getCurrentGamePhase();
if (newState != currentState) if (newState != currentState)
{ {
activeState = ACTIVE; activeState = ACTIVE;
animation = 4; animation = 4;
currentState = newState; currentState = newState;
} }
if (animation > 0) if (animation > 0)
{ {
animation--; animation--;
} }
else else
{ {
activeState = INACTIVE; activeState = INACTIVE;
animation = 0; animation = 0;
} }
} }
bool MTGGamePhase::CheckUserInput(JButton key) bool MTGGamePhase::CheckUserInput(JButton key)
{ {
GameObserver * game = GameObserver::GetInstance(); GameObserver * game = GameObserver::GetInstance();
if (activeState == INACTIVE) if (activeState == INACTIVE)
{ {
JButton trigger = (options[Options::REVERSETRIGGERS].number ? JGE_BTN_NEXT : JGE_BTN_PREV); JButton trigger = (options[Options::REVERSETRIGGERS].number ? JGE_BTN_NEXT : JGE_BTN_PREV);
if ((trigger == key) && game->currentActionPlayer == game->currentlyActing()) if ((trigger == key) && game->currentActionPlayer == game->currentlyActing())
{ {
activeState = ACTIVE; activeState = ACTIVE;
game->userRequestNextGamePhase(); game->userRequestNextGamePhase();
return true; return true;
} }
} }
return false; return false;
} }
MTGGamePhase * MTGGamePhase::clone() const MTGGamePhase * MTGGamePhase::clone() const
{ {
MTGGamePhase * a = NEW MTGGamePhase(*this); MTGGamePhase * a = NEW MTGGamePhase(*this);
a->isClone = 1; a->isClone = 1;
return a; return a;
} }
ostream& MTGGamePhase::toString(ostream& out) const ostream& MTGGamePhase::toString(ostream& out) const
{ {
return out << "MTGGamePhase ::: animation " << animation << " ; currentState : " << currentState; return out << "MTGGamePhase ::: animation " << animation << " ; currentState : " << currentState;
} }
File diff suppressed because it is too large Load Diff