package com.example.fiveinrowparse;
import android.app.Activity;
import android.app.NotificationManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.Transformation;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.parse.GetCallback;
import com.parse.ParseException;
import com.parse.ParseInstallation;
import com.parse.ParseObject;
import com.parse.ParsePush;
import com.parse.ParseQuery;
import com.parse.ParseUser;
import com.parse.SaveCallback;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Arrays;
public class OnlineGameActivity extends Activity {
private static final String SETTINGS_PREFS = "com.busck.fiveInRow.Settings";
private static final String THEME_PREFS = "com.busck.fiveInRow.theme_prefs";
private MyOnlineBoard mGameBoard;
private int PLAYER_ONE = 1;
private int PLAYER_TWO = 2;
private int PLAYER_ONE_WON = 3;
private int PLAYER_TWO_WON = 4;
private String playerOneName;
private String playerTwoName;
private TextView currentPlayerString;
private Button mSurrenderButton;
private Button mPlayAgainButton;
private Button mExitButton;
private int mPlayerOneWins = 0;
private int mPlayerTwoWins = 0;
private TextView mPlayerOneScore;
private TextView mPlayerTwoScore;
//Online variables
String MY_PREFS_STRING = "myPrefs";
String MY_CURRENT_GAME_ID = "myCurrentOnlineGame";
String DO_I_HAVE_A_GAME = "doIhaveAGame";
private int[] mGameArray = new int[800];
private String mCurrentGameId;
private String mOpponent;
String OPPONENT_USER_NAME = "opponentUsername";
String START_NEW_GAME_INTENT_STRING = "StartnewGame";
String OPPONENT_ID = "opponentId";
private String mPlayerTurn;
private String mOpponentUserId;
Boolean mStartNewGame = true;
Boolean mSomeOneWon = false;
private Number mLatestMoveIndex = 900; //Utanför array index
private Boolean mGameOver = false;
private Boolean mMenuIsExpanded = false;
private String mTheme;
private ParseObject mCurrentGame;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_online_main);
//mGameBoard = (MyOnlineBoard) findViewById(R.id.game_online_board_view);
RelativeLayout MainLayout = (RelativeLayout) findViewById(R.id.main_layout);
mPlayerOneScore = (TextView) findViewById(R.id.player_one_score);
mPlayerTwoScore = (TextView) findViewById(R.id.player_two_score);
mSurrenderButton = (Button) findViewById(R.id.surrender_button);
mPlayAgainButton = (Button) findViewById(R.id.play_again_button);
mExitButton = (Button) findViewById(R.id.return_lobby_button);
currentPlayerString = (TextView) findViewById(R.id.player_turn_string);
//mGameBoard = (MyBoard) findViewById(R.id.game_board);
//mGameBoard.setOnProgressChangeListener(changeListener);
SharedPreferences settings = getSharedPreferences(SETTINGS_PREFS, 0);
mTheme = settings.getString(THEME_PREFS, "dark");
mStartNewGame = getIntent().getBooleanExtra(START_NEW_GAME_INTENT_STRING, false);
mCurrentGameId = getIntent().getStringExtra(MY_CURRENT_GAME_ID);
getIntent().removeExtra(START_NEW_GAME_INTENT_STRING); //Tar bort det värdet så att det inte skapas ett nytt spel om onCreate anropas igen
/*
mCurrentGameId = getIntent().getStringExtra(MY_CURRENT_GAME_ID);
mOpponent = getIntent().getStringExtra(OPPONENT_USER_NAME);
playerOneName = ParseUser.getCurrentUser().getUsername();
playerTwoName = getIntent().getStringExtra(OPPONENT_USER_NAME);
currentPlayerString.setText(playerOneName + "turn!");
mOpponentUserId = getIntent().getStringExtra(OPPONENT_ID);
mPlayerOneScore.setText(playerOneName + ": " + Integer.toString(mPlayerOneWins));
mPlayerTwoScore.setText(playerTwoName + ": " + Integer.toString(mPlayerTwoWins));
*/
startUpOnlineGame();
//makeANewOnlineGame();
}
@Override
protected void onResume() {
super.onResume();
MainApplication.onlineGameIsVisibe();
registerReceiver(broadcastReceiver, new IntentFilter("com.busck.UPPDATE_THE_GAME"));
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancelAll();
}
@Override
protected void onPause() {
super.onPause();
MainApplication.onlineGameIsNotVisible();
unregisterReceiver(broadcastReceiver);
}
public void uppdateTheGame(){
ParseQuery<ParseObject> query = ParseQuery.getQuery("Games");
query.getInBackground(mCurrentGameId, new GetCallback<ParseObject>() {
public void done(ParseObject game, ParseException e) {
if (e == null) {
mCurrentGame = game;
mGameArray = gameStringToGameArray(game.getString("gameArray"));
mPlayerTurn = game.getString("playersTurn");
playerOneName = game.getString("playerOneName");
playerTwoName = game.getString("playerTwoName");
mPlayerOneWins = game.getNumber("playerOneWins").intValue();
mPlayerTwoWins = game.getNumber("playerTwoWins").intValue();
mLatestMoveIndex = game.getNumber("latestMoveIndex");
Boolean someOneWon = game.getBoolean("someOneWon");
mGameOver = game.getBoolean("gameOver");
int winningNumber = game.getNumber("winnerNumber").intValue();
if(playerOneName.equals(ParseUser.getCurrentUser().getUsername())){
mOpponent = playerTwoName;
}else{
mOpponent = playerOneName;
}
//Kollar om man är spelare 1 eller spelare 2
int myPlayerNumber;
if(playerOneName.equals(ParseUser.getCurrentUser().getUsername())){
myPlayerNumber = 1;
}else{
myPlayerNumber = 2;
}
//Ändrar info texterna
if(mPlayerTurn.equals(ParseUser.getCurrentUser().getUsername())){
currentPlayerString.setText("Your Turn!");
}else{
currentPlayerString.setText(mPlayerTurn + " " + "turn!");
}
mPlayerOneScore.setText(playerOneName + ": " + Integer.toString(mPlayerOneWins));
mPlayerTwoScore.setText(playerTwoName + ": " + Integer.toString(mPlayerTwoWins));
//Uppdaterar brädet
mGameBoard.uppdateGame(mGameArray, mPlayerTurn, myPlayerNumber, someOneWon, winningNumber, mLatestMoveIndex);
//Visar eller döljer spela igen knappen
if(!mGameOver){
mPlayAgainButton.setVisibility(View.INVISIBLE);
mPlayAgainButton.setText("Play again");
} else if(mGameOver){
mPlayAgainButton.setVisibility(View.VISIBLE);
}
//Visar eller döljer layouten som talar om att motspelaren vill spela igen
if(myPlayerNumber == 1){
if(game.getString("playerTwoVotePlayAgain").equals("yes")){
RelativeLayout playagainLagout = (RelativeLayout) findViewById(R.id.play_again_layout);
playagainLagout.setVisibility(View.VISIBLE);
} else if(game.getString("playerOneVotePlayAgain").equals("yes")){ //Ändrar text på knappen om man redan skickat invite
mPlayAgainButton.setText("Invite sent");
}
} else if (myPlayerNumber == 2) {
if (game.getString("playerOneVotePlayAgain").equals("yes")) {
RelativeLayout playagainLagout = (RelativeLayout) findViewById(R.id.play_again_layout);
playagainLagout.setVisibility(View.VISIBLE);
}else if(game.getString("playerTwoVotePlayAgain").equals("yes")){ //Ändrar text på knappen om man redan skickat invite
mPlayAgainButton.setText("Invite sent");
}
}
} else {
Toast.makeText(OnlineGameActivity.this, "could not contact the server", Toast.LENGTH_SHORT).show();
}
//Ändrar tillbaka texten på knappen
Button refreshButton = (Button) findViewById(R.id.refresh_game_button);
refreshButton.setText("Refresh");
}
});
}
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
uppdateTheGame();
}
};
public void startUpOnlineGame() {
SharedPreferences prefs = getSharedPreferences(MY_PREFS_STRING, 0);
ParseUser currentUser = ParseUser.getCurrentUser();
if (mStartNewGame) {
//mOpponent = playerTwoName;
mPlayerTurn = ParseUser.getCurrentUser().getUsername();
final ParseObject game = new ParseObject("Games");
game.put("playerOneName", currentUser.getUsername());
game.put("playerOneId", currentUser.getObjectId());
game.put("playerTwoName", getIntent().getStringExtra(OPPONENT_USER_NAME));
game.put("playerTwoId", getIntent().getStringExtra(OPPONENT_ID));
game.put("playersTurn", currentUser.getUsername());
game.put("someOneWon", false);
game.put("gameOver", false);
game.put("playerOneVotePlayAgain", "no");
game.put("playerTwoVotePlayAgain", "no");
game.put("winnerNumber", 0);
game.put("latestMoveIndex", mLatestMoveIndex);
game.put("gameArray", Arrays.toString(mGameArray));
game.put("playerOneWins", 0);
game.put("playerTwoWins", 0);
game.put("playerTwoAccepted", false);
game.saveInBackground(new SaveCallback() {
public void done(ParseException e) {
if (e == null) {
mCurrentGame = game;
mCurrentGameId = game.getObjectId();
getIntent().putExtra(MY_CURRENT_GAME_ID, mCurrentGameId); //Lägger till current game Id i intentet, om man släcker skärmen så att det startas om
playerTwoName = game.getString("playerTwoName");
playerOneName = game.getString("playerOneName");
mOpponent = getIntent().getStringExtra(OPPONENT_USER_NAME);
mOpponentUserId = getIntent().getStringExtra(OPPONENT_ID);
mPlayerTurn = game.getString("playersTurn");
if(mPlayerTurn.equals(ParseUser.getCurrentUser().getUsername())){
currentPlayerString.setText("Your Turn!");
}else{
currentPlayerString.setText(mPlayerTurn + " " + "turn!");
}
mPlayerOneScore.setText(playerOneName + ": " + Integer.toString(mPlayerOneWins));
mPlayerTwoScore.setText(playerTwoName + ": " + Integer.toString(mPlayerTwoWins));
if (mGameBoard == null) {
Log.d("No board", "noBoard");
createTheBoard(mGameArray, false, 0, mTheme);
notifyTheOtherUserAboutTheGame(mOpponentUserId);
}
// Saved successfully.
mStartNewGame = false;
} else {
// The save failed.
Log.d("tag", "User update error: " + e);
}
}
});
} else if (!mStartNewGame) {
ParseQuery<ParseObject> query = ParseQuery.getQuery("Games");
query.getInBackground(mCurrentGameId, new GetCallback<ParseObject>() {
public void done(ParseObject game, ParseException e) {
if (e == null) {
mGameArray = gameStringToGameArray(game.getString("gameArray"));
if (mGameBoard == null) {
mPlayerTurn = game.getString("playersTurn");
mCurrentGame = game;
mOpponent = getIntent().getStringExtra(OPPONENT_USER_NAME);
mOpponentUserId = getIntent().getStringExtra(OPPONENT_ID);
playerOneName = game.getString("playerOneName");
playerTwoName = game.getString("playerTwoName");
mLatestMoveIndex = game.getNumber("latestMoveIndex");
mGameOver = game.getBoolean("gameOver");
mPlayerOneWins = game.getNumber("playerOneWins").intValue();
mPlayerTwoWins = game.getNumber("playerTwoWins").intValue();
Boolean someOneWon = game.getBoolean("someOneWon");
int winningNumber = game.getNumber("winnerNumber").intValue();
//Kollar om man är spelare 1 eller spelare 2
int myPlayerNumber;
if(playerOneName.equals(ParseUser.getCurrentUser().getUsername())){
myPlayerNumber = 1;
}else{
myPlayerNumber = 2;
}
//Visar eller döljer layouten som talar om att motspelaren vill spela igen
if(myPlayerNumber == 1){
if(game.getString("playerTwoVotePlayAgain").equals("yes")){
RelativeLayout playagainLagout = (RelativeLayout) findViewById(R.id.play_again_layout);
playagainLagout.setVisibility(View.VISIBLE);
} else if(game.getString("playerOneVotePlayAgain").equals("yes")){ //Ändrar text på knappen om man redan skickat invite
mPlayAgainButton.setText("Invite sent");
}
} else if (myPlayerNumber == 2) {
if (game.getString("playerOneVotePlayAgain").equals("yes")) {
RelativeLayout playagainLagout = (RelativeLayout) findViewById(R.id.play_again_layout);
playagainLagout.setVisibility(View.VISIBLE);
}else if(game.getString("playerTwoVotePlayAgain").equals("yes")){ //Ändrar text på knappen om man redan skickat invite
mPlayAgainButton.setText("Invite sent");
}
}
//Ändrar på texterna
if(mPlayerTurn.equals(ParseUser.getCurrentUser().getUsername())){
currentPlayerString.setText("Your Turn!");
}else{
currentPlayerString.setText(mPlayerTurn + " " + "turn!");
}
if(!mGameOver){
mPlayAgainButton.setVisibility(View.INVISIBLE);
mPlayAgainButton.setText("Play Again");
} else if(mGameOver){
mPlayAgainButton.setVisibility(View.VISIBLE);
}
mPlayerOneScore.setText(playerOneName + ": " + Integer.toString(mPlayerOneWins));
mPlayerTwoScore.setText(playerTwoName + ": " + Integer.toString(mPlayerTwoWins));
createTheBoard(mGameArray, someOneWon, winningNumber, mTheme);
Log.d("No board", "noBoard");
}
} else {
Toast.makeText(OnlineGameActivity.this, "Could not contact the server, trying again", Toast.LENGTH_SHORT).show();
startUpOnlineGame();
}
}
});
}
}
public void ChangeThemeButton(View view){
mTheme = (String) view.getTag();
SharedPreferences settings = getSharedPreferences(SETTINGS_PREFS, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString(THEME_PREFS, mTheme);
editor.commit();
RelativeLayout container = (RelativeLayout) findViewById(R.id.game_online_board_view);
container.removeAllViews();
createTheBoard(mGameArray, false, 0, mTheme);
}
private void createTheBoard(int[] gameArray, Boolean someOneWon, int winningNumber, String theme) {
int myPlayerNumber;
if(playerOneName.equals(ParseUser.getCurrentUser().getUsername())){
myPlayerNumber = 1;
}else{
myPlayerNumber = 2;
}
RelativeLayout container = (RelativeLayout) findViewById(R.id.game_online_board_view);
mGameBoard = new MyOnlineBoard(this, gameArray, mPlayerTurn, myPlayerNumber, someOneWon, winningNumber, mLatestMoveIndex, theme);
container.addView(mGameBoard);
mGameBoard.setOnProgressChangeListener(changeListener);
mGameBoard.uppdateGame(gameArray, mPlayerTurn, myPlayerNumber, someOneWon, winningNumber, mLatestMoveIndex);
}
private void notifyTheOtherUserAboutTheGame(String recivingUserId) {
ParseQuery userQuery = ParseInstallation.getQuery();
userQuery.whereEqualTo("userId", recivingUserId);
JSONObject data = new JSONObject();
try {
data.put("action", "com.example.NEW_GAME_INVITE");
data.put("fromUser", ParseUser.getCurrentUser().getUsername());
data.put("gameId", mCurrentGameId);
data.put("fromUserId", ParseUser.getCurrentUser().getObjectId());
} catch (JSONException e) {
e.printStackTrace();
}
ParsePush parsePush = new ParsePush();
parsePush.setQuery(userQuery);
parsePush.setMessage("New game invite");
parsePush.setData(data);
parsePush.sendInBackground();
}
//Förvandlar gamestringen från parse till array
private int[] gameStringToGameArray(String gameString) {
Log.d("GameArrayString", gameString);
String currentGameString = gameString.replace("[", "");
currentGameString = currentGameString.replace("]", "");
currentGameString = currentGameString.replace(" ", "");
String[] gameStringArray = currentGameString.split(",");
int[] gameIntArray = new int[gameStringArray.length];
for (int i = 0; i < gameStringArray.length; i++) {
gameIntArray[i] = Integer.parseInt(gameStringArray[i]);
}
return gameIntArray;
}
@Override
public void onBackPressed() {
//super.onBackPressed();
}
public void updateCurrentPlayerState(int playerCode, int[] gameArray) {
if (playerCode == PLAYER_ONE) {
if (playerOneName.equals(ParseUser.getCurrentUser().getUsername())) {
currentPlayerString.setText("Your Turn!");
} else {
currentPlayerString.setText(playerOneName + " turn!");
}
uppdateGameOnParse(gameArray);
} else if (playerCode == PLAYER_TWO) {
if (playerTwoName.equals(ParseUser.getCurrentUser().getUsername())) {
currentPlayerString.setText("Your Turn!");
} else {
currentPlayerString.setText(playerTwoName + " turn!");
}
uppdateGameOnParse(gameArray);
} else if (playerCode == PLAYER_ONE_WON) {
if (!mGameOver) {
mPlayerOneWins++; //Om spelet inte var slut plussas det på en
}
mPlayerOneScore.setText(playerOneName + ": " + Integer.toString(mPlayerOneWins));
someOneWon();
currentPlayerString.setText(playerOneName + " wins!");
uppdateGameOnParseWinner(gameArray, 1);
} else if (playerCode == PLAYER_TWO_WON) {
if (!mGameOver) {
mPlayerTwoWins++; //Om spelet inte var slut plussas det på 1
}
mPlayerTwoScore.setText(playerTwoName + ": " + Integer.toString(mPlayerTwoWins));
someOneWon();
currentPlayerString.setText(playerTwoName + " wins!");
uppdateGameOnParseWinner(gameArray, 2);
}
}
private void uppdateGameOnParse(final int[] gameArray) {
ParseQuery<ParseObject> query = ParseQuery.getQuery("Games");
query.getInBackground(mCurrentGameId, new GetCallback<ParseObject>() {
public void done(ParseObject game, ParseException e) {
if (e == null) {
game.put("playersTurn", mOpponent);
game.put("latestMoveIndex", mLatestMoveIndex);
game.put("gameArray", Arrays.toString(gameArray));
game.saveInBackground(new SaveCallback() {
public void done(ParseException e) {
if (e == null) {
notifyTheOtherUserAboutTheMove(mOpponentUserId);
} else {
// The save failed.
Log.d("tag", "User update error: " + e);
}
}
});
}
}
});
}
private void uppdateGameOnParseWinner(final int[] gameArray, final int winner) {
if(!mGameOver) {
ParseQuery<ParseObject> query = ParseQuery.getQuery("Games");
query.getInBackground(mCurrentGameId, new GetCallback<ParseObject>() {
public void done(ParseObject game, ParseException e) {
if (e == null) {
game.put("playersTurn", mOpponent);
game.put("someOneWon", true);
game.put("winnerNumber", winner);
game.put("gameOver", true);
game.put("latestMoveIndex", mLatestMoveIndex);
game.put("playerOneWins", mPlayerOneWins);
game.put("playerTwoWins", mPlayerTwoWins);
game.put("gameArray", Arrays.toString(gameArray));
game.saveInBackground(new SaveCallback() {
public void done(ParseException e) {
if (e == null) {
notifyTheOtherUserAboutTheMove(mOpponentUserId);
} else {
// The save failed.
Log.d("tag", "User update error: " + e);
}
}
});
}
}
});
}
}
private void notifyTheOtherUserAboutTheMove(String recivingUserId) {
ParseQuery userQuery = ParseInstallation.getQuery();
userQuery.whereEqualTo("userId", recivingUserId);
JSONObject data = new JSONObject();
try {
data.put("action", "com.busck.NEW_PLAYER_MOVE");
data.put("fromUser", ParseUser.getCurrentUser().getUsername());
data.put("gameId", mCurrentGameId);
data.put("fromUserId", ParseUser.getCurrentUser().getObjectId());
} catch (JSONException e) {
e.printStackTrace();
}
ParsePush parsePush = new ParsePush();
parsePush.setQuery(userQuery);
parsePush.setMessage("New game invite");
parsePush.setData(data);
parsePush.sendInBackground();
}
private MyOnlineBoard.OnProgressChangeListener changeListener = new MyOnlineBoard.OnProgressChangeListener() {
public void onNextPlayer(View v, int player, int[] gameArray, Number lastMoveIndex) {
mLatestMoveIndex = lastMoveIndex;
updateCurrentPlayerState(player, gameArray);
}
public void onSomeoneWon(View v, int winningPlayer, int[] gameArray, Number lastMoveIndex) {
mLatestMoveIndex = lastMoveIndex;
updateCurrentPlayerState(winningPlayer, gameArray);
}
};
private void someOneWon() {
//mExitButton.setVisibility(View.VISIBLE);
mPlayAgainButton.setVisibility(View.VISIBLE);
//mSurrenderButton.setVisibility(View.INVISIBLE);
}
public void playAgain(View view) {
mPlayAgainButton.setText("Invite sent");
RelativeLayout playAgainLayout = (RelativeLayout) findViewById(R.id.play_again_layout);
playAgainLayout.setVisibility(View.INVISIBLE);
ParseQuery<ParseObject> query = ParseQuery.getQuery("Games");
query.getInBackground(mCurrentGameId, new GetCallback<ParseObject>() {
public void done(ParseObject game, ParseException e) {
if (e == null) {
if(playerOneName.equals(ParseUser.getCurrentUser().getUsername())){
if(game.getString("playerTwoVotePlayAgain").equals("yes")){
resetGame();
} else if (!game.getString("playerOneVotePlayAgain").equals("yes")){
game.put("playerOneVotePlayAgain", "yes");
game.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
notifyTheOtherUserAboutPlayAgain(mOpponentUserId);
}
});
}
}else{
if(game.getString("playerOneVotePlayAgain").equals("yes")){
resetGame();
} else if (!game.getString("playerTwoVotePlayAgain").equals("yes")){
game.put("playerTwoVotePlayAgain", "yes");
game.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
notifyTheOtherUserAboutPlayAgain(mOpponentUserId);
}
});
}
}
}
}
});
}
private void notifyTheOtherUserAboutPlayAgain(String recivingUserId) {
ParseQuery userQuery = ParseInstallation.getQuery();
userQuery.whereEqualTo("userId", recivingUserId);
JSONObject data = new JSONObject();
try {
data.put("action", "com.busck.PLAY_AGAIN");
data.put("fromUser", ParseUser.getCurrentUser().getUsername());
data.put("gameId", mCurrentGameId);
data.put("fromUserId", ParseUser.getCurrentUser().getObjectId());
} catch (JSONException e) {
e.printStackTrace();
}
ParsePush parsePush = new ParsePush();
parsePush.setQuery(userQuery);
parsePush.setMessage(mOpponent + "wants to play again!");
parsePush.setData(data);
parsePush.sendInBackground();
}
private void resetGame (){
//mGameBoard.resetTheGame();
//mExitButton.setVisibility(View.INVISIBLE);
mPlayAgainButton.setVisibility(View.INVISIBLE);
mPlayAgainButton.setText("Play Again");
//mSurrenderButton.setVisibility(View.VISIBLE);
mGameArray = new int[800];
mLatestMoveIndex = 900;
final int myPlayerNumber;
if(playerOneName.equals(ParseUser.getCurrentUser().getUsername())){
myPlayerNumber = 1;
}else{
myPlayerNumber = 2;
}
ParseQuery<ParseObject> query = ParseQuery.getQuery("Games");
query.getInBackground(mCurrentGameId, new GetCallback<ParseObject>() {
public void done(ParseObject game, ParseException e) {
if (e == null) {
game.put("playerOneVotePlayAgain", "no");
game.put("playerTwoVotePlayAgain", "no");
game.put("playersTurn", mOpponent);
game.put("someOneWon", false);
game.put("winnerNumber", 0);
game.put("latestMoveIndex", 900);
game.put("gameOver", false);
game.put("gameArray", Arrays.toString(mGameArray));
game.saveInBackground(new SaveCallback() {
public void done(ParseException e) {
if (e == null) {
notifyTheOtherUserAboutPlayAgain(mOpponentUserId);
mGameBoard.uppdateGame(mGameArray, mOpponent, myPlayerNumber, false, 0, mLatestMoveIndex);
uppdateTheGame();
} else {
// The save failed.
Log.d("tag", "User update error: " + e);
}
}
});
}
}
});
}
public void surrenderGame(View view) {
someOneWon();
// mGameBoard.surrenderTheGame();
}
public void exitGame(View view) {
finish();
}
//Omvandlar dp till pixlar
public int getPx(float dp){
DisplayMetrics metrics = this.getResources().getDisplayMetrics();
int pixels = (int) (metrics.density * dp + 0.5f);
return pixels;
}
//startar animationen för att visa den utfällbara resultattavlan
public void openMenu(View view) {
RelativeLayout totalBar = (RelativeLayout) findViewById(R.id.menu_layout);
if(!mMenuIsExpanded) {
totalBar.setVisibility(View.VISIBLE);
mMenuIsExpanded = true;
}else{
totalBar.setVisibility(View.INVISIBLE);
mMenuIsExpanded = false;
}
}
public void refreshGameButtonClicked(View view) {
Button refreshButton = (Button) findViewById(R.id.refresh_game_button);
refreshButton.setText("Loading...");
uppdateTheGame();
}
}