diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 17e02ce..dc21aea 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -26,7 +26,13 @@
+ android:screenOrientation="landscape" >
+
+
+
+
+
+
-
-
-
-
-
-
+ android:screenOrientation="landscape" />
drawingList; //
private List map; //cno順にdnoを管理(要するに絵の並び)
private List colorList; //cno順にr,g,b,dを管理:カードごとの色
+ private List nowOpenList;
// コンストラクタ
@@ -81,6 +82,27 @@
resources = getResources();
View view = inflater.inflate(R.layout.fragment_card_drawing, container, false);
+ // 現在のopenListを記録
+ nowOpenList = new ArrayList(){
+ {
+ add(false);
+ add(false);
+ add(false);
+ add(false);
+ add(false);
+ add(false);
+ add(false);
+ add(false);
+ add(false);
+ add(false);
+ add(false);
+ add(false);
+ add(false);
+ add(false);
+ add(false);
+ add(false);
+ }
+ };
// ImageButton16個の型を使いまわしやすいように配列で使用
imageButtons = new ImageButton[] {
@@ -138,6 +160,17 @@
}
);
+ gameViewModel.getEndStateLiveData().observe (
+ getViewLifecycleOwner(),
+ endStateObserver -> {
+ System.out.println("kota: " + endStateObserver);
+ if(endStateObserver == 0) {
+ System.out.println("kota: ゲームが終了!!:" + endStateObserver);
+ finishGameAlertMake(myTeam, nowTurn);
+ }
+ }
+ );
+
gameViewModel.getTurnsLiveData().observe (
getViewLifecycleOwner(),
turnsObserver -> {
@@ -325,8 +358,9 @@
* Observeして変更加わった度に呼ばれる
**/
private void setOpen(List openList) {
+
for(int i=0; i< openList.size(); i++) {
- if (openList.get(i) == true) {
+ if (openList.get(i) == true && nowOpenList.get(i) == false) {
// オープンだったときの描画
if (colorList.get(i).contains("r")) {
backColors[i].setBackground(resources.getDrawable(R.drawable.red_image));
@@ -341,9 +375,10 @@
backColors[i].setBackground(resources.getDrawable(R.drawable.black_image));
imageButtons[i].setVisibility(View.INVISIBLE);
gameViewModel.sendEndState();
- finishGameAlertMake(i, myTeam, nowTurn);
+ //finishGameAlertMake(myTeam, nowTurn);
}
setAnime(i);
+ nowOpenList.set(i, true);
}
}
}
@@ -368,30 +403,10 @@
}
/**
- * アラートから呼ばれる、リアルタイムに裏返す処理
+ * アラートから呼ばれる、裏返す通信処理
**/
private void setOpenRealTime(int cno, boolean isOK) {
- // 裏返す処理
- if(isOK) {
- if (colorList.get(cno).contains("r")) {
- backColors[cno].setBackground(resources.getDrawable(R.drawable.red_image));
- imageButtons[cno].setVisibility(View.INVISIBLE);
- } else if (colorList.get(cno).contains("b")) {
- backColors[cno].setBackground(resources.getDrawable(R.drawable.blue_image));
- imageButtons[cno].setVisibility(View.INVISIBLE);
- } else if (colorList.get(cno).contains("g")) {
- backColors[cno].setBackground(resources.getDrawable(R.drawable.gray_image));
- imageButtons[cno].setVisibility(View.INVISIBLE);
- } else if (colorList.get(cno).contains("d")) {
- backColors[cno].setBackground(resources.getDrawable(R.drawable.black_image));
- imageButtons[cno].setVisibility(View.INVISIBLE);
- finishGameAlertMake(cno, myTeam, nowTurn);
- }
- setAnime(cno);
- }
-
gameViewModel.sendOpenList(cno);
-
}
/**
@@ -478,9 +493,11 @@
/**
* 黒いカードがひかれて、ゲームが終わったときに呼ばれるアラート
*/
- private void finishGameAlertMake(int cno, String myTeam, String nowTurn) {
+ private void finishGameAlertMake(String myTeam, String nowTurn) {
String strTitle;
String strMessage;
+ System.out.println("ゲームが終わった時のmyTeam:" + myTeam);
+ System.out.println("ゲームが終わった時のmyTurn:" + nowTurn);
if (myTeam == nowTurn) {
strTitle = "Your Lose...";
diff --git a/app/src/main/java/org/ntlab/irisclient/GameMasterActivity.java b/app/src/main/java/org/ntlab/irisclient/GameMasterActivity.java
index 8a352ff..8dfea6f 100644
--- a/app/src/main/java/org/ntlab/irisclient/GameMasterActivity.java
+++ b/app/src/main/java/org/ntlab/irisclient/GameMasterActivity.java
@@ -85,7 +85,7 @@
}
});
- gameViewModel.getmaxLiveData().observe(this, new Observer() {
+ gameViewModel.getMaxLiveData().observe(this, new Observer() {
@Override
public void onChanged(Integer new_HintMax) {
hintMax = new_HintMax;
diff --git a/app/src/main/java/org/ntlab/irisclient/models/Turn.java b/app/src/main/java/org/ntlab/irisclient/models/Turn.java
index cf2eaba..b43e732 100644
--- a/app/src/main/java/org/ntlab/irisclient/models/Turn.java
+++ b/app/src/main/java/org/ntlab/irisclient/models/Turn.java
@@ -9,7 +9,7 @@
private String team;
private int max;
private int turnstate; //turn内でスパイマスターと諜報員の操作の切り替えに使用(0:スパイマスター, 1:諜報員)
- private int gamestate; //0:turn継続, 1:turn終了, 2:game終了
+ private int gamestate; //0:turn継続, 1:game終了
private List openlist = new ArrayList<>();
//---------------------------------------------------------
diff --git a/app/src/main/java/org/ntlab/irisclient/resources/GameRest.java b/app/src/main/java/org/ntlab/irisclient/resources/GameRest.java
index 6c22ade..0b72284 100644
--- a/app/src/main/java/org/ntlab/irisclient/resources/GameRest.java
+++ b/app/src/main/java/org/ntlab/irisclient/resources/GameRest.java
@@ -107,7 +107,7 @@
//-----------------------------------------------
@GET("rooms/{rid}/game/turns/{tno}/Endstate")
- Call getEndstate(
+ Call getEndState(
@Path("rid") String rid,
@Path("tno") Integer tno
);
diff --git a/app/src/main/java/org/ntlab/irisclient/viewmodels/GameViewModel.java b/app/src/main/java/org/ntlab/irisclient/viewmodels/GameViewModel.java
index edfbb91..873a44c 100644
--- a/app/src/main/java/org/ntlab/irisclient/viewmodels/GameViewModel.java
+++ b/app/src/main/java/org/ntlab/irisclient/viewmodels/GameViewModel.java
@@ -32,6 +32,7 @@
final private MutableLiveData maxMutableLiveData;
final private MutableLiveData turnNumberMutableLiveData;
final private MutableLiveData turnStateMutableLiveData;
+ final private MutableLiveData endStateMutableLiveData;
final private MutableLiveData> colorMutableLiveData;
final private MutableLiveData> opensMutableLiveData;
final private MutableLiveData> mapMutableLiveData;
@@ -49,6 +50,7 @@
private Integer maxPreData = null;
private Integer turnNumberPreData = null;
private Integer turnStatePreData = null;
+ private Integer endStatePreData = null;
private List opensPreData = null;
private Boolean[] QPreData = null;
@@ -62,6 +64,7 @@
this.maxMutableLiveData = new MutableLiveData<>();
this.turnNumberMutableLiveData = new MutableLiveData<>();
this.turnStateMutableLiveData = new MutableLiveData<>();
+ this.endStateMutableLiveData = new MutableLiveData<>();
this.mapMutableLiveData = new MutableLiveData<>();
this.colorMutableLiveData = new MutableLiveData<>();
this.opensMutableLiveData = new MutableLiveData<>();
@@ -81,7 +84,6 @@
public void setRid(String rid) {
this.rid = rid;
//初期値呼び出し
- updateTurnNumber();
testGame(); // 通信をして game に値をセットさせる関数
startColor();
startMap();
@@ -96,13 +98,16 @@
public LiveData getTurnStateLiveData() {
return this.turnStateMutableLiveData;
}
+ public LiveData getEndStateLiveData() {
+ return this.endStateMutableLiveData;
+ }
public LiveData getHintLiveData() {
return this.hintMutableLiveData;
}
public LiveData> getOpenListLiveData() {
return this.openListMutableLiveData;
}
- public LiveData getmaxLiveData() {
+ public LiveData getMaxLiveData() {
return this.maxMutableLiveData;
}
public LiveData> getOpenLiveData() {
@@ -292,7 +297,6 @@
//r,bの取得(今どちらのチームかの判別)
public void updateTurns() {
- final GameRest gameRest = retrofit.create(GameRest.class);
Call call = gameRest.getTeam(rid);
call.enqueue(new Callback() {
@@ -303,18 +307,20 @@
//初回代入
try {
turnsMutableLiveData.setValue(response.body().string());
- turnsPreData = response.body().string();
+
+ turnsPreData = turnsMutableLiveData.getValue();
+ System.out.println("現在のチームは" + turnsPreData + "です");
} catch (IOException e) {
e.printStackTrace();
}
- System.out.println("現在のチームは" + turnsPreData + "です");
- }else if(response.body().equals(turnsPreData)){
+
+ }else if(turnsMutableLiveData.getValue().equals(turnsPreData)){
//値が一緒なら書き換えない
}else{
//値が異なるときのみライブデータを上書き
try {
turnsMutableLiveData.setValue(response.body().string());
- turnsPreData = response.body().string();
+ turnsPreData = turnsMutableLiveData.getValue();
} catch (IOException e) {
e.printStackTrace();
}
@@ -327,7 +333,6 @@
@Override
public void onFailure(Call call, Throwable t) {
System.out.println("通信失敗:updateTurns " + turnsPreData + "です");
- System.out.println(t);
}
});
}
@@ -521,6 +526,35 @@
});
}
+ //EndStateの更新
+ public void updateEndState() {
+ Call call = gameRest.getEndState(rid, tno);
+
+ call.enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ if (response.isSuccessful()){
+ if(endStatePreData == null){
+ //初回代入
+ endStateMutableLiveData.setValue(response.body());
+ endStatePreData = response.body();
+ }else if(response.body().equals(endStatePreData)){
+ //値が一緒なら書き換えない
+ }else{
+ //値が異なるときのみライブデータを上書き
+ endStateMutableLiveData.setValue(response.body());
+ endStatePreData = response.body();
+ }
+ }
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ System.out.println("通信失敗:updateEndState");
+ }
+ });
+ }
+
//現在開いているすべてのカードを取得([tffftffffftttff]みたいなリストを逐一更新する、マスが開くたびに更新)
public void updateOpens() {