Mouse support in deck editor

This commit is contained in:
Xawotihs
2010-11-20 21:30:15 +00:00
parent f1a4f26c79
commit 2b6469e391
2 changed files with 38 additions and 3 deletions

View File

@@ -76,11 +76,12 @@ enum DECK_VIEWER_MENU_ITEMS
#define LOW_SPEED 1.5
#define MAX_SAVED_FILTERS 8
#define CARDS_DISPLAYED 7
class GameStateDeckViewer: public GameState, public JGuiListener
{
private:
JQuad * mIcons[7];
JQuad * mIcons[CARDS_DISPLAYED];
JQuad * pspIcons[8];
JTexture * pspIconsTexture;
float last_user_activity;
@@ -109,7 +110,7 @@ private:
DeckDataWrapper * displayed_deck;
DeckDataWrapper * myDeck;
DeckDataWrapper * myCollection;
MTGCard * cardIndex[7];
MTGCard * cardIndex[CARDS_DISPLAYED];
StatsWrapper *stw;
int hudAlpha;
@@ -119,6 +120,7 @@ private:
void saveDeck(); //Saves the deck and additional necessary information
void saveAsAIDeck(string deckName); // saves deck as an AI Deck
int getCurrentPos();
pair<float, float> cardsCoordinates[CARDS_DISPLAYED];
public:
GameStateDeckViewer(GameApp* parent);

View File

@@ -339,6 +339,11 @@ void GameStateDeckViewer::Update(float dt)
int myD = (displayed_deck == myDeck);
int x, y;
unsigned int distance2;
unsigned int minDistance2 = -1;
int n;
if (options.keypadActive())
{
options.keypadUpdate(dt);
@@ -463,6 +468,32 @@ void GameStateDeckViewer::Update(float dt)
else if ((mStage == STAGE_ONSCREEN_MENU) && (++stw->currentPage > stw->pageCount)) stw->currentPage = 0;
break;
default: // no keypress
if (mEngine->GetLeftClickCoordinates(x, y))
{
for(int i=0; i < CARDS_DISPLAYED; i++)
{
distance2 = (cardsCoordinates[i].second - y) * (cardsCoordinates[i].second - y) + (cardsCoordinates[i].first - x) * (cardsCoordinates[i].first - x);
if (distance2 < minDistance2)
{
minDistance2 = distance2;
n = i;
}
}
if (n < ((CARDS_DISPLAYED/2) - 1))
{
last_user_activity = 0;
mStage = STAGE_TRANSITION_RIGHT;
}
if (n > ((CARDS_DISPLAYED/2) + 1))
{
last_user_activity = 0;
mStage = STAGE_TRANSITION_LEFT;
}
mEngine->LeftClickedProcessed();
break;
}
if (last_user_activity > NO_USER_ACTIVITY_HELP_DELAY)
{
if (mStage != STAGE_ONSCREEN_MENU)
@@ -1272,6 +1303,8 @@ void GameStateDeckViewer::renderCard(int id, float rotation)
float y = (SCREEN_HEIGHT_F) / 2.0f + SCREEN_HEIGHT_F * mSlide * (scale + 0.2f);
cardsCoordinates[id] = pair<float, float>(x, y);
int alpha = (int) (255 * (scale + 1.0 - max_scale));
if (!card) return;
@@ -1354,8 +1387,8 @@ void GameStateDeckViewer::Render()
{
WFont * mFont = resources.GetWFont(Fonts::MAIN_FONT);
JRenderer * r = JRenderer::GetInstance();
r->ClearScreen(ARGB(0,0,0,0));
if (displayed_deck == myDeck && mStage != STAGE_MENU) renderDeckBackground();
int order[3] = { 1, 2, 3 };