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 4863a96..cf2eaba 100644 --- a/app/src/main/java/org/ntlab/irisclient/models/Turn.java +++ b/app/src/main/java/org/ntlab/irisclient/models/Turn.java @@ -15,17 +15,17 @@ //--------------------------------------------------------- //ゲッター - public String getHint() { - return hint; - } +// public String getHint() { +// return hint; +// } - public String getTeam() { - return team; - } +// public String getTeam() { +// return team; +// } - public int getMax() { - return max; - } +// public int getMax() { +// return max; +// } public int getTurnstate() {return turnstate;} 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 80f73df..3ca53a4 100644 --- a/app/src/main/java/org/ntlab/irisclient/resources/GameRest.java +++ b/app/src/main/java/org/ntlab/irisclient/resources/GameRest.java @@ -5,6 +5,7 @@ import org.ntlab.irisclient.entities.GameJson; import org.ntlab.irisclient.entities.RoomJson; import org.ntlab.irisclient.entities.TurnJson; +import org.ntlab.irisclient.models.Cell; import java.util.List; @@ -96,7 +97,7 @@ @Path("tno") Integer tno ); - /* + //----------------------------------------------- // tnoに指定したターンに開けたカードのcnoを取得するメソッド @@ -106,7 +107,7 @@ @Path("tno") Integer tno ); - */ + //----------------------------------------------- // 現在のターンで開くカードのcnoを送信するメソッド 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 f16f3c8..f2fb8ec 100644 --- a/app/src/main/java/org/ntlab/irisclient/viewmodels/GameViewModel.java +++ b/app/src/main/java/org/ntlab/irisclient/viewmodels/GameViewModel.java @@ -2,6 +2,7 @@ import org.ntlab.irisclient.entities.GameJson; import org.ntlab.irisclient.entities.TurnJson; +import org.ntlab.irisclient.models.Cell; import org.ntlab.irisclient.resources.GameRest; import androidx.lifecycle.LiveData; @@ -23,7 +24,10 @@ private Integer tno; final private MutableLiveData turnsMutableLiveData; - final private MutableLiveData turnMutableLiveData; + //final private MutableLiveData turnMutableLiveData; + final private MutableLiveData hintMutableLiveData; + final private MutableLiveData> openListMutableLiveData; + final private MutableLiveData maxMutableLiveData; final private MutableLiveData> colorMutableLiveData; final private MutableLiveData> opensMutableLiveData; final private MutableLiveData> mapMutableLiveData; @@ -36,6 +40,11 @@ //更新比較用フィールド private String turnsPreData = null; private TurnJson turnPreData = null; + + private Boolean[] hintPreData = null; + private List openListPreData = null; + private Boolean[] maxPreData = null; + private List opensPreData = null; private Boolean[] QPreData = null; @@ -43,7 +52,10 @@ //コンストラクタ public GameViewModel() { this.turnsMutableLiveData = new MutableLiveData<>(); - this.turnMutableLiveData = new MutableLiveData<>(); + //this.turnMutableLiveData = new MutableLiveData<>(); + this.hintMutableLiveData = new MutableLiveData<>(); + this.openListMutableLiveData = new MutableLiveData<>(); + this.maxMutableLiveData = new MutableLiveData<>(); this.mapMutableLiveData = new MutableLiveData<>(); this.colorMutableLiveData = new MutableLiveData<>(); this.opensMutableLiveData = new MutableLiveData<>(); @@ -60,7 +72,7 @@ // startColor(rid); // startMap(rid); // startImage(rid); - testGame(); // 通信をして game に値をセットさせる関数 + } //---------------------------------------------------- @@ -68,9 +80,11 @@ public void setRid(String rid) { this.rid = rid; //初期値呼び出し - startColor(rid); - startMap(rid); - startImage(rid); + testGame(); // 通信をして game に値をセットさせる関数 + startColor(); + startMap(); + startImage(); + } //-------------------------------------------------------------- @@ -78,8 +92,17 @@ public LiveData getTurnsLiveData() { return this.turnsMutableLiveData; } - public LiveData getTurnLiveData() { - return this.turnMutableLiveData; +// public LiveData getTurnLiveData() { +// return this.turnMutableLiveData; +// } + public LiveData getHintLiveData() { + return this.hintMutableLiveData; + } + public LiveData> getopenListLiveData() { + return this.openListMutableLiveData; + } + public LiveData getmaxLiveData() { + return this.maxMutableLiveData; } public LiveData> getOpenLiveData() { return this.opensMutableLiveData; @@ -133,7 +156,7 @@ } //現在のTurnstateを送信 - public void sendTurnstate(String rid) { + public void sendTurnstate() { Call call = gameRest.setTurnstate(rid, tno); call.enqueue(new Callback() { @@ -152,7 +175,7 @@ } //現在のGamestateを送信 - public void sendEndstate(String rid) { + public void sendEndstate() { Call call = gameRest.setEndstate(rid, tno); call.enqueue(new Callback() { @@ -190,7 +213,7 @@ } //カードのカラー(r,b,g,d)の取得 - private void startColor(String rid) { + private void startColor() { Call> call = gameRest.getColorList(rid); call.enqueue(new Callback>() { @@ -210,7 +233,7 @@ } //カードの並び順の取得 - private void startMap(String rid) { + private void startMap() { Call> call = gameRest.getMap(rid); call.enqueue(new Callback>() { @@ -230,7 +253,7 @@ } //カード(画像)の取得 - private void startImage(String rid) { + private void startImage() { Call call = gameRest.getGame(rid); call.enqueue(new Callback() { @@ -255,15 +278,17 @@ // updates @Override public void update() { - updateTurns(rid); - updateTurn(rid); - updateOpens(rid); - updateQ(rid); + updateTurns(); + updateHint(); + updateOpenList(); + updateMax(); + updateOpens(); + updateQ(); } //r,bの取得(今どちらのチームかの判別) - public void updateTurns(String rid) { + public void updateTurns() { final GameRest gameRest = retrofit.create(GameRest.class); Call call = gameRest.getTeam(rid); @@ -294,8 +319,9 @@ } - //hint,openList,maxの更新 - public void updateTurn(String rid) { + //hint,openList,maxの更新(解体されました) + /* + public void updateTurn() { Call call = gameRest.getTurns(rid, tno); call.enqueue(new Callback() { @@ -323,10 +349,101 @@ } }); } + */ + + //Hintの更新 + public void updateHint() { + Call call = gameRest.getHint(rid, tno); + + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()){ + if(hintPreData == null){ + //初回代入 + hintMutableLiveData.setValue(response.body()); + hintPreData = response.body(); + }else if(response.body().equals(hintPreData)){ + //値が一緒なら書き換えない + }else{ + //値が異なるときのみライブデータを上書き + hintMutableLiveData.setValue(response.body()); + hintPreData = response.body(); + } + } + } + + @Override + public void onFailure(Call call, Throwable t) { + System.out.println("通信失敗:updateHint"); + System.out.println(t); + } + }); + } + + //OpenListの更新 + public void updateOpenList() { + Call> call = gameRest.getOpenList(rid, tno); + + call.enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + if (response.isSuccessful()){ + if(openListPreData == null){ + //初回代入 + openListMutableLiveData.setValue(response.body()); + openListPreData = response.body(); + }else if(response.body().equals(openListPreData)){ + //値が一緒なら書き換えない + }else{ + //値が異なるときのみライブデータを上書き + openListMutableLiveData.setValue(response.body()); + openListPreData = response.body(); + } + } + } + + @Override + public void onFailure(Call> call, Throwable t) { + System.out.println("通信失敗:updateOpenList"); + System.out.println(t); + } + }); + } + + //Maxの更新 + public void updateMax() { + Call call = gameRest.getMax(rid, tno); + + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()){ + if(maxPreData == null){ + //初回代入 + maxMutableLiveData.setValue(response.body()); + maxPreData = response.body(); + }else if(response.body().equals(maxPreData)){ + //値が一緒なら書き換えない + }else{ + //値が異なるときのみライブデータを上書き + maxMutableLiveData.setValue(response.body()); + maxPreData = response.body(); + } + } + } + + @Override + public void onFailure(Call call, Throwable t) { + System.out.println("通信失敗:updateMax"); + System.out.println(t); + } + }); + } //現在開いているすべてのカードを取得([tffftffffftttff]みたいなリストを逐一更新する、マスが開くたびに更新) - public void updateOpens(String rid) { + public void updateOpens() { Call> call = gameRest.getOpens(rid); call.enqueue(new Callback>() { @@ -358,7 +475,7 @@ //疑っているマス一覧の更新 - public void updateQ(String rid) { + public void updateQ() { Call call = gameRest.getQ(rid, tno); call.enqueue(new Callback() { @@ -388,7 +505,7 @@ } public void testGame() { - Call call = gameRest.getGame("gametest"); + Call call = gameRest.getGame(rid); call.enqueue(new Callback() { @Override