diff --git a/app/src/main/java/org/ntlab/irisclient/GameMasterActivity.java b/app/src/main/java/org/ntlab/irisclient/GameMasterActivity.java index e3b1f00..9bbf1cc 100644 --- a/app/src/main/java/org/ntlab/irisclient/GameMasterActivity.java +++ b/app/src/main/java/org/ntlab/irisclient/GameMasterActivity.java @@ -1,35 +1,71 @@ package org.ntlab.irisclient; import androidx.appcompat.app.AppCompatActivity; +import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; +import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; +import org.ntlab.irisclient.entities.TurnJson; +import org.ntlab.irisclient.models.Game; +import org.ntlab.irisclient.viewmodels.DrawingStateViewModel; import org.ntlab.irisclient.viewmodels.GameViewModel; public class GameMasterActivity extends AppCompatActivity{ - //MemberRoomActivityが一番見やすいと思う + private GameViewModel gameViewModel; + //操作可能かどうかを記録。これがfalseの時は何のボタンを押すこともできない。 + //時間があればゲームに干渉できないだけで、オフラインの動作はできるようにしたい。 + private boolean IsActive = false; + + //Irisから必要な情報を取得 + Iris iris = (Iris) this.getApplication(); + private String myTeam = iris.getTeam(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_game_master); + //Irisから必要な情報を取得 + Iris iris = (Iris) this.getApplication(); + String rid = iris.getRid(); + String nickName = iris.getNickname(); + + //viewModelに必用な情報をセット + gameViewModel= new ViewModelProvider(this).get(GameViewModel.class); + gameViewModel.setRid(rid); + //ここでカードとかメンバーを表示する - - - //↓自分のチームかつ、ヒント入力画面の場合のみボタンプロセスを読み込む。それ以外の時は何もできないようにする。if文を描きたいけどまだ確認ができない + //ボタンの情報を入力 buttonProcesses(); + //自分が赤チームマスターの場合はヒントが入力可能 + if(myTeam.equals("r")){ + IsActive = true; + } + //タイマースタート呼び出し + gameViewModel.start(500); + gameViewModel.getTurnLiveData().observe(this, new Observer() { + @Override + public void onChanged(TurnJson turnJson) { + //turnJsonから情報を貰ってきて、操作できるのかどうかとかを判断する。 + IsActive = CheckActivity(turnJson); + + //時間があれば何をしてほしいのかのアナウンスを入れる + //時間があれば背景の色を変える + + } + }); } public void buttonProcesses(){ @@ -38,6 +74,7 @@ SendHintButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { + EditText Hint = findViewById(R.id.GameHint); EditText HintMax = findViewById(R.id.GameHintMax); @@ -52,24 +89,28 @@ HintMax.setError("数字が入力されていません"); } else { //ビューモデルにhintとhintMaxを送信する。まとめて送信できるようになるかも知れないので、いったん放置 - + gameViewModel.putHint(hint,hintMax); //マスターブランチに修正が入ったらコメントアウトを外す } + } }); } - //操作可能かどうかを調べる関数(いらない?) クリックされる度にチェックするのではなく、masterとかturnをオブザーブしておいて、変更があれば反映する。 - public boolean CheckActivity(){ + //操作可能かどうかを調べる関数。masterとかturnをオブザーブしておいて、変更があれば反映する。 + public boolean CheckActivity(TurnJson turnjson){ - boolean MasterActivity = false; + IsActive = false; - //今は自分のチームのターンかどうかを確認 - //今はヒント入力時間かどうかを確認 - //ライブデータを監視する - GameViewModel gameViewModel = new ViewModelProvider(this).get(GameViewModel.class); - //String team = gameViewModel.getTurnLiveData(). + //最新のゲームの状況を取得 + String CurrentTeam = turnjson.getTeam(); + int turnState = turnjson.getTurnstate(); - return MasterActivity; + //自分のチームのターンで、かつ「ヒント入力」時間の場合は行動可能 + if(CurrentTeam.equals(myTeam) && turnState == 0){ + IsActive = true; + } + + return IsActive; } } \ No newline at end of file