diff --git a/app/src/main/java/org/ntlab/irisclient/entities/TurnJson.java b/app/src/main/java/org/ntlab/irisclient/entities/TurnJson.java index 233b323..a36eb5b 100644 --- a/app/src/main/java/org/ntlab/irisclient/entities/TurnJson.java +++ b/app/src/main/java/org/ntlab/irisclient/entities/TurnJson.java @@ -10,6 +10,7 @@ private String hint; private String team; private int max; + private int turnstate; private List openlist = new ArrayList<>(); //コンストラクタ @@ -31,6 +32,8 @@ return max; } + public int getTurnstate() {return turnstate;} + public List getOpenListAll() {return openlist;} //リストそのものを返す。 //--------------------------------------------------------- @@ -48,6 +51,8 @@ this.max = max; } + public void setTurnstate(int turnstate) {this.turnstate = turnstate;} + //--------------------------------------------------------- //openlist操作 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 0d5213b..5304a29 100644 --- a/app/src/main/java/org/ntlab/irisclient/resources/GameRest.java +++ b/app/src/main/java/org/ntlab/irisclient/resources/GameRest.java @@ -57,7 +57,7 @@ @GET("/{rid}/game/turns/{tno}") Call getTurns( @Path("rid") String rid, - @Path("tno") Integer tno + @Path("tno") int tno ); /* @@ -77,28 +77,30 @@ @PUT("/{rid}/game/turns/{tno}/openlist") Call setOpenList( @Path("rid") String rid, - @Path("tno") Integer tno, + @Path("tno") int tno, @Field("cno") Integer cno ); //----------------------------------------------- - // マスターのヒントを送信するメソッド + // マスターのヒントを送信するメソッド + 最大回答数も送信 @PUT("/{rid}/game/turns/{tno}/hint") Call putHint( @Path("rid") String rid, - @Path("tno") Integer tno, - @Field("hint") String hint - ); - - //----------------------------------------------- - // マスターのヒント(数字)を送信するメソッド - @PUT("/{rid}/game/turns/{tno}/max") - Call putMax( - @Path("rid") String rid, - @Path("tno") Integer tno, + @Path("tno") int tno, + @Field("hint") String hint, @Field("max") Integer max ); + //----------------------------------------------- + /* + // マスターのヒント(数字)を送信するメソッド (putHintにまとめられて不要になりました。 + @PUT("/{rid}/game/turns/{tno}/max") + Call putMax( + @Path("rid") String rid, + @Path("tno") int tno, + @Field("max") Integer max + ); + */ //----------------------------------------------- // 現在開いているすべてのカードを取得するメソッド diff --git a/app/src/main/java/org/ntlab/irisclient/viewmodels/RoomViewModel.java b/app/src/main/java/org/ntlab/irisclient/viewmodels/RoomViewModel.java index e01dbe9..3cf79f5 100644 --- a/app/src/main/java/org/ntlab/irisclient/viewmodels/RoomViewModel.java +++ b/app/src/main/java/org/ntlab/irisclient/viewmodels/RoomViewModel.java @@ -11,6 +11,7 @@ import java.io.Console; import java.util.List; +import java.util.Objects; import retrofit2.Call; import retrofit2.Callback; @@ -59,6 +60,29 @@ return this.stateLiveData; } + private boolean compareMembers(List a, List b) { + + int i; + for(i = 0; i < a.size(); i++ ) { + if (Objects.equals(a.get(i).getNickname(), b.get(i).getNickname())) { + if (Objects.equals(a.get(i).getBelongs(), b.get(i).getBelongs())) { + if (a.get(i).getMaster() == b.get(i).getMaster()) { + //ここまで比較して要素が一緒ならi番目は同じなので次へ + }else { + return false; + } + }else{ + return false; + } + }else{ + return false; + } + } + + //全ての要素が一緒ならtrueを返す + return true; + } + //----------------------------------------------------------------------------- //各Activityでのボタン処理 //チーム&マスター変更 @@ -160,21 +184,33 @@ public void onResponse(Call> call, Response> response) { if (response.isSuccessful()){ - membersLiveData.setValue(response.body()); - membersPreData = response.body(); - - /* - if(response.body().equals(roomJsonPreData)){ - //値が一緒なら書き換えない - }else{ - //値が異なるときのみライブデータを上書き + if (membersPreData != null) { + if (response.body().isEmpty()) { + //もしもレスポンスが空なら何もしない + } else { + if (response.body().size() != membersPreData.size()) { + //配列のサイズが異なるならその時点でライブデータ書き換え + membersLiveData.setValue(response.body()); + membersPreData = response.body(); + } else { + //配列のサイズが同じ時は比較開始 + if (compareMembers(response.body(), membersPreData)) { + //比較してtrueなら何もしない + } else { + //比較してfalseならライブデータ書き換え + membersLiveData.setValue(response.body()); + membersPreData = response.body(); + } + } + } + } else { membersLiveData.setValue(response.body()); - roomJsonPreData = response.body(); + membersPreData = response.body(); } - */ - } + } + @Override public void onFailure(Call> call, Throwable t) { }