pass turn

This commit is contained in:
marc barbier
2020-12-16 17:56:45 +01:00
parent 0c7e09249a
commit 0345dcddec
3 changed files with 48 additions and 25 deletions
@@ -20,8 +20,6 @@ import com.iutlaval.myapplication.exception.UnrecognizedCard;
import java.io.IOException;
import java.io.InterruptedIOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OptionalDataException;
import java.lang.reflect.Constructor;
import java.net.Socket;
@@ -53,11 +51,13 @@ public class GameLogicThread extends Thread{
//ces variable permette la comunication avec le thread android du tactile et le reseau en passant par ce thread
boolean requestDone=true;
DrawableCard requestCard=null;
int requestZone=-1;
boolean requestResult;
private boolean requestPlaceCardDone =true;
private DrawableCard requestPlaceCardCard =null;
private int requestPlaceCardZone =-1;
private boolean requestPlaceCardResult;
//si mise a true alors le thread va envoyer un message au serveur lui disant de passer a la phase suivante
private boolean requestEnd = false;
public GameLogicThread(GameActivity gameActivity, String deckName, Renderer renderer)
{
@@ -108,16 +108,27 @@ public class GameLogicThread extends Thread{
//si quelquechose se passe alors c'est le server qu'il l'a dit
while(ready && !cancelled)
{
if(!requestDone && requestZone != -1 && requestCard != null)
if(!requestPlaceCardDone && requestPlaceCardZone != -1 && requestPlaceCardCard != null)
{
try {//on allonge le delais car sinon on skip l'autorisation serveur
coms.setUnlimitedTimeOut();
} catch (SocketException e) {}
requestResult = onCardPlayed(requestCard,requestZone);
requestZone=-1;
requestCard=null;
requestPlaceCardResult = onCardPlayed(requestPlaceCardCard, requestPlaceCardZone);
requestPlaceCardZone =-1;
requestPlaceCardCard =null;
Log.e("request","done");
requestDone=true;
requestPlaceCardDone =true;
}
if(requestEnd)
{
try {
Log.e("TURN","PASSED");
coms.send(Command.PASS_TURN);
} catch (IOException e) {
e.printStackTrace();
}
requestEnd=false;
}
@@ -155,6 +166,8 @@ public class GameLogicThread extends Thread{
break;
case Command.ENEMYTURN:
isYourTurn=false;
//on update pas vu que l'instruction suivante va le faire
renderer.removeToDrawWithoutUpdate(BUTTONTURN_DRAWABLE_NAME);
renderer.addToDraw(new DrawableSelfRemoving(new DrawableBitmap(bitmapEnemyTurn,0,0,"enemyTurn",100F,50F),1));
@@ -296,21 +309,21 @@ public class GameLogicThread extends Thread{
protected synchronized boolean setOnCardPlayedRequest(DrawableCard card,int zone)
{
//on ne peut pas avoir 2 requette simultané
if(!requestDone)return false;
if(!requestPlaceCardDone)return false;
this.requestCard=card;
this.requestZone=zone;
requestDone=false;
this.requestPlaceCardCard =card;
this.requestPlaceCardZone =zone;
requestPlaceCardDone =false;
//on attends la fin de la requette
while(!requestDone) {
while(!requestPlaceCardDone) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return requestResult;
return requestPlaceCardResult;
}
/**
@@ -367,15 +380,10 @@ public class GameLogicThread extends Thread{
interrupt();
}
public void onEndTurnButtonPushed() {
public void requestEndTurn() {
if(isYourTurn)
{
try {
Log.e("TURN","PASSED");
coms.send(Command.PASS_TURN);
} catch (IOException e) {
e.printStackTrace();
}
requestEnd=true;
}else{
Toast t = new Toast(gameActivity);
t.setText("IT'S NOT YOUR TURN BE PATIENT");
@@ -190,7 +190,7 @@ public class TouchHandler {
unScalled_Y > GameLogicThread.BUTTON_Y_POS && unScalled_Y < GameLogicThread.BUTTON_Y_POS + GameLogicThread.BUTTON_Y_SIZE)
{
Log.e("push","detected");
gameLogic.onEndTurnButtonPushed();
gameLogic.requestEndTurn();
}
}
}
@@ -2,11 +2,15 @@ package com.iutlaval.myapplication;
//N'oubliez pas de déclarer le bon package dans lequel se trouve le fichier !
import android.app.ActionBar;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.os.Build;
import android.os.Bundle;
import android.view.Display;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import com.iutlaval.myapplication.Game.GameLogicThread;
import com.iutlaval.myapplication.Video.FpsTime;
@@ -26,8 +30,19 @@ public class GameActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT < 16) {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}else{
View decorView = getWindow().getDecorView();
// Hide the status bar.
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
}
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Display display = getWindowManager().getDefaultDisplay();
//permet d'attendre la duré de une image affiché a l'écran
FpsTime.init(display);
String deck = getIntent().getStringExtra("DECK");