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.IOException;
import java.io.InterruptedIOException; import java.io.InterruptedIOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OptionalDataException; import java.io.OptionalDataException;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
import java.net.Socket; 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 //ces variable permette la comunication avec le thread android du tactile et le reseau en passant par ce thread
boolean requestDone=true; private boolean requestPlaceCardDone =true;
DrawableCard requestCard=null; private DrawableCard requestPlaceCardCard =null;
int requestZone=-1; private int requestPlaceCardZone =-1;
boolean requestResult; 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) 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 //si quelquechose se passe alors c'est le server qu'il l'a dit
while(ready && !cancelled) 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 try {//on allonge le delais car sinon on skip l'autorisation serveur
coms.setUnlimitedTimeOut(); coms.setUnlimitedTimeOut();
} catch (SocketException e) {} } catch (SocketException e) {}
requestResult = onCardPlayed(requestCard,requestZone); requestPlaceCardResult = onCardPlayed(requestPlaceCardCard, requestPlaceCardZone);
requestZone=-1; requestPlaceCardZone =-1;
requestCard=null; requestPlaceCardCard =null;
Log.e("request","done"); 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; break;
case Command.ENEMYTURN: case Command.ENEMYTURN:
isYourTurn=false;
//on update pas vu que l'instruction suivante va le faire //on update pas vu que l'instruction suivante va le faire
renderer.removeToDrawWithoutUpdate(BUTTONTURN_DRAWABLE_NAME); renderer.removeToDrawWithoutUpdate(BUTTONTURN_DRAWABLE_NAME);
renderer.addToDraw(new DrawableSelfRemoving(new DrawableBitmap(bitmapEnemyTurn,0,0,"enemyTurn",100F,50F),1)); 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) protected synchronized boolean setOnCardPlayedRequest(DrawableCard card,int zone)
{ {
//on ne peut pas avoir 2 requette simultané //on ne peut pas avoir 2 requette simultané
if(!requestDone)return false; if(!requestPlaceCardDone)return false;
this.requestCard=card; this.requestPlaceCardCard =card;
this.requestZone=zone; this.requestPlaceCardZone =zone;
requestDone=false; requestPlaceCardDone =false;
//on attends la fin de la requette //on attends la fin de la requette
while(!requestDone) { while(!requestPlaceCardDone) {
try { try {
Thread.sleep(100); Thread.sleep(100);
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
return requestResult; return requestPlaceCardResult;
} }
/** /**
@@ -367,15 +380,10 @@ public class GameLogicThread extends Thread{
interrupt(); interrupt();
} }
public void onEndTurnButtonPushed() { public void requestEndTurn() {
if(isYourTurn) if(isYourTurn)
{ {
try { requestEnd=true;
Log.e("TURN","PASSED");
coms.send(Command.PASS_TURN);
} catch (IOException e) {
e.printStackTrace();
}
}else{ }else{
Toast t = new Toast(gameActivity); Toast t = new Toast(gameActivity);
t.setText("IT'S NOT YOUR TURN BE PATIENT"); 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) unScalled_Y > GameLogicThread.BUTTON_Y_POS && unScalled_Y < GameLogicThread.BUTTON_Y_POS + GameLogicThread.BUTTON_Y_SIZE)
{ {
Log.e("push","detected"); 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 ! //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.app.Activity;
import android.content.pm.ActivityInfo; import android.content.pm.ActivityInfo;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.view.Display; import android.view.Display;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import com.iutlaval.myapplication.Game.GameLogicThread; import com.iutlaval.myapplication.Game.GameLogicThread;
import com.iutlaval.myapplication.Video.FpsTime; import com.iutlaval.myapplication.Video.FpsTime;
@@ -26,8 +30,19 @@ public class GameActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(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); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Display display = getWindowManager().getDefaultDisplay(); Display display = getWindowManager().getDefaultDisplay();
//permet d'attendre la duré de une image affiché a l'écran
FpsTime.init(display); FpsTime.init(display);
String deck = getIntent().getStringExtra("DECK"); String deck = getIntent().getStringExtra("DECK");