diff --git a/.idea/misc.xml b/.idea/misc.xml
index a4db526..3b4f6d8 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -5,14 +5,6 @@
diff --git a/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java b/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java
index 1d31151..b2c9f43 100644
--- a/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java
+++ b/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java
@@ -24,13 +24,11 @@
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_drawing);
- //drawingCanvas = (DrawingCanvas) findViewById(R.id.canvas);
-
//Irisから必要な情報を取得
Iris iris = (Iris) this.getApplication();
String rid = iris.getRid();
String nickName = iris.getNickname();
- Boolean isMaster = iris.isMaster();
+ Boolean bMaster = iris.isMaster();
drawingStateViewModel= new ViewModelProvider(this).get(DrawingStateViewModel.class);
//viewModelに必用な情報をセット
@@ -38,7 +36,10 @@
drawingStateViewModel.setNickName(nickName);
findViewById(R.id.okButtton).setOnClickListener(this);//お絵描き終了ボタン
+ findViewById(R.id.clearButton).setOnClickListener(this);//画面クリアボタン
+
TextView textKeyword =(TextView)findViewById(R.id.textKeyword);//keywordのTextView
+ drawingCanvas = (DrawingCanvas) findViewById(R.id.drawingCanvas);
//getKeywords
//List keywords = drawingStateViewModel.getKeywords(rid);
@@ -57,8 +58,8 @@
@Override
public void onChanged(Integer state) {
Class nextActivity = GameMemberActivity.class;
- if(isMaster) nextActivity = GameMasterActivity.class;//自分がMasterならMaster用のGame画面へ遷移
-
+ if(bMaster) nextActivity = GameMasterActivity.class;//自分がMasterならMaster用のGame画面へ遷移
+
//stateが変わったらゲーム画面へ遷移
if(state == 3) {
Intent intent = new Intent(DrawingActivity.this, nextActivity);
diff --git a/app/src/main/java/org/ntlab/irisclient/DrawingCanvas.java b/app/src/main/java/org/ntlab/irisclient/DrawingCanvas.java
index 9c11905..484798d 100644
--- a/app/src/main/java/org/ntlab/irisclient/DrawingCanvas.java
+++ b/app/src/main/java/org/ntlab/irisclient/DrawingCanvas.java
@@ -23,7 +23,7 @@
path = new Path();//線を引いたり、図形を描いたり、要するにグラフィック
paint = new Paint();//筆の種類
- paint.setColor(Color.RED);//色の指定
+ paint.setColor(Color.BLACK);//色の指定
paint.setStyle(Paint.Style.STROKE);//線をひく
paint.setStrokeWidth(20);//幅
}
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
diff --git a/app/src/main/java/org/ntlab/irisclient/TestDrawingActivity.java b/app/src/main/java/org/ntlab/irisclient/TestDrawingActivity.java
index d5ce1d4..8cc4463 100644
--- a/app/src/main/java/org/ntlab/irisclient/TestDrawingActivity.java
+++ b/app/src/main/java/org/ntlab/irisclient/TestDrawingActivity.java
@@ -8,12 +8,29 @@
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
+import org.ntlab.irisclient.resources.GameRest;
+import org.ntlab.irisclient.resources.RoomsRest;
+
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+import retrofit2.Retrofit;
+import retrofit2.converter.jackson.JacksonConverterFactory;
+
public class TestDrawingActivity extends AppCompatActivity {
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test_activity_draw);
+ //サーバーとの通信を初期化
+ Retrofit retrofit = new Retrofit.Builder()
+ .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/iris/")
+ .addConverterFactory(JacksonConverterFactory.create())
+ .build();
+ final RoomsRest roomRest = retrofit.create(RoomsRest.class);
+
//上の表示を削除
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
@@ -24,6 +41,24 @@
Button ownerButton = findViewById(R.id.ownerdraw);
ownerButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
+ //(ownerのみ)drawtestを更新 : は動かない
+ /*
+ final RoomsRest roomsRest = retrofit.create(RoomsRest.class);
+ Call call = roomsRest.putTestRoom();
+ call.enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ if (response.isSuccessful()){
+ System.out.println("通信成功:createDrawTest");
+ }
+ }
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ System.out.println("通信失敗:createDrawTest");
+ System.out.println(t);
+ }
+ });
+ */
((Iris) getApplication()).setRid("drawtest");
((Iris) getApplication()).setNickname("owner");
Intent intent = new Intent(TestDrawingActivity.this,DrawingActivity.class);
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 10f2116..d1da638 100644
--- a/app/src/main/java/org/ntlab/irisclient/entities/TurnJson.java
+++ b/app/src/main/java/org/ntlab/irisclient/entities/TurnJson.java
@@ -6,15 +6,62 @@
import java.util.List;
public class TurnJson {
-
private String hint;
private String team;
private int max;
- private int turnstate;
+ private int turnstate; //turn内でスパイマスターと諜報員の操作の切り替えに使用(0:スパイマスター, 1:諜報員)
private List openlist = new ArrayList<>();
- //コンストラクタ
- public TurnJson() {
+ //---------------------------------------------------------
+ //ゲッター
+
+ public String getHint() {
+ return hint;
}
+ public String getTeam() {
+ return team;
+ }
+
+ public int getMax() {
+ return max;
+ }
+
+ public int getTurnstate() {return turnstate;}
+
+ public List getOpenListAll() {return openlist;} //リストそのものを返す。
+
+ //---------------------------------------------------------
+ //セッター
+
+ public void setHint(String hint) {
+ this.hint = hint;
+ }
+
+ public void setTeam(String team) {
+ this.team = team;
+ }
+
+ public void setMax(int max) {
+ this.max = max;
+ }
+
+ public void setTurnstate(int turnstate) {this.turnstate = turnstate;}
+
+ public void putHint(String rid, int tno){
+ this.hint = hint;
+ this.max = max;
+ }
+
+ //---------------------------------------------------------
+ //openlist操作
+
+ 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/resources/RoomsRest.java b/app/src/main/java/org/ntlab/irisclient/resources/RoomsRest.java
index 381c08f..18ee92e 100644
--- a/app/src/main/java/org/ntlab/irisclient/resources/RoomsRest.java
+++ b/app/src/main/java/org/ntlab/irisclient/resources/RoomsRest.java
@@ -113,4 +113,12 @@
@Field("nickname") String nickname,
@Field("state") Integer state
);
+
+ //-----------------------------------------------
+ //test部屋の更新(主にdrawtest)
+ @FormUrlEncoded
+ @PUT("rooms/test")
+ Call putTestRoom(
+ );
+
}
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 a28aed9..9794cca 100644
--- a/app/src/main/java/org/ntlab/irisclient/viewmodels/GameViewModel.java
+++ b/app/src/main/java/org/ntlab/irisclient/viewmodels/GameViewModel.java
@@ -47,7 +47,7 @@
this.rid = rid;
}
- public void putHint(String rid, int tno, String hint, int max) {
+ public void putHint(String hint, int max) {
this.hint = hint;
this.max = max;
}
@@ -61,6 +61,9 @@
public LiveData getTurnLiveData() {
return this.turnMutableLiveData;
}
+ public Integer getTurnNumber(){
+ return tno;
+ }
// public Integer getTurnNumber(String rid) {
// return tno;
// }
@@ -73,7 +76,7 @@
updateTurn(rid);
}
- //ターン数の取得(赤か青のターンの判別)
+ //r,bの取得(今どちらのチームかの判別)
public void updateTurns(String rid) {
final GameRest gameRest = retrofit.create(GameRest.class);
Call call = gameRest.getTeam(rid);
diff --git a/app/src/main/res/drawable/border.xml b/app/src/main/res/drawable/border.xml
new file mode 100644
index 0000000..f7ee6d5
--- /dev/null
+++ b/app/src/main/res/drawable/border.xml
@@ -0,0 +1,7 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_drawing.xml b/app/src/main/res/layout/activity_drawing.xml
index 55763c7..8850c50 100644
--- a/app/src/main/res/layout/activity_drawing.xml
+++ b/app/src/main/res/layout/activity_drawing.xml
@@ -6,6 +6,18 @@
android:layout_height="match_parent"
tools:context=".DrawingActivity">
+
+
+ app:layout_constraintVertical_bias="0.961" />
+ app:layout_constraintVertical_bias="1.0" />
+ app:layout_constraintVertical_bias="0.052" />
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_member_game.xml b/app/src/main/res/layout/activity_member_game.xml
index ae14e29..f533e49 100644
--- a/app/src/main/res/layout/activity_member_game.xml
+++ b/app/src/main/res/layout/activity_member_game.xml
@@ -50,9 +50,8 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
-