Newer
Older
IrisClientWebSocket / app / src / main / java / org / ntlab / irisclient / resources / GameRest.java
Kota on 8 Dec 2022 5 KB first commit
package org.ntlab.irisclient.resources;

import org.ntlab.irisclient.entities.GameJson;
import org.ntlab.irisclient.entities.TurnJson;

import java.util.List;

import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Path;

public interface GameRest {

    //-----------------------------------------------
    //Gameの開始に必要な情報を取得する。
    @GET("rooms/{rid}/game")
    Call<GameJson> getGame(
            @Path("rid") String rid
    );
    
    //-----------------------------------------------
    // 今回のゲームで使われる16個のお題をdno順のリストで取得するメソッド
    @GET("rooms/{rid}/game/keywords")
    Call<String[]> getkeywords(
            @Path("rid") String rid
    );

    //-----------------------------------------------
    // カード(絵)の並び順のMapを取得するメソッド
    @GET("rooms/{rid}/game/map")
    Call<List<Integer>> getMap(
            @Path("rid") String rid
    );

    //-----------------------------------------------
    // カードの色を取得するメソッド
    @GET("rooms/{rid}/game/color")
    Call<List<String>> getColorList(
            @Path("rid") String rid
    );

    //-----------------------------------------------
    // 現在開いているすべてのカードを取得するメソッド true=開いている false=開いてない 
    @GET("rooms/{rid}/game/opens")
    Call<List<Boolean>> getOpens(
            @Path("rid") String rid
    );

    //-----------------------------------------------
    // 現在のターンがどちらのチームであるかを取得するメソッド
    @GET("rooms/{rid}/game/turn")
    Call<ResponseBody> getTeam(
            @Path("rid") String rid
    );

    //-----------------------------------------------
    // 現在までのターン数を取得するメソッド
    @GET("rooms/{rid}/game/turns")
    Call<Integer> getTurnNumber(
            @Path("rid") String rid
    );

    //-----------------------------------------------
    // hint,openlist,maxを取得するメソッド
    @GET("rooms/{rid}/game/turns/{tno}")
    Call<TurnJson> getTurns(
            @Path("rid") String rid,
            @Path("tno") int tno
    );

    //-----------------------------------------------
    //{tno}//questionsのスラッシュがサーバー側で1個多かったため機能していなかった
    @GET("rooms/{rid}/game/turns/{tno}//questions")
    Call<List<Boolean>> getQ(
            @Path("rid") String rid,
            @Path("tno") Integer tno
    );

    //-----------------------------------------------
    @GET("rooms/{rid}/game/turns/{tno}/hint")
    Call<ResponseBody> getHint(
            @Path("rid") String rid,
            @Path("tno") Integer tno
    );

    //-----------------------------------------------
    @GET("rooms/{rid}/game/turns/{tno}/max")
    Call<Integer> getMax(
            @Path("rid") String rid,
            @Path("tno") Integer tno
    );

    //-----------------------------------------------
    @GET("rooms/{rid}/game/turns/{tno}/turnstate")
    Call<Integer> getTurnState(
            @Path("rid") String rid,
            @Path("tno") Integer tno
    );

    //-----------------------------------------------
    @GET("rooms/{rid}/game/turns/{tno}/Endstate")
    Call<Integer> getEndState(
            @Path("rid") String rid,
            @Path("tno") Integer tno
    );

    //-----------------------------------------------
    // tnoに指定したターンに開けたカードのcnoを取得するメソッド
    @GET("rooms/{rid}/game/turns/{tno}/openlist")
    Call<List<Integer>> getOpenList(
            @Path("rid") String rid,
            @Path("tno") Integer tno
    );

    //-----------------------------------------------
    // 現在のターンで開くカードのcnoを送信するメソッド
    @FormUrlEncoded
    @PUT("rooms/{rid}/game/turns/{tno}/openlist")
    Call<Void> setOpenList(
            @Path("rid") String rid,
            @Path("tno") int tno,
            @Field("cno") Integer cno
    );

    //-----------------------------------------------
    // マスターのヒントを送信するメソッド + 最大回答数も送信
    @FormUrlEncoded
    @PUT("rooms/{rid}/game/turns/{tno}/hint")
    Call<Void> putHint(
            @Path("rid") String rid,
            @Path("tno") int tno,
            @Field("hint") String hint,
            @Field("max") Integer max
    );

    //-----------------------------------------------
    //Turnstateを1に変更
    @PUT("/{rid}/game/turns/{tno}/turnstate")
    Call<Void> setTurnState(
            @Path("rid") String rid,
            @Path("tno") int tno
    );

    //-----------------------------------------------
    //Endstateを1に変更
    @PUT("/{rid}/game/turns/{tno}/endstate")
    Call<Void> setEndState(
            @Path("rid") String rid,
            @Path("tno") int tno
    );

    //-----------------------------------------------
    /*
    // マスターのヒント(数字)を送信するメソッド (putHintにまとめられて不要になりました。
    @FormUrlEncoded
    @PUT("rooms/{rid}/game/turns/{tno}/max")
    Call<Void> putMax(
            @Path("rid") String rid,
            @Path("tno") int tno,
            @Field("max") Integer max
    );
     */

    //-----------------------------------------------
    @FormUrlEncoded
    @POST("rooms/{rid}/game/turns/{tno}/questions")
    Call<Void> changeQ(
            @Path("rid") String rid,
            @Path("tno") int tno,
            @Field("cno") Integer cno
    );

    //-----------------------------------------------
    @POST("rooms/{rid}/game/turns")
    Call<Void> addTurns(
            @Path("rid") String rid
    );

}