diff --git a/app/src/main/java/org/ntlab/irisclient/GameMasterActivity.java b/app/src/main/java/org/ntlab/irisclient/GameMasterActivity.java index 93a222c..8dfea6f 100644 --- a/app/src/main/java/org/ntlab/irisclient/GameMasterActivity.java +++ b/app/src/main/java/org/ntlab/irisclient/GameMasterActivity.java @@ -10,6 +10,7 @@ import android.view.View; import android.widget.Button; import android.widget.EditText; +import android.widget.ImageButton; import org.ntlab.irisclient.entities.TurnJson; import org.ntlab.irisclient.viewmodels.GameViewModel; @@ -29,7 +30,7 @@ private int turnState = 0;//0:ヒント入力,1:カード選択 //ヒントの情報 - private String hint = "aaa"; + private String hint = "a"; private Integer hintMax = 0; @Override @@ -133,7 +134,11 @@ } }); - + //マスターなので推測終了ボタンを入力不可に設定 + // ImageButton を無効にする + Button FinishGuessButton = (Button) findViewById(R.id.finishGuessButton); + FinishGuessButton.setEnabled(false); + //FinishGuessButton.setColorFilter(0xaaCCCCCC); } @@ -186,11 +191,14 @@ } //非アクティブであればヒントの入力を禁止する + EditText Hint = findViewById(R.id.GameHint); + EditText HintMax = findViewById(R.id.GameHintMax); if(isActive == false){ - EditText Hint = findViewById(R.id.GameHint); - EditText HintMax = findViewById(R.id.GameHintMax); Hint.setFocusable(false); HintMax.setFocusable(false); + }else{ + Hint.setFocusable(true); + HintMax.setFocusable(true); } return isActive; diff --git a/app/src/main/java/org/ntlab/irisclient/GameMemberActivity.java b/app/src/main/java/org/ntlab/irisclient/GameMemberActivity.java index be3b1a3..e257e26 100644 --- a/app/src/main/java/org/ntlab/irisclient/GameMemberActivity.java +++ b/app/src/main/java/org/ntlab/irisclient/GameMemberActivity.java @@ -23,9 +23,17 @@ //操作可能かどうかを記録。これがfalseの時は何のボタンを押すこともできない。 //時間があればオフラインの動作はできるようにしたい。 - private boolean IsActive = false; + private boolean isActive = false; private String myTeam; + //赤チームの「ヒント入力」からスタート + private String currentTeam = "r"; + private int turnState = 0;//0:ヒント入力,1:カード選択 + + //ヒントの情報 + private String hint = "a"; + private Integer hintMax = 0; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -64,15 +72,70 @@ if(myTeam == null) { System.out.println(("myteamがnullです")); }else if(myTeam.equals("r")){ - IsActive = true; + isActive = true; } //タイマースタート呼び出し gameViewModel.start(500,iris); + //ヒントの変更を監視 + gameViewModel.getHintLiveData().observe(this, new Observer() { + @Override + public void onChanged(String new_Hint) { + hint = new_Hint; + } + }); + + gameViewModel.getMaxLiveData().observe(this, new Observer() { + @Override + public void onChanged(Integer new_HintMax) { + hintMax = new_HintMax; + } + }); + + //どちらのターンかを監視 + gameViewModel.getTurnsLiveData().observe(this, new Observer() { + @Override + public void onChanged(String new_currentTeam) { + + //チームの情報を更新 + currentTeam = new_currentTeam; + + //操作できるかを判断する。 + isActive = CheckActivity(); + } + }); + + //「ヒント入力」か「カード選択」かを監視 + gameViewModel.getTurnStateLiveData().observe(this, new Observer() { + @Override + public void onChanged(Integer new_turnState) { + + //チームの情報を更新 + turnState = new_turnState; + + //ヒントの情報を反映 + EditText Hint = findViewById(R.id.GameHint); + EditText HintMax = findViewById(R.id.GameHintMax); + if(new_turnState == 0){ + //「ヒント入力」になったときは古いヒントを消す + Hint.getEditableText().clear(); + HintMax.getEditableText().clear(); + }else{ + //「カード選択」のときは新しいヒントを表示する + Hint.setText(hint); + HintMax.setText(hintMax.toString()); + } + + //操作できるかを判断する。 + isActive = CheckActivity(); + } + }); + + //触れないボタンを設定 } public void buttonProcesses() { @@ -84,29 +147,33 @@ @Override public void onClick(View view) { - if (!IsActive) {return;}//アクティブのときだけボタンを押せる} + if (!isActive) {return;}//アクティブのときだけボタンを押せる} - //TODO:次のターンに行くようにする - + //次のターンに行くようにする + gameViewModel.sendTurnState(); } }); } - /* //操作可能かどうかを調べる関数。masterとかturnをオブザーブしておいて、変更があれば反映する。 - public boolean CheckActivity(TurnJson turnjson){ + //操作可能かどうかを調べる関数。masterとかturnをオブザーブしておいて、変更があれば反映する。 + private boolean CheckActivity(){ boolean isActive = false; - //最新のゲームの状況を取得 - String CurrentTeam = turnjson.getTeam(); - int turnState = turnjson.getTurnstate(); - - //自分のチームのターンで、かつ「カード選択」時間の場合は行動可能 - if(CurrentTeam.equals(myTeam) && turnState == 1){ + //自分のチームのターンで、かつ「ヒント入力」時間の場合は行動可能 + if(currentTeam.equals(myTeam) && turnState == 1){ isActive = true; } + //非アクティブであれば推測終了の入力を禁止する + Button FinishGuessButton = (Button) findViewById(R.id.finishGuessButton); + if(isActive == false){ + FinishGuessButton.setFocusable(false); + }else{ + FinishGuessButton.setFocusable(true); + } + return isActive; - }*/ + } } diff --git a/app/src/main/res/layout/activity_game_master.xml b/app/src/main/res/layout/activity_game_master.xml index 8db564d..127eaa2 100644 --- a/app/src/main/res/layout/activity_game_master.xml +++ b/app/src/main/res/layout/activity_game_master.xml @@ -12,6 +12,7 @@ android:layout_width="159dp" android:layout_height="38dp" android:text="推測終了" + android:focusable="false" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/timeTextView" /> diff --git a/app/src/main/res/layout/activity_member_game.xml b/app/src/main/res/layout/activity_member_game.xml index 7e201a3..374908c 100644 --- a/app/src/main/res/layout/activity_member_game.xml +++ b/app/src/main/res/layout/activity_member_game.xml @@ -78,6 +78,7 @@ android:hint="ヒントを入力" android:inputType="text" android:maxLength="10" + android:focusable="false" app:layout_constraintBottom_toTopOf="@+id/include" app:layout_constraintEnd_toStartOf="@+id/GameHintMax" app:layout_constraintHorizontal_bias="0.5" @@ -97,6 +98,7 @@ android:hint="数" android:inputType="number" android:maxLength="1" + android:focusable="false" app:layout_constraintBottom_toTopOf="@+id/include" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.5" @@ -112,6 +114,7 @@ android:layout_marginEnd="152dp" android:layout_marginBottom="23dp" android:text="決定" + android:focusable="false" app:layout_constraintBottom_toTopOf="@+id/include" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/GameHintMax"