- Removed one "stats" button as well as the "menu" button. The goal is to let the screen "breathe" and show cards as much as possible. -- Removing the "menu" button is also in line with all other screens of the game, where that button never appears. - With the same goal, the "XXX of XXX cards" text is now displayed only when scrolling
161 lines
4.0 KiB
C++
161 lines
4.0 KiB
C++
#ifndef _GAME_STATE_DECK_VIEWER_H_
|
|
#define _GAME_STATE_DECK_VIEWER_H_
|
|
|
|
#include <math.h>
|
|
#include <iostream>
|
|
|
|
#include <JGE.h>
|
|
|
|
#include "GameState.h"
|
|
#include "DeckEditorMenu.h"
|
|
#include "SimpleMenu.h"
|
|
#include "WResourceManager.h"
|
|
#include "CardGui.h"
|
|
#include "PriceList.h"
|
|
#include "PlayerData.h"
|
|
#include "DeckDataWrapper.h"
|
|
#include "DeckStats.h"
|
|
#include "WDataSrc.h"
|
|
#include "WGui.h"
|
|
#include "InteractiveButton.h"
|
|
|
|
#define NO_USER_ACTIVITY_HELP_DELAY 10
|
|
#define NO_USER_ACTIVITY_SHOWCARD_DELAY 0.1
|
|
|
|
enum
|
|
{
|
|
STAGE_TRANSITION_RIGHT = 0,
|
|
STAGE_TRANSITION_LEFT = 1,
|
|
STAGE_WAITING = 2,
|
|
STAGE_TRANSITION_UP = 3,
|
|
STAGE_TRANSITION_DOWN = 4,
|
|
STAGE_ONSCREEN_MENU = 5,
|
|
STAGE_WELCOME = 6,
|
|
STAGE_MENU = 7,
|
|
STAGE_FILTERS = 8,
|
|
STAGE_TRANSITION_SELECTED = 9
|
|
};
|
|
|
|
// TODO: need a better name for MENU_FIRST_MENU, this is reused for the 1st submenu of
|
|
// available options in the duel menu
|
|
enum
|
|
{
|
|
MENU_CARD_PURCHASE = 2,
|
|
MENU_DECK_SELECTION = 10,
|
|
MENU_DECK_BUILDER = 11,
|
|
MENU_FIRST_DUEL_SUBMENU = 102,
|
|
MENU_LANGUAGE_SELECTION = 103,
|
|
};
|
|
|
|
// enums for menu options
|
|
// TODO: make these enums a little more descriptive. (ie should reflect what menu they are attached to )
|
|
enum DECK_VIEWER_MENU_ITEMS
|
|
{
|
|
MENU_ITEM_NEW_DECK = -30,
|
|
MENU_ITEM_CHEAT_MODE = -12,
|
|
MENU_ITEM_CANCEL = kCancelMenuID,
|
|
MENU_ITEM_SAVE_RETURN_MAIN_MENU = 0,
|
|
MENU_ITEM_SAVE_RENAME = 1,
|
|
MENU_ITEM_SWITCH_DECKS_NO_SAVE = 2,
|
|
MENU_ITEM_MAIN_MENU = 3,
|
|
MENU_ITEM_EDITOR_CANCEL = kCancelMenuID,
|
|
MENU_ITEM_SAVE_AS_AI_DECK = 5,
|
|
MENU_ITEM_YES = 20,
|
|
MENU_ITEM_NO = 21,
|
|
MENU_ITEM_FILTER_BY = 22,
|
|
MENUITEM_MORE_INFO = kInfoMenuID
|
|
|
|
};
|
|
|
|
#define ALL_COLORS -1
|
|
|
|
#define ROTATE_LEFT 1;
|
|
#define ROTATE_RIGHT 0;
|
|
|
|
#define HIGH_SPEED 15.0
|
|
#define MED_SPEED 5.0f
|
|
#define LOW_SPEED 1.5
|
|
|
|
#define MAX_SAVED_FILTERS Constants::NB_Colors + 1
|
|
#define CARDS_DISPLAYED 10
|
|
|
|
class GameStateDeckViewer: public GameState, public JGuiListener
|
|
{
|
|
private:
|
|
vector<JQuadPtr> mIcons;
|
|
JQuadPtr pspIcons[8];
|
|
JTexture * pspIconsTexture;
|
|
float last_user_activity;
|
|
float onScreenTransition;
|
|
float mRotation;
|
|
float mSlide;
|
|
int mAlpha;
|
|
int mStage;
|
|
int useFilter;
|
|
JMusic * bgMusic;
|
|
int lastPos;
|
|
int lastTotal;
|
|
int mSelected;
|
|
|
|
InteractiveButton *toggleDeckButton, *sellCardButton, *statsPrevButton, *filterButton;
|
|
|
|
WGuiFilters * filterMenu;
|
|
WSrcDeckViewer * source;
|
|
|
|
DeckEditorMenu * welcome_menu;
|
|
SimpleMenu * subMenu;
|
|
DeckEditorMenu * menu;
|
|
PriceList* pricelist;
|
|
PlayerData * playerdata;
|
|
int price;
|
|
DeckDataWrapper * displayed_deck;
|
|
DeckDataWrapper * myDeck;
|
|
DeckDataWrapper * myCollection;
|
|
MTGCard * cardIndex[CARDS_DISPLAYED];
|
|
StatsWrapper *stw;
|
|
|
|
int hudAlpha;
|
|
string newDeckname;
|
|
bool isAIDeckSave;
|
|
bool mSwitching;
|
|
void saveDeck(); //Saves the deck and additional necessary information
|
|
void saveAsAIDeck(string deckName); // saves deck as an AI Deck
|
|
int getCurrentPos();
|
|
void sellCard();
|
|
void setButtonState(bool state);
|
|
bool userPressedButton();
|
|
void RenderButtons();
|
|
|
|
pair<float, float> cardsCoordinates[CARDS_DISPLAYED];
|
|
|
|
public:
|
|
GameStateDeckViewer(GameApp* parent);
|
|
virtual ~GameStateDeckViewer();
|
|
void updateDecks();
|
|
void rotateCards(int direction);
|
|
void loadIndexes();
|
|
void updateFilters();
|
|
void rebuildFilters();
|
|
void switchDisplay();
|
|
void Start();
|
|
virtual void End();
|
|
void addRemove(MTGCard * card);
|
|
virtual void Update(float dt);
|
|
void renderOnScreenBasicInfo();
|
|
void renderSlideBar();
|
|
void renderDeckBackground();
|
|
void renderOnScreenMenu();
|
|
virtual void renderCard(int id, float rotation);
|
|
virtual void renderCard(int id);
|
|
virtual void Render();
|
|
int loadDeck(int deckid);
|
|
void LoadDeckStatistics(int deckId);
|
|
|
|
void OnScroll(int inXVelocity, int inYVelocity);
|
|
|
|
void buildEditorMenu();
|
|
virtual void ButtonPressed(int controllerId, int controlId);
|
|
};
|
|
|
|
#endif
|