- Added ads support for Android
- basic "message" system between JGE and java through jni - Fixed pause/resume on android/sdl
This commit is contained in:
@@ -40,8 +40,8 @@ string GameApp::systemError = "";
|
||||
|
||||
JQuadPtr manaIcons[7];
|
||||
|
||||
GameState::GameState(GameApp* parent) :
|
||||
mParent(parent)
|
||||
GameState::GameState(GameApp* parent, string id) :
|
||||
mParent(parent), mStringID(id)
|
||||
{
|
||||
mEngine = JGE::GetInstance();
|
||||
}
|
||||
@@ -341,13 +341,13 @@ void GameApp::Update()
|
||||
mTrans->End();
|
||||
if (mTrans->to != NULL && !mTrans->bAnimationOnly)
|
||||
{
|
||||
mCurrentState = mTrans->to;
|
||||
SetCurrentState(mTrans->to);
|
||||
SAFE_DELETE(mGameStates[GAME_STATE_TRANSITION]);
|
||||
mCurrentState->Start();
|
||||
}
|
||||
else
|
||||
{
|
||||
mCurrentState = mTrans->from;
|
||||
SetCurrentState(mTrans->from);
|
||||
SAFE_DELETE(mGameStates[GAME_STATE_TRANSITION]);
|
||||
}
|
||||
}
|
||||
@@ -356,7 +356,7 @@ void GameApp::Update()
|
||||
if (mCurrentState != NULL)
|
||||
mCurrentState->End();
|
||||
|
||||
mCurrentState = mNextState;
|
||||
SetCurrentState(mNextState);
|
||||
|
||||
#if defined (PSP)
|
||||
/*
|
||||
@@ -423,6 +423,20 @@ void GameApp::SetNextState(int state)
|
||||
mNextState = mGameStates[state];
|
||||
}
|
||||
|
||||
void GameApp::SetCurrentState(GameState * state)
|
||||
{
|
||||
if (mCurrentState == state)
|
||||
return;
|
||||
|
||||
if (mCurrentState)
|
||||
JGE::GetInstance()->SendCommand("leavegamestate:" + mCurrentState->getStringID());
|
||||
|
||||
mCurrentState = state;
|
||||
|
||||
if (mCurrentState)
|
||||
JGE::GetInstance()->SendCommand("entergamestate:" + mCurrentState->getStringID());
|
||||
}
|
||||
|
||||
void GameApp::Pause()
|
||||
{
|
||||
stopMusic();
|
||||
@@ -471,7 +485,7 @@ void GameApp::DoTransition(int trans, int tostate, float dur, bool animonly)
|
||||
tb->bAnimationOnly = animonly;
|
||||
mGameStates[GAME_STATE_TRANSITION] = tb;
|
||||
mGameStates[GAME_STATE_TRANSITION]->Start();
|
||||
mCurrentState = tb; //The old current state is ended inside our transition.
|
||||
SetCurrentState(tb); //The old current state is ended inside our transition.
|
||||
}
|
||||
else if (toState)
|
||||
{ //Somehow failed, just do standard SetNextState behavior
|
||||
|
||||
@@ -23,7 +23,7 @@ namespace
|
||||
}
|
||||
|
||||
GameStateAwards::GameStateAwards(GameApp* parent) :
|
||||
GameState(parent)
|
||||
GameState(parent, "trophies")
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ void StringExplode(string str, string separator, vector<string>* results)
|
||||
}
|
||||
|
||||
GameStateDeckViewer::GameStateDeckViewer(GameApp* parent) :
|
||||
GameState(parent)
|
||||
GameState(parent, "deckeditor")
|
||||
{
|
||||
bgMusic = NULL;
|
||||
useFilter = 0;
|
||||
|
||||
@@ -32,6 +32,7 @@ const float MENU_FONT_SCALE = 1.0f;
|
||||
|
||||
enum ENUM_DUEL_STATE
|
||||
{
|
||||
DUEL_STATE_UNSET = 0,
|
||||
DUEL_STATE_START,
|
||||
DUEL_STATE_END,
|
||||
DUEL_STATE_CHOOSE_DECK1,
|
||||
@@ -45,12 +46,13 @@ enum ENUM_DUEL_STATE
|
||||
DUEL_STATE_PLAY,
|
||||
DUEL_STATE_BACK_TO_MAIN_MENU,
|
||||
DUEL_STATE_MENU,
|
||||
#ifdef NETWORK_SUPPORT
|
||||
DUEL_STATE_OPPONENT_WAIT,
|
||||
#endif //NETWORK_SUPPORT
|
||||
DUEL_STATE_OPPONENT_WAIT, // used For Network only
|
||||
DUEL_STATE_ERROR
|
||||
};
|
||||
|
||||
const char * stateStrings[] = { "unset", "start", "end", "choose_deck1", "deck1_detailed_info", "deck2_detailed_info", "choose_deck1_to_2", "choose_deck2", "choose_deck2_to_play",
|
||||
"error_no_deck", "cancel", "play", "back_to_main_menu", "menu", "oponent_wait", "error" };
|
||||
|
||||
enum ENUM_DUEL_MENUS
|
||||
{
|
||||
DUEL_MENU_GAME_MENU,
|
||||
@@ -64,7 +66,7 @@ int GameStateDuel::selectedPlayerDeckId = 0;
|
||||
int GameStateDuel::selectedAIDeckId = 0;
|
||||
|
||||
GameStateDuel::GameStateDuel(GameApp* parent) :
|
||||
GameState(parent)
|
||||
GameState(parent, "duel")
|
||||
{
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
@@ -76,6 +78,7 @@ GameState(parent)
|
||||
opponentMenu = NULL;
|
||||
menu = NULL;
|
||||
popupScreen = NULL;
|
||||
mGamePhase = DUEL_STATE_UNSET;
|
||||
|
||||
#ifdef TESTSUITE
|
||||
testSuite = NULL;
|
||||
@@ -105,7 +108,7 @@ void GameStateDuel::Start()
|
||||
testSuite = NEW TestSuite("test/_tests.txt",MTGCollection());
|
||||
#endif
|
||||
|
||||
mGamePhase = DUEL_STATE_CHOOSE_DECK1;
|
||||
setGamePhase(DUEL_STATE_CHOOSE_DECK1);
|
||||
credits = NEW Credits();
|
||||
|
||||
menu = NULL;
|
||||
@@ -308,6 +311,19 @@ void GameStateDuel::ConstructOpponentMenu()
|
||||
}
|
||||
}
|
||||
|
||||
void GameStateDuel::setGamePhase(int newGamePhase) {
|
||||
if (mGamePhase == newGamePhase)
|
||||
return;
|
||||
|
||||
if (mGamePhase)
|
||||
JGE::GetInstance()->SendCommand("leaveduelphase:" + string(stateStrings[mGamePhase]));
|
||||
|
||||
mGamePhase = newGamePhase;
|
||||
|
||||
if (mGamePhase )
|
||||
JGE::GetInstance()->SendCommand("enterduelphase:" + string(stateStrings[mGamePhase]));
|
||||
}
|
||||
|
||||
void GameStateDuel::Update(float dt)
|
||||
{
|
||||
switch (mGamePhase)
|
||||
@@ -324,7 +340,7 @@ void GameStateDuel::Update(float dt)
|
||||
case DUEL_STATE_CHOOSE_DECK1:
|
||||
if (!mParent->rules->canChooseDeck())
|
||||
{
|
||||
mGamePhase = DUEL_STATE_PLAY;
|
||||
setGamePhase(DUEL_STATE_PLAY);
|
||||
}
|
||||
#ifdef TESTSUITE
|
||||
else if (mParent->players[1] == PLAYER_TYPE_TESTSUITE)
|
||||
@@ -332,7 +348,7 @@ void GameStateDuel::Update(float dt)
|
||||
if (testSuite && testSuite->loadNext())
|
||||
{
|
||||
loadTestSuitePlayers();
|
||||
mGamePhase = DUEL_STATE_PLAY;
|
||||
setGamePhase(DUEL_STATE_PLAY);
|
||||
testSuite->pregameTests();
|
||||
testSuite->initGame();
|
||||
}
|
||||
@@ -340,11 +356,11 @@ void GameStateDuel::Update(float dt)
|
||||
{
|
||||
if (!game)
|
||||
{
|
||||
mGamePhase = DUEL_STATE_ERROR;
|
||||
setGamePhase(DUEL_STATE_ERROR);
|
||||
}
|
||||
else
|
||||
{
|
||||
mGamePhase = DUEL_STATE_END;
|
||||
setGamePhase(DUEL_STATE_END);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -358,13 +374,13 @@ void GameStateDuel::Update(float dt)
|
||||
else
|
||||
{
|
||||
loadPlayer(0);
|
||||
mGamePhase = DUEL_STATE_CHOOSE_DECK2;
|
||||
setGamePhase(DUEL_STATE_CHOOSE_DECK2);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DUEL_STATE_CHOOSE_DECK1_TO_2:
|
||||
if (deckmenu->isClosed())
|
||||
mGamePhase = DUEL_STATE_CHOOSE_DECK2;
|
||||
setGamePhase(DUEL_STATE_CHOOSE_DECK2);
|
||||
else
|
||||
deckmenu->Update(dt);
|
||||
break;
|
||||
@@ -381,7 +397,7 @@ void GameStateDuel::Update(float dt)
|
||||
else
|
||||
{
|
||||
loadPlayer(1);
|
||||
mGamePhase = DUEL_STATE_PLAY;
|
||||
setGamePhase(DUEL_STATE_PLAY);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -389,7 +405,7 @@ void GameStateDuel::Update(float dt)
|
||||
if (mParent->players[1] == PLAYER_TYPE_HUMAN)
|
||||
{
|
||||
if (deckmenu->isClosed())
|
||||
mGamePhase = DUEL_STATE_PLAY;
|
||||
setGamePhase(DUEL_STATE_PLAY);
|
||||
else
|
||||
deckmenu->Update(dt);
|
||||
}
|
||||
@@ -397,7 +413,7 @@ void GameStateDuel::Update(float dt)
|
||||
{
|
||||
ConstructOpponentMenu();
|
||||
if (opponentMenu->isClosed())
|
||||
mGamePhase = DUEL_STATE_PLAY;
|
||||
setGamePhase(DUEL_STATE_PLAY);
|
||||
else
|
||||
opponentMenu->Update(dt);
|
||||
}
|
||||
@@ -448,18 +464,18 @@ void GameStateDuel::Update(float dt)
|
||||
if (game->gameOver)
|
||||
{
|
||||
if (game->players[1]->playMode != Player::MODE_TEST_SUITE) credits->compute(game->players[0], game->players[1], mParent);
|
||||
mGamePhase = DUEL_STATE_END;
|
||||
setGamePhase(DUEL_STATE_END);
|
||||
#ifdef TESTSUITE
|
||||
if (mParent->players[1] == PLAYER_TYPE_TESTSUITE)
|
||||
{
|
||||
if (testSuite->loadNext())
|
||||
{
|
||||
loadTestSuitePlayers();
|
||||
mGamePhase = DUEL_STATE_PLAY;
|
||||
setGamePhase(DUEL_STATE_PLAY);
|
||||
testSuite->initGame();
|
||||
}
|
||||
else
|
||||
mGamePhase = DUEL_STATE_END;
|
||||
setGamePhase(DUEL_STATE_END);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
@@ -489,7 +505,7 @@ void GameStateDuel::Update(float dt)
|
||||
menu->Add(MENUITEM_MAIN_MENU, "Back to main menu");
|
||||
menu->Add(MENUITEM_CANCEL, "Cancel");
|
||||
}
|
||||
mGamePhase = DUEL_STATE_MENU;
|
||||
setGamePhase(DUEL_STATE_MENU);
|
||||
}
|
||||
break;
|
||||
#ifdef NETWORK_SUPPORT
|
||||
@@ -499,7 +515,7 @@ void GameStateDuel::Update(float dt)
|
||||
{ // Player loaded
|
||||
menu->Close();
|
||||
SAFE_DELETE(menu);
|
||||
mGamePhase = DUEL_STATE_PLAY;
|
||||
setGamePhase(DUEL_STATE_PLAY);
|
||||
} else if(menu == NULL)
|
||||
{
|
||||
loadPlayer(1, 42/* 0 not good*/, false, true);
|
||||
@@ -522,7 +538,7 @@ void GameStateDuel::Update(float dt)
|
||||
menu->Update(dt);
|
||||
if (menu->isClosed())
|
||||
{
|
||||
mGamePhase = DUEL_STATE_PLAY;
|
||||
setGamePhase(DUEL_STATE_PLAY);
|
||||
SAFE_DELETE(menu);
|
||||
}
|
||||
break;
|
||||
@@ -665,7 +681,7 @@ void GameStateDuel::ButtonPressed(int controllerId, int controlId)
|
||||
if (!popupScreen->isClosed())
|
||||
{
|
||||
popupScreen->Close();
|
||||
mGamePhase = DUEL_STATE_CHOOSE_DECK1;
|
||||
setGamePhase(DUEL_STATE_CHOOSE_DECK1);
|
||||
SAFE_DELETE( popupScreen );
|
||||
}
|
||||
else
|
||||
@@ -682,7 +698,7 @@ void GameStateDuel::ButtonPressed(int controllerId, int controlId)
|
||||
if (!popupScreen->isClosed())
|
||||
{
|
||||
popupScreen->Close();
|
||||
mGamePhase = DUEL_STATE_CHOOSE_DECK2_TO_PLAY;
|
||||
setGamePhase(DUEL_STATE_CHOOSE_DECK2_TO_PLAY);
|
||||
SAFE_DELETE( popupScreen );
|
||||
}
|
||||
else
|
||||
@@ -700,7 +716,7 @@ void GameStateDuel::ButtonPressed(int controllerId, int controlId)
|
||||
case MENUITEM_RANDOM_AI:
|
||||
loadPlayer(1);
|
||||
opponentMenu->Close();
|
||||
mGamePhase = DUEL_STATE_CHOOSE_DECK2_TO_PLAY;
|
||||
setGamePhase(DUEL_STATE_CHOOSE_DECK2_TO_PLAY);
|
||||
break;
|
||||
default:
|
||||
// cancel option. return to player deck selection
|
||||
@@ -710,7 +726,7 @@ void GameStateDuel::ButtonPressed(int controllerId, int controlId)
|
||||
opponentMenu->Close();
|
||||
deckmenu->Close();
|
||||
mParent->SetNextState(DUEL_STATE_CHOOSE_DECK1);
|
||||
mGamePhase = DUEL_STATE_CHOOSE_DECK1;
|
||||
setGamePhase(DUEL_STATE_CHOOSE_DECK1);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -728,7 +744,7 @@ void GameStateDuel::ButtonPressed(int controllerId, int controlId)
|
||||
{
|
||||
popupScreen->Update(selectedDeck);
|
||||
}
|
||||
mGamePhase = DUEL_STATE_DECK2_DETAILED_INFO;
|
||||
setGamePhase(DUEL_STATE_DECK2_DETAILED_INFO);
|
||||
break;
|
||||
}
|
||||
else if (controlId == MENUITEM_MORE_INFO && !opponentMenu->showDetailsScreen())
|
||||
@@ -741,7 +757,7 @@ void GameStateDuel::ButtonPressed(int controllerId, int controlId)
|
||||
loadPlayer(1, deckNumber, 1);
|
||||
OpponentsDeckid = deckNumber;
|
||||
opponentMenu->Close();
|
||||
mGamePhase = DUEL_STATE_CHOOSE_DECK2_TO_PLAY;
|
||||
setGamePhase(DUEL_STATE_CHOOSE_DECK2_TO_PLAY);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -754,13 +770,13 @@ void GameStateDuel::ButtonPressed(int controllerId, int controlId)
|
||||
deckNumber = playerDeckList->at(WRand() % (playerDeckList->size()))->getDeckId();
|
||||
loadPlayer(0, deckNumber);
|
||||
deckmenu->Close();
|
||||
mGamePhase = DUEL_STATE_CHOOSE_DECK2_TO_PLAY;
|
||||
setGamePhase(DUEL_STATE_CHOOSE_DECK2_TO_PLAY);
|
||||
break;
|
||||
}
|
||||
else if (controlId == MENUITEM_MAIN_MENU || controlId == MENUITEM_CANCEL) // user clicked on "Cancel"
|
||||
{
|
||||
if (deckmenu) deckmenu->Close();
|
||||
mGamePhase = DUEL_STATE_BACK_TO_MAIN_MENU;
|
||||
setGamePhase(DUEL_STATE_BACK_TO_MAIN_MENU);
|
||||
break;
|
||||
}
|
||||
else if (controlId == MENUITEM_MORE_INFO && deckmenu->showDetailsScreen())
|
||||
@@ -777,7 +793,7 @@ void GameStateDuel::ButtonPressed(int controllerId, int controlId)
|
||||
{
|
||||
popupScreen->Update(selectedDeck);
|
||||
}
|
||||
mGamePhase = DUEL_STATE_DECK1_DETAILED_INFO;
|
||||
setGamePhase(DUEL_STATE_DECK1_DETAILED_INFO);
|
||||
break;
|
||||
}
|
||||
else if (controlId == MENUITEM_MORE_INFO)
|
||||
@@ -804,12 +820,12 @@ void GameStateDuel::ButtonPressed(int controllerId, int controlId)
|
||||
#ifdef NETWORK_SUPPORT
|
||||
if(mParent->players[1] == PLAYER_TYPE_REMOTE)
|
||||
{ // no need to choose an opponent deck in network mode
|
||||
mGamePhase = DUEL_STATE_OPPONENT_WAIT;
|
||||
setGamePhase(DUEL_STATE_OPPONENT_WAIT);
|
||||
}
|
||||
else
|
||||
#endif //NETWORK_SUPPORT
|
||||
{
|
||||
mGamePhase = DUEL_STATE_CHOOSE_DECK1_TO_2;
|
||||
setGamePhase(DUEL_STATE_CHOOSE_DECK1_TO_2);
|
||||
}
|
||||
playerDeck = NULL;
|
||||
}
|
||||
@@ -817,7 +833,7 @@ void GameStateDuel::ButtonPressed(int controllerId, int controlId)
|
||||
{
|
||||
loadPlayer(1, controlId);
|
||||
deckmenu->Close();
|
||||
mGamePhase = DUEL_STATE_CHOOSE_DECK2_TO_PLAY;
|
||||
setGamePhase(DUEL_STATE_CHOOSE_DECK2_TO_PLAY);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -828,18 +844,18 @@ void GameStateDuel::ButtonPressed(int controllerId, int controlId)
|
||||
|
||||
case MENUITEM_MAIN_MENU:
|
||||
menu->Close();
|
||||
mGamePhase = DUEL_STATE_BACK_TO_MAIN_MENU;
|
||||
setGamePhase(DUEL_STATE_BACK_TO_MAIN_MENU);
|
||||
break;
|
||||
case MENUITEM_CANCEL:
|
||||
menu->Close();
|
||||
mGamePhase = DUEL_STATE_CANCEL;
|
||||
setGamePhase(DUEL_STATE_CANCEL);
|
||||
break;
|
||||
case MENUITEM_MULLIGAN:
|
||||
//almosthumane - mulligan
|
||||
game->currentPlayer->takeMulligan();
|
||||
|
||||
menu->Close();
|
||||
mGamePhase = DUEL_STATE_CANCEL;
|
||||
setGamePhase(DUEL_STATE_CANCEL);
|
||||
break;
|
||||
|
||||
//END almosthumane - mulligan
|
||||
|
||||
@@ -52,7 +52,7 @@ enum ENUM_MENU_STATE_MINOR
|
||||
};
|
||||
|
||||
GameStateMenu::GameStateMenu(GameApp* parent) :
|
||||
GameState(parent)
|
||||
GameState(parent, "menu")
|
||||
{
|
||||
mGuiController = NULL;
|
||||
subMenuController = NULL;
|
||||
@@ -437,7 +437,7 @@ void GameStateMenu::ensureMGuiController()
|
||||
mGuiController->Add(NEW MenuItem(
|
||||
item->mActionId,
|
||||
mFont, item->mDisplayName,
|
||||
startX + (i * space), 50 + SCREEN_HEIGHT / 2,
|
||||
startX + (i * space), 40 + SCREEN_HEIGHT / 2,
|
||||
mIcons[iconId].get(), mIcons[iconId + 1].get(),
|
||||
item->mParticleFile.c_str(), WResourceManager::Instance()->GetQuad("particles").get(),
|
||||
(i == 0)));
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace
|
||||
}
|
||||
|
||||
GameStateOptions::GameStateOptions(GameApp* parent) :
|
||||
GameState(parent), mReload(false), grabber(NULL), optionsMenu(NULL), optionsTabs(NULL)
|
||||
GameState(parent, "options"), mReload(false), grabber(NULL), optionsMenu(NULL), optionsTabs(NULL)
|
||||
{
|
||||
}
|
||||
GameStateOptions::~GameStateOptions()
|
||||
|
||||
@@ -49,7 +49,7 @@ bool BoosterDisplay::CheckUserInput(JButton key)
|
||||
}
|
||||
|
||||
GameStateShop::GameStateShop(GameApp* parent) :
|
||||
GameState(parent)
|
||||
GameState(parent, "shop")
|
||||
{
|
||||
menu = NULL;
|
||||
for (int i = 0; i < 8; i++)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#include <dirent.h>
|
||||
|
||||
GameStateStory::GameStateStory(GameApp* parent) :
|
||||
GameState(parent)
|
||||
GameState(parent, "story")
|
||||
{
|
||||
flow = NULL;
|
||||
menu = NULL;
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#include "OptionItem.h"
|
||||
|
||||
TransitionBase::TransitionBase(GameApp* parent, GameState* _from, GameState* _to, float duration) :
|
||||
GameState(parent)
|
||||
GameState(parent, "transition")
|
||||
{
|
||||
from = _from;
|
||||
to = _to;
|
||||
|
||||
@@ -51,7 +51,7 @@ void MenuItem::Render()
|
||||
onQuad->SetColor(ARGB(70,255,255,255));
|
||||
renderer->RenderQuad(onQuad, SCREEN_WIDTH, SCREEN_HEIGHT / 2, 0, 8, 8);
|
||||
onQuad->SetColor(ARGB(255,255,255,255));
|
||||
mFont->DrawString(mText.c_str(), SCREEN_WIDTH / 2, 20 + 3 * SCREEN_HEIGHT / 4, JGETEXT_CENTER);
|
||||
mFont->DrawString(mText.c_str(), SCREEN_WIDTH / 2, 3 * SCREEN_HEIGHT / 4, JGETEXT_CENTER);
|
||||
renderer->RenderQuad(onQuad, mX, mY, 0, mScale, mScale);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user