diff --git a/app/src/main/java/org/ntlab/irisclient/GameMasterActivity.java b/app/src/main/java/org/ntlab/irisclient/GameMasterActivity.java index e0b32ce..74d7a42 100644 --- a/app/src/main/java/org/ntlab/irisclient/GameMasterActivity.java +++ b/app/src/main/java/org/ntlab/irisclient/GameMasterActivity.java @@ -58,8 +58,6 @@ gameViewModel= new ViewModelProvider(this).get(GameViewModel.class); gameViewModel.setRid(rid); - //ここでカードとかメンバーを表示する - //ボタンの情報を入力 buttonProcesses(); @@ -73,6 +71,10 @@ //タイマースタート呼び出し gameViewModel.start(500,iris); + + + + //hint,openList,max,turnstate,の更新を反映。(gamestate・ゲームの勝敗結果はカードフラグメントが作る) gameViewModel.getTurnLiveData().observe(this, new Observer() { @Override public void onChanged(TurnJson turnJson) { @@ -83,21 +85,28 @@ //時間があれば何をしてほしいのかのアナウンスを入れる //時間があれば背景の色を変える + //ヒントが変更されているか、ターンが切り替わったときに + + //UpdateHint(); + } }); } - public void buttonProcesses(){ + private void buttonProcesses(){ Button SendHintButton = (Button) findViewById(R.id.SendHint); SendHintButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { + if(!IsActive){return;}//アクティブのときだけボタンを押せる + EditText Hint = findViewById(R.id.GameHint); EditText HintMax = findViewById(R.id.GameHintMax); + //テキストを適した変数に変更 String hint = Hint.getText().toString(); Integer hintMax; @@ -107,25 +116,24 @@ hintMax = null; } - //ニックネームまたは部屋番号が入力されていない場合エラーメッセージを表示する if (hint.isEmpty()) { Hint.setError("ヒントが入力されていません"); } else if (hintMax == null) { HintMax.setError("数字が入力されていません"); } else { - //ビューモデルにhintとhintMaxを送信する。まとめて送信できるようになるかも知れないので、いったん放置 - gameViewModel.putHint(hint,hintMax); //マスターブランチに修正が入ったらコメントアウトを外す + gameViewModel.putHint(hint,hintMax); } } }); + } //操作可能かどうかを調べる関数。masterとかturnをオブザーブしておいて、変更があれば反映する。 - public boolean CheckActivity(TurnJson turnjson){ + private boolean CheckActivity(TurnJson turnjson){ - IsActive = false; + boolean isActive = false; //最新のゲームの状況を取得 String CurrentTeam = turnjson.getTeam(); @@ -133,10 +141,20 @@ //自分のチームのターンで、かつ「ヒント入力」時間の場合は行動可能 if(CurrentTeam.equals(myTeam) && turnState == 0){ - IsActive = true; + isActive = true; } - return IsActive; + return isActive; + } + + private void UpdateHint(String hint,Integer hintMax){ + + EditText Hint = findViewById(R.id.GameHint); + EditText HintMax = findViewById(R.id.GameHintMax); + + Hint.setText(hint); + HintMax.setText(hintMax); + } } \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/irisclient/GameMemberActivity.java b/app/src/main/java/org/ntlab/irisclient/GameMemberActivity.java index ca89165..395a428 100644 --- a/app/src/main/java/org/ntlab/irisclient/GameMemberActivity.java +++ b/app/src/main/java/org/ntlab/irisclient/GameMemberActivity.java @@ -3,11 +3,29 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; +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 GameMemberActivity extends AppCompatActivity { + private GameViewModel gameViewModel; + + //操作可能かどうかを記録。これがfalseの時は何のボタンを押すこともできない。 + //時間があればオフラインの動作はできるようにしたい。 + private boolean IsActive = false; + private String myTeam; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -15,15 +33,92 @@ // Fragmentを作成します DrawingCardFragment fragment = new DrawingCardFragment(); + GamePlayerListFragment RedPlayerList = new GamePlayerListFragment("r"); + GamePlayerListFragment BluePlayerList = new GamePlayerListFragment("b"); // Fragmentの追加や削除といった変更を行う際は、Transactionを利用します FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); // 新しく追加を行うのでaddを使用します // 他にも、よく使う操作で、replace removeといったメソッドがあります // メソッドの1つ目の引数は対象のViewGroupのID、2つ目の引数は追加するfragment transaction.add(R.id.container, fragment); + transaction.add(R.id.RedPlayerListContainer, RedPlayerList); + transaction.add(R.id.BluePlayerListContainer,BluePlayerList); + // 最後にcommitを使用することで変更を反映します transaction.commit(); + //Irisから必要な情報を取得 + Iris iris = (Iris) this.getApplication(); + String rid = iris.getRid(); + String nickName = iris.getNickname(); + myTeam = iris.getTeam(); + + //viewModelに必用な情報をセット + gameViewModel= new ViewModelProvider(this).get(GameViewModel.class); + gameViewModel.setRid(rid); + + //ボタンの情報を入力 + buttonProcesses(); + + //自分が赤チームマスターの場合はヒントが入力可能 + if(myTeam == null) { + System.out.println(("myteamがnullです")); + }else if(myTeam.equals("r")){ + IsActive = true; + } + + //タイマースタート呼び出し + gameViewModel.start(500,iris); + + //hint,openList,max,turnstate,の更新を反映。(gamestate・ゲームの勝敗結果はカードフラグメントが作る) + gameViewModel.getTurnLiveData().observe(this, new Observer() { + @Override + public void onChanged(TurnJson turnJson) { + + //turnJsonから情報を貰ってきて、操作できるのかどうかとかを判断する。 + IsActive = CheckActivity(turnJson); + + //時間があれば何をしてほしいのかのアナウンスを入れる + //時間があれば背景の色を変える + + } + }); + + + } + + public void buttonProcesses() { + + Button FinishGuessButton = (Button) findViewById(R.id.finishGuessButton); + + //推測終了を押した時に、ターン終了を通知 + FinishGuessButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + + if (!IsActive) {return;}//アクティブのときだけボタンを押せる} + + //TODO:次のターンに行くようにする + + } + }); + } + + //操作可能かどうかを調べる関数。masterとかturnをオブザーブしておいて、変更があれば反映する。 + public boolean CheckActivity(TurnJson turnjson){ + + boolean isActive = false; + + //最新のゲームの状況を取得 + String CurrentTeam = turnjson.getTeam(); + int turnState = turnjson.getTurnstate(); + + //自分のチームのターンで、かつ「カード選択」時間の場合は行動可能 + if(CurrentTeam.equals(myTeam) && turnState == 1){ + isActive = true; + } + + return isActive; } } diff --git a/app/src/main/java/org/ntlab/irisclient/GamePlayerListFragment.java b/app/src/main/java/org/ntlab/irisclient/GamePlayerListFragment.java index ff520a8..3ceea5a 100644 --- a/app/src/main/java/org/ntlab/irisclient/GamePlayerListFragment.java +++ b/app/src/main/java/org/ntlab/irisclient/GamePlayerListFragment.java @@ -32,7 +32,6 @@ super.onCreateView(inflater, container, savedInstanceState); View view = inflater.inflate(R.layout.fragment_game_player_list, container, false); - Checkteam(view); //irisからプレイヤーの一覧を取得 Iris iris = (Iris)this.getActivity().getApplication(); @@ -67,15 +66,4 @@ return view; } - //赤チームのプレイヤー全員を表示 - //青チームのプレイヤー全員を表示 - private String Checkteam(View view){ - if(myTeam.equals("r")){ - - return "赤チーム"; - }else{ - - return "青チーム"; - } - } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_game_master.xml b/app/src/main/res/layout/activity_game_master.xml index aa827e8..fd440a5 100644 --- a/app/src/main/res/layout/activity_game_master.xml +++ b/app/src/main/res/layout/activity_game_master.xml @@ -110,7 +110,7 @@ android:layout_marginBottom="9dp" app:layout_constraintBottom_toTopOf="@+id/finishGuessButton" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.0" + app:layout_constraintHorizontal_bias="1.0" app:layout_constraintStart_toEndOf="@+id/container" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.0" /> diff --git a/app/src/main/res/layout/activity_member_game.xml b/app/src/main/res/layout/activity_member_game.xml index f533e49..92e343d 100644 --- a/app/src/main/res/layout/activity_member_game.xml +++ b/app/src/main/res/layout/activity_member_game.xml @@ -7,6 +7,35 @@ android:layout_height="match_parent" tools:context=".GameMemberActivity"> + + + +