@Override public void onAttach(Activity activity) { super.onAttach(activity); mGameState.addListener(this); if (!mGameState.isGameOver()) { getFragmentManager().beginTransaction() .hide(this) .commit(); } }
@Override public void onDetach() { super.onDetach(); mGameState.removeListener(this); mHandler.removeCallbacksAndMessages(null); }
@Override public boolean onPreferenceChange(final Preference preference, final Object newValue) { if (!mGameState.isGameStarted()) { return true; } AlertDialog.Builder builder; builder = new AlertDialog.Builder(preference.getContext()); builder.setTitle(R.string.change_theme) .setMessage(R.string.change_theme_warning) .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { themePreference.setValue(newValue.toString()); } }) .setNegativeButton(android.R.string.no, null) .setIcon(R.drawable.alert) .show(); return false; } });
@Override public void tick() { if (mGameFactory.getGameState().isGameOver()) { simulationFinished(); } else { GameSimulator.this.tick(); } } });
private void waitForGameRestarted() { final GameState gameState = mGameFactory.getGameState(); final CountDownLatch loadMapLatch = new CountDownLatch(1); gameState.addListener(new GameState.Listener() { @Override public void gameRestart() { loadMapLatch.countDown(); gameState.removeListener(this); } @Override public void gameOver() { } }); try { loadMapLatch.await(); } catch (InterruptedException e) { throw new RuntimeException(e); } }
@Override public void resetState(KeyValueStore gameConfig) { setGameOver(false); mGameStarted = false; }
private void initializeBusiness(Context context) { mMapRepository = new MapRepository(); mScoreBoard = new ScoreBoard(mGameEngine); mTowerSelector = new TowerSelector(mGameEngine, mScoreBoard); mGameLoader = new GameLoader(context, mGameEngine, mGamePersister, mViewport, mEntityRegistry, mMapRepository); mHighScores = new HighScores(context, mGameEngine, mScoreBoard, mGameLoader); mGameState = new GameState(mScoreBoard, mHighScores, mTowerSelector); mTowerAging = new TowerAging(mGameEngine); mSpeedManager = new GameSpeed(mGameEngine); mWaveManager = new WaveManager(mGameEngine, mScoreBoard, mGameState, mEntityRegistry, mTowerAging); mTowerControl = new TowerControl(mGameEngine, mScoreBoard, mTowerSelector, mEntityRegistry); mTowerInserter = new TowerInserter(mGameEngine, mGameState, mEntityRegistry, mTowerSelector, mTowerAging, mScoreBoard); mTutorialControl = new TutorialControl(context, mTowerInserter, mTowerSelector, mWaveManager); }
public void startNextWave() { if (mGameEngine.isThreadChangeNeeded()) { mGameEngine.post(new Message() { @Override public void execute() { startNextWave(); } }); return; } if (!mNextWaveReady) { return; } mGameState.gameStarted(); giveWaveRewardAndEarlyBonus(); createAndStartWaveAttender(); updateBonusOnScoreBoard(); updateRemainingEnemiesCount(); setWaveNumber(mWaveNumber + 1); setNextWaveReady(false); triggerMinWaveDelay(); for (WaveStartedListener listener : mWaveStartedListeners) { listener.waveStarted(); } }
public void insertTower(final String towerName) { if (mGameEngine.isThreadChangeNeeded()) { mGameEngine.post(new Message() { @Override public void execute() { insertTower(towerName); } }); return; } if (mInsertedTower == null && !mGameState.isGameOver() && mScoreBoard.getCredits() >= mTowerDefaultValue.getDefaultValue(towerName)) { showTowerLevels(); mInsertedTower = (Tower) mEntityRegistry.createEntity(towerName); } }
@Override public void livesChanged(int lives) { if (!mGameOver && mScoreBoard.getLives() < 0) { setGameOver(true); } }
@Override public void gameRestart() { loadMapLatch.countDown(); gameState.removeListener(this); }
@Override public void readState(KeyValueStore gameConfig, KeyValueStore gameState) { setGameOver(gameState.getInt("lives") < 0); mGameStarted = gameState.getInt("waveNumber") > 0; }