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 c29d8a2..0d5213b 100644 --- a/app/src/main/java/org/ntlab/irisclient/resources/GameRest.java +++ b/app/src/main/java/org/ntlab/irisclient/resources/GameRest.java @@ -1,6 +1,9 @@ package org.ntlab.irisclient.resources; +import com.squareup.moshi.Json; + import org.ntlab.irisclient.entities.RoomJson; +import org.ntlab.irisclient.entities.TurnJson; import java.util.List; @@ -9,10 +12,18 @@ import retrofit2.http.FormUrlEncoded; import retrofit2.http.GET; import retrofit2.http.POST; +import retrofit2.http.PUT; import retrofit2.http.Path; public interface GameRest { + //-------------------------------------- + // 今回のゲームで使われる16個のお題をdno順のリストで取得するメソッド + @GET("/{rid}/game/keywords") + Call getkeywords( + @Path("rid") String rid + ); + //----------------------------------------------- // カード(絵)の並び順のMapを取得するメソッド @GET("/{rid}/game/map") @@ -28,18 +39,75 @@ ); //----------------------------------------------- + // 現在のターンがどちらのチームであるかを取得するメソッド + @GET("/{rid}/game/turn") + Call getTeam( + @Path("rid") String rid + ); + + //----------------------------------------------- + // 現在までのターン数を取得するメソッド + @GET("/{rid}/game/turns") + Call getTurnNumber( + @Path("rid") String rid + ); + + //----------------------------------------------- + // hint,openlist,maxを取得するメソッド + @GET("/{rid}/game/turns/{tno}") + Call getTurns( + @Path("rid") String rid, + @Path("tno") Integer tno + ); + + /* + + //----------------------------------------------- + // tnoに指定したターンに開けたカードのcnoを取得するメソッド + @GET("/{rid}/game/turns/{tno}/openlist") + Call> getOpenList( + @Path("rid") String rid, + @Path("tno") Integer tno + ); + + */ + + //----------------------------------------------- + // 現在のターンで開くカードのcnoを送信するメソッド + @PUT("/{rid}/game/turns/{tno}/openlist") + Call setOpenList( + @Path("rid") String rid, + @Path("tno") Integer 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, + @Field("max") Integer max + ); + + + //----------------------------------------------- // 現在開いているすべてのカードを取得するメソッド @GET("/{rid}/game/opens") Call> getOpens( @Path("rid") String rid ); - //----------------------------------------------- - // 現在のターンがどちらのチームであるかを取得するメソッド - @GET("/{rid}/game/turn") - Call getTeam( - @Path("rid") String rid - ); + } 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 b771cc7..ac7e9df 100644 --- a/app/src/main/java/org/ntlab/irisclient/viewmodels/GameViewModel.java +++ b/app/src/main/java/org/ntlab/irisclient/viewmodels/GameViewModel.java @@ -4,6 +4,7 @@ import org.ntlab.irisclient.entities.TurnJson; import org.ntlab.irisclient.models.Member; import org.ntlab.irisclient.models.Settings; +import org.ntlab.irisclient.resources.GameRest; import org.ntlab.irisclient.resources.RoomsRest; import androidx.lifecycle.LiveData; @@ -25,26 +26,20 @@ //フィールド private String rid; - private Integer turns; + private Integer tno; + private String team; private String hint; private Integer max; private Integer openlist; - final private MutableLiveData turnsMutableLiveData; + + final private MutableLiveData turnsMutableLiveData; final private MutableLiveData turnMutableLiveData; + //final private MutableLiveData GameState game; final private Retrofit retrofit; - - - - - - - - - //更新比較用フィールド - private Settings settingsPreData; - private RoomJson roomJsonPreData; + private String turnsPreData; + private TurnJson turnPreData; //------------------------------------------------------------------ //コンストラクタ @@ -63,30 +58,91 @@ this.rid = rid; } + public void putHint(String hint) { + this.hint = hint; + } + + public void putTeam(String team) { + this.team = team; + } + + public void putMax(Integer max) { + this.max = max; + } + //-------------------------------------------------------------- // getter - public LiveData getTurnsLiveData() { + public LiveData getTurnsLiveData() { return this.turnsMutableLiveData; } public LiveData getTurnLiveData() { return this.turnMutableLiveData; } + public Integer getTurnNumber(Integer rid) { + return tno; + } + + //ターン数の取得(赤か青のターンの判別) + public void updateTurns() { + final GameRest gameRest = retrofit.create(GameRest.class); + Call call = gameRest.getTeam(team); + + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()){ + + if(response.body().equals(turnsPreData)){ + //値が一緒なら書き換えない + }else{ + //値が異なるときのみライブデータを上書き + turnsMutableLiveData.setValue(response.body()); + turnsPreData = response.body(); + } + } + } + + @Override + public void onFailure(Call call, Throwable t) { + } + }); + } + + //hint,openlist,maxの取得 + public void updateTurn() { + final GameRest gameRest = retrofit.create(GameRest.class); + Call call = gameRest.getTurns(rid, tno); + + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()){ + + if(response.body().equals(turnPreData)){ + //値が一緒なら書き換えない + }else{ + //値が異なるときのみライブデータを上書き + turnMutableLiveData.setValue(response.body()); + turnPreData = response.body(); + } + } + } + + @Override + public void onFailure(Call call, Throwable t) { + } + }); + } + + + //----------------------------------------------------------------------------- // updates @Override public void update() { - updateTurns(turns); - updateTurn(hint, max, openlist); + updateTurns(); + updateTurn(); } - //ターン数の取得(赤か青のターンの判別) - public void updateTurns(Integer turns) { - final RoomsRest roomsRest = retrofit.create(RoomsRest.class); - } - - //hint,openlist,maxの取得 - public void updateTurn(String hint, Integer max, Integer openlist) { - final RoomsRest roomsRest = retrofit.create(RoomsRest.class); - } }