diff --git a/app/src/main/java/org/ntlab/irisclient/DrawingCardFragment.java b/app/src/main/java/org/ntlab/irisclient/DrawingCardFragment.java index a5d716e..4eb0580 100644 --- a/app/src/main/java/org/ntlab/irisclient/DrawingCardFragment.java +++ b/app/src/main/java/org/ntlab/irisclient/DrawingCardFragment.java @@ -4,6 +4,7 @@ import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; +import android.content.Intent; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -45,17 +46,18 @@ private ImageView[] backColors; private Resources resources; private GameViewModel gameViewModel; + private Boolean isMaster; + private String myTeam; + private String nowTurn; + private String rid; // ロングタップで表示させるために必要。非同期で値が格納され、順番通りに保存されないからHashMapにしている private Map bmImages = new HashMap<>(); // 下はテストが動くようになったら削除する - private Map drawingList = new HashMap<>(); // - private List map = new ArrayList<>(); //cno順にdnoを管理(要するに絵の並び) - private List colorList = new ArrayList<>(); //cno順にr,g,b,dを管理:カードごとの色 - private Boolean isMaster = false; - // 自分のチームと現在進行中のチームを仮で設定中 - private String myTeam = "r"; - private String nowTurn = "r"; + private Map drawingList; // + private List map; //cno順にdnoを管理(要するに絵の並び) + private List colorList; //cno順にr,g,b,dを管理:カードごとの色 + // コンストラクタ public static DrawingCardFragment newInstance(String str){ @@ -70,7 +72,6 @@ super.onCreateView(inflater, container, savedInstanceState); gameViewModel = new ViewModelProvider(this).get(GameViewModel.class); - resources = getResources(); View view = inflater.inflate(R.layout.fragment_card_drawing, container, false); @@ -113,31 +114,50 @@ (ImageView) view.findViewById(R.id.backColour15) }; - // Openされた画像ををObserveして、Viewに反映 - gameViewModel.getOpenLiveData().observe ( - getViewLifecycleOwner(), - openListObserver -> { - System.out.println(openListObserver); - setOpen(openListObserver); - } - ); + System.out.println("asfsafddf"); + Iris iris = (Iris) this.getActivity().getApplication(); + myTeam = iris.getTeam(); + rid = iris.getRid(); + isMaster = iris.isMaster(); + System.out.println("kota: isMasterかどうか:" + isMaster); + System.out.println("kota: getrid:" + iris.getRid()); + System.out.println("kota: getgame:" + iris.getTeam()); + System.out.println("kota: getMemberList:" + iris.getMemberList()); + System.out.println("kota: getNickName:" + iris.getNickname()); + System.out.println("kota: getImageLiveData:" + gameViewModel.getImageLiveData().getValue()); gameViewModel.getImageLiveData().observe( getViewLifecycleOwner(), gameJsonObserver -> { - System.out.println("Hello"); - System.out.println(gameJsonObserver.getDrawingList()); + System.out.println("kota: getImageLiveDataが"); setupWithViewModel(); } ); + // Openされた画像ををObserveして、Viewに反映 + gameViewModel.getOpenLiveData().observe ( + getViewLifecycleOwner(), + openListObserver -> { + System.out.println("kota: オープンされた。オープンの配列:" + openListObserver); + setOpen(openListObserver); + } + ); + + gameViewModel.getTurnsLiveData().observe ( + getViewLifecycleOwner(), + turnsObserver -> { + System.out.println("kota: ターンが変更。今のターン:" + turnsObserver); + nowTurn = turnsObserver; + } + ); + return view; } public void onClick(View v) { for(int i=0; i< imageButtons.length; i++) { if(v.getId() == imageButtons[i].getId()) { - System.out.println( "タップされたボタンの配列番号:" + i); + System.out.println( "kota: タップされたボタンの配列番号:" + i); if(nowTurn != myTeam && isMaster == true) { return; } confirmAlertMake(i); } @@ -149,7 +169,7 @@ for(int i=0; i< imageButtons.length; i++) { if(v.getId() == imageButtons[i].getId()) { - System.out.println( "ロングタップされたボタンの配列番号:" + i); + System.out.println( "kota: ロングタップされたボタンの配列番号:" + i); // 自分のターンのとき、疑い機能のあるアラート表示 // 相手のターンのとき、画像だけ確認できるアラート表示 if(nowTurn == myTeam) { @@ -161,7 +181,7 @@ // めくられた画像を長押でも確認できるようにする if(v.getId() == backColors[i].getId()) { - System.out.println( "タップされたボタンの配列番号:" + i); + System.out.println( "kota: タップされたボタンの配列番号:" + i); lookImageAlertMake(i); } } @@ -170,8 +190,17 @@ } private void setupWithViewModel() { + System.out.println("kota: setupWithViewModel呼ばれた"); Iris iris = (Iris) this.getActivity().getApplication(); myTeam = iris.getTeam(); + rid = iris.getRid(); + isMaster = iris.isMaster(); + System.out.println("kota: isMasterですかどうか:" + isMaster); + System.out.println(iris.getRid()); + System.out.println(iris.getTeam()); + System.out.println(iris.getMemberList()); + System.out.println(iris.getNickname()); + drawingList = gameViewModel.getGame().getDrawingList(); map = gameViewModel.getGame().getMap(); colorList = gameViewModel.getGame().getColorList(); @@ -188,8 +217,6 @@ String urlSt = drawingList.get(map.get(i)).getDrawing(); setImage(i, urlSt, context); - System.out.println(colorList.get(i)); - String color = colorList.get(i); // 初回だけセットする外枠の、メンバーとマスターで表示分け // メンバー:全て肌色、マスター:赤・青・黒・グレーの表示 if(isMaster == true) { @@ -201,8 +228,6 @@ backColors[i].setBackground(resources.getDrawable(R.drawable.gray_image)); } else if (colorList.get(i).contains("d")) { backColors[i].setBackground(resources.getDrawable(R.drawable.black_image)); - } else { - System.out.println("本当は...:「" + colorList.get(i) + "」"); } } else { backColors[i].setBackground(resources.getDrawable(R.drawable.skin_image)); @@ -218,10 +243,17 @@ * 非同期で書かなければならない **/ private void setImage(int cno, String urlSt, Context context) { + + System.out.println("kota: setImage呼ばれた"); + // Singleの別スレッドを立ち上げる Executors.newSingleThreadExecutor().execute(() -> { try { + // TODO: Drawingのsetが使われるまで、無理やり指定。 URL url = new URL(urlSt); + System.out.println("kota: 表示させるURL文字列 " + url); + // String urlString = "http://nitta-lab-www.is.konan-u.ac.jp/irisdata/image/" + rid + "-" + cno + ".png"; + //URL url = new URL(urlString); HttpURLConnection urlCon = (HttpURLConnection) url.openConnection(); // タイムアウト設定 @@ -353,8 +385,8 @@ } setAnime(cno); } - //TODO: gameViewModel.set〇〇(cno)が完成したら - //gameViewModel.se + + gameViewModel.setOpenList(cno); } @@ -364,7 +396,6 @@ */ private void doubtAlertMake(int cno){ String strTitle = "疑いますか?"; - String strMessage = "(ここに画像を表示させる予定)"; AlertDialog.Builder builder; builder = new AlertDialog.Builder(getContext()); @@ -442,11 +473,6 @@ * 黒いカードがひかれて、ゲームが終わったときに呼ばれるアラート */ private void finishGameAlertMake(int cno, String myTeam, String nowTurn) { - try { - Thread.sleep(2000); //3000ミリ秒Sleepする - } catch (InterruptedException e) { - } - String strTitle; String strMessage; @@ -473,6 +499,8 @@ * 画面をトップに戻る動作でも書く? **/ private void setFinish() { + Intent intent = new Intent(this.getActivity().getApplication(), MainActivity.class); + startActivity(intent); } } \ No newline at end of file