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 @@ - - - - - - - - @@ -21,15 +13,20 @@ + + - + + + + 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"> + +