diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4c139bc..e2bb983 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,7 +17,8 @@ android:usesCleartextTraffic="true"> + android:exported="false" + android:screenOrientation="landscape"/> call, Response response) { if (response.isSuccessful()) { //ridとnicknameをIrisへ - /*String rid = response.body().getRid(); + String rid = response.body().getRid(); ((Iris) getApplication()).setRid(rid); - ((Iris) getApplication()).setNickname(nickname);*/ + ((Iris) getApplication()).setNickname(nickname); //次の画面へ遷移 Intent intent = new Intent(CreateRoomActivity.this,OwnerRoomActivity.class); + intent.putExtra("nickname", nickname); startActivity(intent); } } diff --git a/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java b/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java index c1cf82d..afde09f 100644 --- a/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java +++ b/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider; import android.content.Intent; +import android.graphics.Bitmap; import android.os.Bundle; import android.view.View; import android.widget.TextView; @@ -23,7 +24,7 @@ super.onCreate(savedInstanceState); setContentView(R.layout.activity_drawing); - // drawingCanvas = (DrawingCanvas) findViewById(R.id.canvas); + //drawingCanvas = (DrawingCanvas) findViewById(R.id.canvas); //Irisから必要な情報を取得 Iris iris = (Iris) this.getApplication(); @@ -46,7 +47,7 @@ @Override public void onChanged(Integer dno) { //String keyword = keywords.get(dno); - //textKeyword.setText(keyword); + textKeyword.setText(dno); } }); @@ -58,6 +59,7 @@ Intent intent = new Intent(DrawingActivity.this, GameMemberActivity.class); startActivity(intent); } + }); //タイマースタート呼び出し drawingStateViewModel.start(500); @@ -66,7 +68,8 @@ @Override public void onClick(View v){ if(v.getId() == R.id.okButtton) {//okButtonが押されたときの処理 - drawingStateViewModel.putDrawing(); + Bitmap bitmap = null; + drawingStateViewModel.putDrawing(bitmap); }else if(v.getId() == R.id.clearButton){//clearButtonが押されたときの処理 drawingCanvas.clearCanvas(); } diff --git a/app/src/main/java/org/ntlab/irisclient/DrawingCardFragment.java b/app/src/main/java/org/ntlab/irisclient/DrawingCardFragment.java index c949eec..6bded86 100644 --- a/app/src/main/java/org/ntlab/irisclient/DrawingCardFragment.java +++ b/app/src/main/java/org/ntlab/irisclient/DrawingCardFragment.java @@ -3,28 +3,39 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.TextView; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; public class DrawingCardFragment extends Fragment { - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); + + // コンストラクタ + public static DrawingCardFragment newInstance(String str){ + // インスタンス生成 + DrawingCardFragment fragment = new DrawingCardFragment(); + return fragment; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.fragment_card_drawing, null); + return inflater.inflate(R.layout.fragment_card_drawing, container, false); } @Override - public void onActivityCreated (Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - } + public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); - @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + FragmentManager fragmentManager = getChildFragmentManager(); + FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); + fragmentTransaction.addToBackStack(null); + fragmentTransaction.replace(R.id.container, + DrawingCardFragment.newInstance("Fragment")); + fragmentTransaction.commit(); + } } diff --git a/app/src/main/java/org/ntlab/irisclient/GameMemberActivity.java b/app/src/main/java/org/ntlab/irisclient/GameMemberActivity.java index daab8c1..3b880c5 100644 --- a/app/src/main/java/org/ntlab/irisclient/GameMemberActivity.java +++ b/app/src/main/java/org/ntlab/irisclient/GameMemberActivity.java @@ -1,6 +1,8 @@ package org.ntlab.irisclient; import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; import android.os.Bundle; @@ -10,13 +12,17 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_member_game); - } - // 16個の画像表示 - // 絵の長押しでポップアップ - // ポップアップで「はい」「いいえ」のボタン - // 推測終了ボタンをマスターのみ非表示に - // ヒントの表示 - // + FragmentManager fragmentManager = getSupportFragmentManager(); + FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); + + // BackStackを設定 + fragmentTransaction.addToBackStack(null); + + // パラメータを設定 + fragmentTransaction.replace(R.id.container, + DrawingCardFragment.newInstance("Fragment")); + fragmentTransaction.commit(); + } } diff --git a/app/src/main/java/org/ntlab/irisclient/MemberRoomActivity.java b/app/src/main/java/org/ntlab/irisclient/MemberRoomActivity.java index 0cbb641..b9c3a37 100644 --- a/app/src/main/java/org/ntlab/irisclient/MemberRoomActivity.java +++ b/app/src/main/java/org/ntlab/irisclient/MemberRoomActivity.java @@ -26,8 +26,6 @@ import java.util.ArrayList; import java.util.List; -import static java.lang.Math.abs; - public class MemberRoomActivity extends AppCompatActivity { diff --git a/app/src/main/java/org/ntlab/irisclient/OwnerRoomActivity.java b/app/src/main/java/org/ntlab/irisclient/OwnerRoomActivity.java index 46d8a8b..4f24299 100644 --- a/app/src/main/java/org/ntlab/irisclient/OwnerRoomActivity.java +++ b/app/src/main/java/org/ntlab/irisclient/OwnerRoomActivity.java @@ -5,6 +5,7 @@ import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; +import android.widget.BaseAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; @@ -33,15 +34,36 @@ public class OwnerRoomActivity extends AppCompatActivity { //フィールド - String r = "部屋ID " + "123456"; + ArrayList members = new ArrayList<>(); + String r;// = "部屋ID " + "123456"; + String nickname; + String myName = "null"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_owner_room); - String nickname = ((Iris) getApplication()).getNickname(); - String rid = ((Iris) getApplication()).getRid(); + ((Iris) getApplication()).getNickname(); //nickname = "aaa"; + ((Iris) getApplication()).getRid(); //r ="276393b5-d835-4e4c-a35b-c00996c73a2b"; + + //--------------------------------------------------------------------------- + //メンバーリスト + ListView membersList = (ListView) findViewById(R.id.MembersList); + BaseAdapter adapter = new MemberListAdapter(this.getApplicationContext(), R.layout.member_list_layout, members); + membersList.setAdapter(adapter); + + //自分のなまえ + Intent intentMain = getIntent(); + myName = intentMain.getStringExtra("nickname"); + + Member mn = new Member(myName); + mn.setBelongs("g"); + mn.setMaster(false); + + members.add(mn.getNickname()); + + //RoomViewModelへのアクセス RoomViewModel roomViewModel = new ViewModelProvider(this).get(RoomViewModel.class); @@ -66,12 +88,6 @@ Button startButton = (Button) findViewById(R.id.start); ImageButton copyButton = (ImageButton) findViewById(R.id.copyButton); - //--------------------------------------------------------------------------- - //メンバーリスト - ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, members); - ListView listView = (ListView)findViewById(R.id.MembersList); - listView.setAdapter(adapter); - redMasterButton.setOnClickListener(new View.OnClickListener() { @Override @@ -108,11 +124,6 @@ TextView RoomIdText = findViewById(R.id.roomID); RoomIdText.setText(r); - members.add("マスターのBlueさん"); - listView.setBackgroundColor(Color.parseColor("#e83a48")); - ListView listView = (ListView)findViewById(R.id.MembersList); - listView.setAdapter(adapter); - } }); @@ -153,13 +164,11 @@ startButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - r = "部屋ID " + "start"; - TextView RoomIdText = findViewById(R.id.roomID); - RoomIdText.setText(r); + roomViewModel.startDrawing(r, nickname); - members.add("スタートさん"); - ListView listView = (ListView)findViewById(R.id.MembersList); - listView.setAdapter(adapter); + Intent intent = new Intent(OwnerRoomActivity.this,DrawingActivity.class); + startActivity(intent); + } }); @@ -192,46 +201,6 @@ TextView RoomIdText = findViewById(R.id.roomID); RoomIdText.setText(r); - //スタートボタンをクリックすると、(絵を描く?)次の画面に遷移 - Button nextButton = (Button)findViewById(R.id.start); - nextButton.setOnClickListener(new View.OnClickListener() { - public void onClick(View v) { -/* - //ニックネームが入力されていない場合エラーメッセージを表示する - if (text.getText().toString().isEmpty()) { - text.setError("ニックネームを入力されていません"); - - //ニックネームが入力されていれば次の画面へ - } else { - - */ - //サーバーとの通信のために呼び出す - /* Call call = roomRest.makeRooms(nickname); - call.enqueue(new Callback() { - //onResponseで成功 - public void onResponse(Call call, Response response) { - if (response.isSuccessful()) { - //ridとnicknameをIrisへ - String rid = response.body().getRid(); - ((Iris) getApplication()).setRid(rid); - ((Iris) getApplication()).setNickname(nickname); - - */ - //次の画面へ遷移 - Intent intent = new Intent(OwnerRoomActivity.this,DrawingActivity.class); - startActivity(intent); - } - - /* } - //onFailureで失敗 - public void onFailure(Call call, Throwable t) { - } - }); - - //} - } - */ - }); @@ -245,4 +214,4 @@ /*private void addMemberToMemberList(String m){ members.add(m); }*/ -} \ No newline at end of file + } \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/irisclient/entities/GameJson.java b/app/src/main/java/org/ntlab/irisclient/entities/GameJson.java new file mode 100644 index 0000000..17f9c3d --- /dev/null +++ b/app/src/main/java/org/ntlab/irisclient/entities/GameJson.java @@ -0,0 +1,5 @@ +package org.ntlab.irisclient.entities; + +public class GameJson { + +} 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 d96fc70..233b323 100644 --- a/app/src/main/java/org/ntlab/irisclient/entities/TurnJson.java +++ b/app/src/main/java/org/ntlab/irisclient/entities/TurnJson.java @@ -1,5 +1,7 @@ package org.ntlab.irisclient.entities; +import org.ntlab.irisclient.models.Cell; + import java.util.ArrayList; import java.util.List; @@ -8,7 +10,7 @@ private String hint; private String team; private int max; - //private List openlist = new ArrayList<>(); + private List openlist = new ArrayList<>(); //コンストラクタ public TurnJson() { @@ -29,7 +31,7 @@ return max; } - //public List getOpenListAll() {return openlist;} //リストそのものを返す。 + public List getOpenListAll() {return openlist;} //リストそのものを返す。 //--------------------------------------------------------- //セッター @@ -48,13 +50,13 @@ //--------------------------------------------------------- //openlist操作 -/* - public Cell getOpenListSolo(int num){return openlist.get(num);} - public void addOpenList(Cell card){openlist.add(card);} + public Integer getOpenListSolo(int num){return openlist.get(num);} + + public void addOpenList(Integer cno){openlist.add(cno);} public void delieteOpenList(int num){openlist.remove(num);} public int sizeOpenList(){return openlist.size();} -*/ + } diff --git a/app/src/main/java/org/ntlab/irisclient/models/Cell.java b/app/src/main/java/org/ntlab/irisclient/models/Cell.java new file mode 100644 index 0000000..418d6af --- /dev/null +++ b/app/src/main/java/org/ntlab/irisclient/models/Cell.java @@ -0,0 +1,34 @@ +package org.ntlab.irisclient.models; + + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class Cell { + + private boolean isOpen; + + public String color; + + public int dno; + + public int cno; + + //setter + public void setIsOpen(boolean isOpen) {this.isOpen = isOpen;} + + public void setColor(String color) {this.color = color;} + + public void setDno(int dno) {this.dno = dno;} + + public void setCno(int cno) {this.cno = cno;} + + //getter + public boolean getIsOpen() {return this.isOpen;} + + public String getColor() {return this.color;} + + public int getDno() {return this.dno;} + + public int getCno() {return this.cno;} + +} diff --git a/app/src/main/java/org/ntlab/irisclient/models/Game.java b/app/src/main/java/org/ntlab/irisclient/models/Game.java new file mode 100644 index 0000000..99c4f35 --- /dev/null +++ b/app/src/main/java/org/ntlab/irisclient/models/Game.java @@ -0,0 +1,16 @@ +package org.ntlab.irisclient.models; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class Game { + + private Map drawingList = new HashMap<>();// + private Map keywordList = new HashMap<>();// + private Map cellList = new HashMap<>();// + private List map = new ArrayList<>();//cno順にdnoを管理 + private List color = new ArrayList<>();//cno順にr,g,b,dを管理 + +} diff --git a/app/src/main/java/org/ntlab/irisclient/models/GameState.java b/app/src/main/java/org/ntlab/irisclient/models/GameState.java deleted file mode 100644 index 41dc5ea..0000000 --- a/app/src/main/java/org/ntlab/irisclient/models/GameState.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.ntlab.irisclient.models; - -import java.util.HashMap; -import java.util.Map; - -public class GameState { - - private Map drawingList = new HashMap<>(); - private Map keywordList = new HashMap<>(); - -} 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/DrawingStateViewModel.java b/app/src/main/java/org/ntlab/irisclient/viewmodels/DrawingStateViewModel.java index 64d51ea..fede34e 100644 --- a/app/src/main/java/org/ntlab/irisclient/viewmodels/DrawingStateViewModel.java +++ b/app/src/main/java/org/ntlab/irisclient/viewmodels/DrawingStateViewModel.java @@ -25,9 +25,12 @@ final private MutableLiveData stateMutableLiveData=new MutableLiveData<>(); final private MutableLiveData dnoMutableLiveData=new MutableLiveData<>(); + final private MutableLiveData drawingMutableLiveData = new MutableLiveData<>(); + final private Retrofit retrofit; private Integer drawingStatePreData; private Integer dnoPreData; + private String drawingPreData; private String rid; private String nickName; @@ -70,6 +73,7 @@ } }); } + public void updateDno(String rid, String nickname) { final DrawingRest drawingRest = retrofit.create(DrawingRest.class); @@ -97,7 +101,7 @@ } public List getKeywords(String rid){ - return null; + return null; } public LiveData getDno(){ return this.dnoMutableLiveData; @@ -118,13 +122,29 @@ updateState(rid); updateDno(rid, nickName); } - public String putDrawing(/*Bitmap image*/){ -// ByteArrayOutputStream stream = new ByteArrayOutputStream(); -// image.compress(Bitmap.CompressFormat.PNG, 100, stream); -// byte[] byteArray = stream.toByteArray(); - String string = "sample"; - Base64.Encoder encoder = Base64.getEncoder(); - String encoded = encoder.encodeToString(string.getBytes()); - return encoded; + + public void putDrawing(Bitmap image) { + //ByteArrayOutputStream stream = new ByteArrayOutputStream(); + //image.compress(Bitmap.CompressFormat.PNG, 100, stream); + //byte[] byteArray = stream.toByteArray(); + //String string = "sample"; + //Base64.Encoder encoder = Base64.getEncoder(); + //String encoded = encoder.encodeToString(string.getBytes()); + //System.out.println(encoded); + + final DrawingRest drawingRest = retrofit.create(DrawingRest.class); + int dno = dnoMutableLiveData.getValue(); + Call call = drawingRest.putDrawing(rid, dno, "iVBORw0KGgoAAAANSUhEUgAAAMgAAABkCAMAAAD0WI85AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3VpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDM1MiwgMjAyMC8wMS8zMC0xNTo1MDozOCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpiODViMDYzZC0yY2ZiLTRlMDUtYTA3YS04NTEzNDlkMDY5OTMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkVDQTI3N0E3OTc4MTFFQUEyRkFCRDY5Q0FERDFGNzYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkVDQTI3Nzk3OTc4MTFFQUEyRkFCRDY5Q0FERDFGNzYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjEgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NDQyNWVjOC04NzBjLTQzZTMtYmQ2MS1hMzI2MjJiNzlhNzgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Yjg1YjA2M2QtMmNmYi00ZTA1LWEwN2EtODUxMzQ5ZDA2OTkzIi8+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" ); + + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()){ + } + } + @Override + public void onFailure(Call call, Throwable t) { + } + }); } } 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); - } } diff --git a/app/src/main/res/layout/activity_member_game.xml b/app/src/main/res/layout/activity_member_game.xml index 5bfe024..49cc2f8 100644 --- a/app/src/main/res/layout/activity_member_game.xml +++ b/app/src/main/res/layout/activity_member_game.xml @@ -15,40 +15,6 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/timeTextView" /> -