0

After finding that starting a new intent might not be the right way to notify user of GameOver, I'm now struggeling with runOnUiThread, Runnable and dialogs..

Question : How and where would I implement a Dialog.show() to notify the user that the game has ended? I am implementating a Rail race Game .In this when trains collision occur game over i want to show dialog here.

I've experimented with runOnUiThread, Runnable and Async threads. Can't figure it out. I want to show dialog in collision occur method of MainGamePanel.

I have a game. Activity AndroidGameActivity :

private static final String TAG = AndroidGame.class.getSimpleName();
public static Vibrator v;
private GameDatabaseOperations gameDatabaseOperations;
private int currentDate;
private int todayDate;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
   requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    try{
        currentDate = Calendar.getInstance().get(Calendar.DATE);
        gameDatabaseOperations = new GameDatabaseOperations(this);
        gameDatabaseOperations.createWriteModeDatabase();
        Cursor crDate = gameDatabaseOperations.fetchTodayDate();
        startManagingCursor(crDate);
        if(crDate!= null && crDate.getCount() >0){
            crDate.moveToFirst();
            todayDate = crDate.getInt(0);
        }

         if(currentDate != todayDate ){
            gameDatabaseOperations.updateTodayDefaultScore(0);
            gameDatabaseOperations.updateTodayDate(currentDate);
            Cursor cr1Date = gameDatabaseOperations.fetchTodayDate();
            startManagingCursor(cr1Date);
            if(cr1Date!= null && cr1Date.getCount() >0){
                cr1Date.moveToFirst();
                todayDate = cr1Date.getInt(0);
            }
        }
        gameDatabaseOperations.closeDatabase();

    }
    catch(Exception e){
        e.printStackTrace();
    }

    FrameLayout fl = new FrameLayout(this);
    setContentView(fl);
    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    LinearLayout pause = (LinearLayout) inflater.inflate(
    R.layout.pausebutton, null);
    fl.addView(new MainGamePanel(this));
    fl.addView(pause);   
    v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

     }
user1602798
  • 365
  • 3
  • 5
  • 13

1 Answers1

0

have you thought of implementing your game's engine like this:

while (!collision) 
{
     playGame();
     doAnimation();
     checkCollision();
}

dialog.show();

performAction(determineNextGameState());

putting all the game play code in the playGame() and then modifying collision field when the user dies?

chris-tulip
  • 1,840
  • 1
  • 15
  • 22