public void finalStatus(GameStatus gs){
  if (!gs.isFinal)   return;
  int maxVP=0;
  int minTurns=10000;
  ArrayList<Integer> winners=new ArrayList<Integer>();
  for (int i=0; i < players.getCount(); i++) {
    if (gs.handSizes[i] > maxVP) {
      winners.clear();
      winners.add(i);
      maxVP=gs.handSizes[i];
      minTurns=gs.turnCounts[i];
    }
 else     if (gs.handSizes[i] == maxVP) {
      if (gs.turnCounts[i] < minTurns) {
        winners.clear();
        winners.add(i);
        minTurns=gs.turnCounts[i];
      }
 else       if (gs.turnCounts[i] == minTurns)       winners.add(i);
    }
  }
  try {
    if (!finalStatsReported) {
      finalStatsReported=true;
      ArrayList<String> pl=new ArrayList<String>(players.getCount());
      for (int i=0; i < players.getCount(); i++) {
        pl.add(gs.realNames[i]);
      }
      achievements.gameOver(pl,winners);
    }
  }
 catch (  Exception e) {
    e.printStackTrace();
  }
  boolean won=false;
  for (  int i : winners)   if (i == gs.whoseTurn)   won=true;
  tr.setVisibility(GONE);
  gameOver.setVisibility(VISIBLE);
  gameOverScroll.setVisibility(VISIBLE);
  @SuppressWarnings("deprecation") LinearLayout.LayoutParams lp=new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
  FinalView fv=new FinalView(top,this,gs.realNames[gs.whoseTurn],gs.turnCounts[gs.whoseTurn],gs.embargos,gs.numCards[gs.whoseTurn],gs.supplySizes,gs.handSizes[gs.whoseTurn],won);
  fv.setLayoutParams(lp);
  showCardsButtons.add(fv.showCards);
  gameOver.addView(fv);
}

public void finalStatus ( GameStatus gs ) { if ( ! gs . isFinal ) return ; int maxVP = 0 ; int minTurns = 10000 ; ArrayList < Integer > winners = new ArrayList < Integer > ( ) ; for ( int i = 0 ; i < players . getCount ( ) ; i ++ ) { if ( gs . handSizes [ i ] > maxVP ) { winners . clear ( ) ; winners . add ( i ) ; maxVP = gs . handSizes [ i ] ; minTurns = gs . turnCounts [ i ] ; } else if ( gs . handSizes [ i ] == maxVP ) { if ( gs . turnCounts [ i ] < minTurns ) { winners . clear ( ) ; winners . add ( i ) ; minTurns = gs . turnCounts [ i ] ; } else if ( gs . turnCounts [ i ] == minTurns ) winners . add ( i ) ; } } try { if ( ! finalStatsReported ) { finalStatsReported = true ; ArrayList < String > pl = new ArrayList < String > ( players . getCount ( ) ) ; for ( int i = 0 ; i < players . getCount ( ) ; i ++ ) { pl . add ( gs . realNames [ i ] ) ; } achievements . gameOver ( pl , winners ) ; } } catch ( Exception e ) { e . printStackTrace ( ) ; } boolean won = false ; for ( int i : winners ) if ( i == gs . whoseTurn ) won = true ; tr . setVisibility ( GONE ) ; gameOver . setVisibility ( VISIBLE ) ; gameOverScroll . setVisibility ( VISIBLE ) ; @ SuppressWarnings ( "deprecation" ) LinearLayout . LayoutParams lp = new LinearLayout . LayoutParams ( ViewGroup . LayoutParams . FILL_PARENT , ViewGroup . LayoutParams . WRAP_CONTENT ) ; FinalView fv = new FinalView ( top , this , gs . realNames [ gs . whoseTurn ] , gs . turnCounts [ gs . whoseTurn ] , gs . embargos , gs . numCards [ gs . whoseTurn ] , gs . supplySizes , gs . handSizes [ gs . whoseTurn ] , won ) ; fv . setLayoutParams ( lp ) ; showCardsButtons . add ( fv . showCards ) ; gameOver . addView ( fv ) ; }
is executed instead of setstatus if the gs . isfinal flag is set . this gets executed / for each player / .
