diff --git a/.idea/misc.xml b/.idea/misc.xml
index a4db526..cf9962a 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -5,14 +5,6 @@
diff --git a/app/build.gradle b/app/build.gradle
index 750e517..9b6aef0 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -32,6 +32,7 @@
dependencies {
+ implementation 'androidx.compose.ui:ui-graphics:1.0.0-rc01'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
diff --git a/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java b/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java
index 1410ac5..ba196e6 100644
--- a/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java
+++ b/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java
@@ -19,13 +19,13 @@
private DrawingCanvas drawingCanvas;
private DrawingStateViewModel drawingStateViewModel;
+ private List keywordList;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_drawing);
- //drawingCanvas = (DrawingCanvas) findViewById(R.id.canvas);
-
//Irisから必要な情報を取得
Iris iris = (Iris) this.getApplication();
String rid = iris.getRid();
@@ -38,17 +38,27 @@
drawingStateViewModel.setNickName(nickName);
findViewById(R.id.okButtton).setOnClickListener(this);//お絵描き終了ボタン
+ findViewById(R.id.clearButton).setOnClickListener(this);//画面クリアボタン
+ findViewById(R.id.eraserButton).setOnClickListener(this);//消しゴムボタン
+
TextView textKeyword =(TextView)findViewById(R.id.textKeyword);//keywordのTextView
+ drawingCanvas = (DrawingCanvas) findViewById(R.id.drawingCanvas);
//getKeywords
- //List keywords = drawingStateViewModel.getKeywords(rid);
+
+ drawingStateViewModel.getKeywords().observe(this, new Observer>(){
+ @Override
+ public void onChanged(List keywords) {
+ keywordList = keywords;
+ }
+ });
//getDno
drawingStateViewModel.getDno().observe(this, new Observer() {
@Override
public void onChanged(Integer dno) {
- //String keyword = keywords.get(dno);
- textKeyword.setText(""+dno);
+ String keyword = keywordList.get(dno);
+ textKeyword.setText("Dno: " + dno + ", Keyword: " + keyword);
}
});
@@ -66,6 +76,9 @@
}
}
});
+
+ //getKeywordの呼び出し
+ drawingStateViewModel.init();
//タイマースタート呼び出し
drawingStateViewModel.start(500);
}
@@ -77,6 +90,8 @@
drawingStateViewModel.putDrawing(bitmap);
}else if(v.getId() == R.id.clearButton){//clearButtonが押されたときの処理
drawingCanvas.clearCanvas();
+ }else if(v.getId() == R.id.eraserButton){//eraserButtonが押されたときの処理
+ drawingCanvas.eraserPaint();
}
}
diff --git a/app/src/main/java/org/ntlab/irisclient/DrawingCanvas.java b/app/src/main/java/org/ntlab/irisclient/DrawingCanvas.java
index 9c11905..1c79e96 100644
--- a/app/src/main/java/org/ntlab/irisclient/DrawingCanvas.java
+++ b/app/src/main/java/org/ntlab/irisclient/DrawingCanvas.java
@@ -5,6 +5,8 @@
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
+import android.graphics.PorterDuff;
+import android.graphics.PorterDuffXfermode;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
@@ -23,7 +25,7 @@
path = new Path();//線を引いたり、図形を描いたり、要するにグラフィック
paint = new Paint();//筆の種類
- paint.setColor(Color.RED);//色の指定
+ paint.setColor(Color.BLACK);//色の指定
paint.setStyle(Paint.Style.STROKE);//線をひく
paint.setStrokeWidth(20);//幅
}
@@ -67,4 +69,12 @@
invalidate();
}
+ //消しゴム
+ public void eraserPaint(){
+ //paint = new Paint();
+// Paint paint = new Paint();
+// paint.setColor(Color.TRANSPARENT);
+// paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
+ }
+
}
diff --git a/app/src/main/java/org/ntlab/irisclient/Iris.java b/app/src/main/java/org/ntlab/irisclient/Iris.java
index d482cda..5b9567b 100644
--- a/app/src/main/java/org/ntlab/irisclient/Iris.java
+++ b/app/src/main/java/org/ntlab/irisclient/Iris.java
@@ -4,12 +4,17 @@
import org.ntlab.irisclient.entities.RoomJson;
import org.ntlab.irisclient.models.Member;
+import java.util.ArrayList;
+import java.util.List;
+
public class Iris extends Application {
private String rid;
private String nickname;
private String team;
private boolean bMaster;
+ private List memberList = new ArrayList<>();
+
//----------------------------------------------------------
// getter
public String getRid() {
@@ -24,6 +29,8 @@
public boolean isMaster() { return this.bMaster; }
+ public List getMemberList() { return this.memberList; }
+
//----------------------------------------------------------
// setter
public void setRid(String rid) {
@@ -38,4 +45,6 @@
public void setMaster(boolean master) { bMaster = master; }
+ public void setMemberList(List memberList) { this.memberList = memberList; }
+
}
diff --git a/app/src/main/java/org/ntlab/irisclient/entities/GameJson.java b/app/src/main/java/org/ntlab/irisclient/entities/GameJson.java
deleted file mode 100644
index 17f9c3d..0000000
--- a/app/src/main/java/org/ntlab/irisclient/entities/GameJson.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.ntlab.irisclient.entities;
-
-public class GameJson {
-
-}
diff --git a/app/src/main/java/org/ntlab/irisclient/viewmodels/DrawingStateViewModel.java b/app/src/main/java/org/ntlab/irisclient/viewmodels/DrawingStateViewModel.java
index fede34e..6903fc7 100644
--- a/app/src/main/java/org/ntlab/irisclient/viewmodels/DrawingStateViewModel.java
+++ b/app/src/main/java/org/ntlab/irisclient/viewmodels/DrawingStateViewModel.java
@@ -3,16 +3,14 @@
import android.graphics.Bitmap;
-import org.ntlab.irisclient.models.DrawingState;
+import org.ntlab.irisclient.models.Member;
import org.ntlab.irisclient.resources.DrawingRest;
import org.ntlab.irisclient.resources.RoomsRest;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
-import java.io.ByteArrayOutputStream;
-
-import java.util.Base64;
+import java.io.IOException;
import java.util.List;
import retrofit2.Retrofit;
@@ -26,13 +24,16 @@
final private MutableLiveData stateMutableLiveData=new MutableLiveData<>();
final private MutableLiveData dnoMutableLiveData=new MutableLiveData<>();
final private MutableLiveData drawingMutableLiveData = new MutableLiveData<>();
+ final private MutableLiveData> keywordsMutableLiveData = new MutableLiveData<>();
final private Retrofit retrofit;
private Integer drawingStatePreData;
- private Integer dnoPreData;
+ private Integer dnoPreData = null;
+
private String drawingPreData;
private String rid;
private String nickName;
+ private List keywords;
//フィールド
public DrawingStateViewModel() {
@@ -84,9 +85,13 @@
public void onResponse(Call call, Response response) {
if (response.isSuccessful()){
- if(response.body().equals(dnoPreData)){
+ if(dnoPreData == null){
+ dnoMutableLiveData.setValue(response.body());
+ dnoPreData = response.body();
+ } else if(response.body().equals(dnoPreData)){
+ System.out.println("test");
//値が一緒なら書き換えない
- }else{
+ } else {
//値が異なるときのみライブデータを上書き
dnoMutableLiveData.setValue(response.body());
dnoPreData = response.body();
@@ -100,8 +105,35 @@
});
}
- public List getKeywords(String rid){
- return null;
+
+
+ public void updateKeywords(String rid){
+ final DrawingRest drawingRest = retrofit.create(DrawingRest.class);
+ Call> keywordsCall = drawingRest.getKeywords(rid);
+
+ keywordsCall.enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> keywordsCall, Response> response) {
+ if (response.isSuccessful()){
+ keywordsMutableLiveData.setValue(response.body());
+ }
+ }
+
+ @Override
+ public void onFailure(Call> keywordsCall, Throwable t) {
+ }
+ });
+
+ }
+
+
+// public LiveData> getMembers(String rid){
+// RoomViewModel members = new RoomViewModel();
+// return members.getMembersLiveData();
+// }
+
+ public LiveData> getKeywords(){
+ return this.keywordsMutableLiveData;
}
public LiveData getDno(){
return this.dnoMutableLiveData;
@@ -113,10 +145,17 @@
public void setRid(String rid){
this.rid = rid;
}
-
+ public void setKeywords(List keywords){
+ this.keywords = keywords;
+ }
public void setNickName(String nickName){
this.nickName = nickName;
}
+
+ public void init(){
+ updateKeywords(rid);
+ }
+
@Override
public void update() {
updateState(rid);
@@ -133,7 +172,7 @@
//System.out.println(encoded);
final DrawingRest drawingRest = retrofit.create(DrawingRest.class);
- int dno = dnoMutableLiveData.getValue();
+ Integer dno = dnoMutableLiveData.getValue();
Call call = drawingRest.putDrawing(rid, dno, "iVBORw0KGgoAAAANSUhEUgAAAMgAAABkCAMAAAD0WI85AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3VpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDM1MiwgMjAyMC8wMS8zMC0xNTo1MDozOCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpiODViMDYzZC0yY2ZiLTRlMDUtYTA3YS04NTEzNDlkMDY5OTMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkVDQTI3N0E3OTc4MTFFQUEyRkFCRDY5Q0FERDFGNzYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkVDQTI3Nzk3OTc4MTFFQUEyRkFCRDY5Q0FERDFGNzYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjEgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NDQyNWVjOC04NzBjLTQzZTMtYmQ2MS1hMzI2MjJiNzlhNzgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Yjg1YjA2M2QtMmNmYi00ZTA1LWEwN2EtODUxMzQ5ZDA2OTkzIi8+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" );
call.enqueue(new Callback() {
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 9794cca..fc27d90 100644
--- a/app/src/main/java/org/ntlab/irisclient/viewmodels/GameViewModel.java
+++ b/app/src/main/java/org/ntlab/irisclient/viewmodels/GameViewModel.java
@@ -1,9 +1,13 @@
package org.ntlab.irisclient.viewmodels;
import org.ntlab.irisclient.entities.TurnJson;
+import org.ntlab.irisclient.models.Game;
import org.ntlab.irisclient.resources.GameRest;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
+
+import java.util.List;
+
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@@ -18,12 +22,14 @@
private int tno;
private String team;
private String hint;
- private int max;
+ private Integer max;
private Integer openlist;
final private MutableLiveData turnsMutableLiveData;
final private MutableLiveData turnMutableLiveData;
- //final private MutableLiveData GameState game;
+ final private MutableLiveData> colorMutableLiveData;
+ final private MutableLiveData> mapMutableLiveData;
+ final private Game game = new Game();
final private Retrofit retrofit;
//更新比較用フィールド
@@ -35,6 +41,8 @@
public GameViewModel() {
this.turnsMutableLiveData = new MutableLiveData<>();
this.turnMutableLiveData = new MutableLiveData<>();
+ this.colorMutableLiveData = new MutableLiveData<>();
+ this.mapMutableLiveData = new MutableLiveData<>();
this.retrofit = new Retrofit.Builder()
.baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/iris/")
.addConverterFactory(JacksonConverterFactory.create())
@@ -61,15 +69,25 @@
public LiveData getTurnLiveData() {
return this.turnMutableLiveData;
}
- public Integer getTurnNumber(){
- return tno;
+ public LiveData> getColorLiveData() {
+ return this.colorMutableLiveData;
}
-// public Integer getTurnNumber(String rid) {
+ public LiveData> getMapLiveData() {
+ return this.mapMutableLiveData;
+ }
+ public void getGame() {
+ return;
+ }
+// public Integer getTurnNumber(){
// return tno;
// }
//-----------------------------------------------------------------------------
// updates
+ public void init() {
+ updateColor(rid);
+ updateMap(rid);
+ }
@Override
public void update() {
updateTurns(rid);
@@ -138,7 +156,46 @@
});
}
+ //カードのカラー(r,b,g,d)の取得
+ public void updateColor(String rid) {
+ final GameRest gameRest = retrofit.create(GameRest.class);
+ Call> call = gameRest.getColor(rid);
+ call.enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ if (response.isSuccessful()){
+ colorMutableLiveData.setValue(response.body());
+ }
+ }
+ @Override
+ public void onFailure(Call> call, Throwable t) {
+ System.out.println("通信失敗:changeBelongsAndMaster");
+ System.out.println(t);
+ }
+ });
+ }
+
+ //カードの並び順の取得
+ public void updateMap(String rid) {
+ final GameRest gameRest = retrofit.create(GameRest.class);
+ Call> call = gameRest.getMap(rid);
+
+ call.enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ if (response.isSuccessful()) {
+ mapMutableLiveData.setValue(response.body());
+ }
+ }
+
+ @Override
+ public void onFailure(Call> call, Throwable t) {
+ System.out.println("通信失敗:changeBelongsAndMaster");
+ System.out.println(t);
+ }
+ });
+ }
}
diff --git a/app/src/main/java/org/ntlab/irisclient/viewmodels/RoomViewModel.java b/app/src/main/java/org/ntlab/irisclient/viewmodels/RoomViewModel.java
index 3cf79f5..5ca4db5 100644
--- a/app/src/main/java/org/ntlab/irisclient/viewmodels/RoomViewModel.java
+++ b/app/src/main/java/org/ntlab/irisclient/viewmodels/RoomViewModel.java
@@ -1,5 +1,6 @@
package org.ntlab.irisclient.viewmodels;
+import org.ntlab.irisclient.Iris;
import org.ntlab.irisclient.entities.RoomJson;
import org.ntlab.irisclient.models.Member;
import org.ntlab.irisclient.models.Settings;
@@ -7,9 +8,8 @@
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
-import androidx.lifecycle.ViewModel;
-import java.io.Console;
+import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -23,12 +23,14 @@
//フィールド
private String rid;
+ private Iris iris;
final private MutableLiveData> membersLiveData;
final private MutableLiveData settingsMutableLiveData;
final private MutableLiveData stateLiveData;
final private Retrofit retrofit;
//更新比較用フィールド
+ private List sortedMembersList;
private List membersPreData;
private Settings settingsPreData;
@@ -83,6 +85,67 @@
return true;
}
+ private List sortMembersList(List oldMembers) {
+ List sortedMembers = new ArrayList<>();
+ List> priorityInteger = new ArrayList<>(5);
+ List list0 = new ArrayList();
+ List list1 = new ArrayList();
+ List list2 = new ArrayList();
+ List list3 = new ArrayList();
+ List list4 = new ArrayList();
+
+ /*
+ 並び順優先順位
+ 0.赤チームスパイマスター
+ 1.赤チーム諜報員
+ 2.青チームスパイマスター
+ 3.青チーム諜報員
+ 4.無所属の人
+ */
+
+ for(int i = 0 ; i < oldMembers.size();i++){
+
+ //赤チームなら
+ if (oldMembers.get(i).getBelongs().equals("r")){
+ if(oldMembers.get(i).isMaster()){
+ //赤マスター優先度0
+ list0.add(i);
+ } else {
+ //赤諜報員優先度1
+ list1.add(i);
+ }
+
+ //青チームなら
+ } else if(oldMembers.get(i).getBelongs().equals("b")) {
+ if(oldMembers.get(i).isMaster()) {
+ //青マスター優先度2
+ list2.add(i);
+ } else {
+ //青諜報員優先度3
+ list3.add(i);
+ }
+
+ //その他のチーム(n)なら
+ } else {
+ list4.add(i);
+ }
+
+ }
+ priorityInteger.add(list0);
+ priorityInteger.add(list1);
+ priorityInteger.add(list2);
+ priorityInteger.add(list3);
+ priorityInteger.add(list4);
+
+ for(int i = 0; i < 5; i++) {
+ priorityInteger.get(i).forEach(num -> sortedMembers.add(oldMembers.get(num)));
+ }
+
+ //System.out.println(sortedMembers);
+ //sortedMembers.forEach(k -> System.out.println(k.getNickname() + " " + k.getBelongs() + " " + k.isMaster()));
+ return sortedMembers;
+ }
+
//-----------------------------------------------------------------------------
//各Activityでのボタン処理
//チーム&マスター変更
@@ -90,7 +153,7 @@
final RoomsRest roomsRest = retrofit.create(RoomsRest.class);
Call call = roomsRest.putMember(rid, nickname, belongs, isMaster);
- call.enqueue(new Callback() {
+ /*call.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
if (response.isSuccessful()){
@@ -102,35 +165,21 @@
System.out.println("通信失敗:changeBelongsAndMaster");
System.out.println(t);
}
- });
+ });*/
}
//メンバー削除
- /*public void deleteMember(String rid, String nickname) {
+ public void deleteMember(String rid, String nickname) {
final RoomsRest roomsRest = retrofit.create(RoomsRest.class);
- Call<>
-
- call.enqueue(new Callback() {
- @Override
- public void onResponse(Call call, Response response) {
- if (response.isSuccessful()){
- System.out.println("通信成功:changeBelongsAndMaster");
- }
- }
- @Override
- public void onFailure(Call call, Throwable t) {
- System.out.println("通信失敗:changeBelongsAndMaster");
- System.out.println(t);
- }
- });
- }*/
+ Call call = roomsRest.deleteMember(rid, nickname);
+ }
//スタートボタンの処理(OwnerActivityのみ)
public void startDrawing(String rid, String nickname) {
final RoomsRest roomsRest = retrofit.create(RoomsRest.class);
Call call = roomsRest.putState(rid,nickname,2);
- call.enqueue(new Callback() {
+ /*call.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
if (response.isSuccessful()){
@@ -142,7 +191,7 @@
System.out.println("通信失敗:startDrawing");
System.out.println(t);
}
- });
+ });*/
}
//設定情報の変更処理(OwnerActivityのみ)
@@ -150,7 +199,7 @@
final RoomsRest roomsRest = retrofit.create(RoomsRest.class);
Call call = roomsRest.putSettings(rid, dTimer, dTimerTimes, gTimer, gTimerTimes, gTimerFTTimes);
- call.enqueue(new Callback() {
+ /*call.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
if (response.isSuccessful()){
@@ -162,7 +211,7 @@
System.out.println("通信失敗:changeSettings");
System.out.println(t);
}
- });
+ });*/
}
//-----------------------------------------------------------------------------
// updates
@@ -189,23 +238,30 @@
//もしもレスポンスが空なら何もしない
} else {
if (response.body().size() != membersPreData.size()) {
- //配列のサイズが異なるならその時点でライブデータ書き換え
- membersLiveData.setValue(response.body());
- membersPreData = response.body();
+ //配列のサイズが異なるならその時点で並び替えてライブデータ書き換え
+ sortedMembersList = sortMembersList(response.body());
+ membersLiveData.setValue(sortedMembersList);
+ //iris.setMemberList(sortedMembersList);
+ membersPreData = sortedMembersList;
} else {
//配列のサイズが同じ時は比較開始
if (compareMembers(response.body(), membersPreData)) {
//比較してtrueなら何もしない
} else {
- //比較してfalseならライブデータ書き換え
- membersLiveData.setValue(response.body());
- membersPreData = response.body();
+ //比較してfalseなら並び替えてライブデータ書き換え
+ sortedMembersList = sortMembersList(response.body());
+ membersLiveData.setValue(sortedMembersList);
+ //iris.setMemberList(sortedMembersList);
+ membersPreData = sortedMembersList;
}
}
}
} else {
- membersLiveData.setValue(response.body());
- membersPreData = response.body();
+ //最初のアップデートは無条件でライブデータ書き換え
+ sortedMembersList = sortMembersList(response.body());
+ membersLiveData.setValue(sortedMembersList);
+ //iris.setMemberList(sortedMembersList);
+ membersPreData = sortedMembersList;
}
}
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..84e2276 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