- 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:
wagic.the.homebrew
2011-09-04 02:45:18 +00:00
parent 269934fe1e
commit 33691d1f13
21 changed files with 396 additions and 114 deletions
+20 -6
View File
@@ -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
+1 -1
View File
@@ -23,7 +23,7 @@ namespace
}
GameStateAwards::GameStateAwards(GameApp* parent) :
GameState(parent)
GameState(parent, "trophies")
{
}
+1 -1
View File
@@ -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;
+51 -35
View File
@@ -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
+2 -2
View File
@@ -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)));
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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++)
+1 -1
View File
@@ -7,7 +7,7 @@
#include <dirent.h>
GameStateStory::GameStateStory(GameApp* parent) :
GameState(parent)
GameState(parent, "story")
{
flow = NULL;
menu = NULL;
+1 -1
View File
@@ -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;
+1 -1
View File
@@ -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);
}