diff --git a/src/main/java/com/ntlab/irisserver/entities/DrawingController.java b/src/main/java/com/ntlab/irisserver/entities/DrawingController.java index 3186a56..084ef60 100644 --- a/src/main/java/com/ntlab/irisserver/entities/DrawingController.java +++ b/src/main/java/com/ntlab/irisserver/entities/DrawingController.java @@ -7,32 +7,49 @@ public class DrawingController { private int stage = 0; - private Room room; + private int maxstage; + + private Game game; private Map> assignments; - private Map drawingList; private List members; private IStateListener stateListener; - public DrawingController(IStateListener stateListener, List members, Map> assignments,Map drawingList) { - this.assignments = assignments; + public DrawingController(IStateListener stateListener, List members, Game game) { + this.members = members; this.stateListener = stateListener; - this.drawingList = drawingList; + this.game = game; + assignments = game.getAssignments(); + + //16枚の絵をそろえるために必要なステージ数を計算 16/人数のはすう 切り上げ + maxstage = (16 + members.size() - 1)/members.size(); } //全員の絵がアップロードされたときに、ステージ情報を更新する public void update(){ + boolean canUpdate = true; + //ニックネームからdnoが分かるので、全員文の絵が書き終わっているかを確認 for(Member mem :members) { + int dno = getDno(mem.getNickname()); + Drawing drawing = game.getDrawing(dno); + //まだ描けていない絵があればステージ変更しない + if(drawing.getIsDrawn() == false){ + canUpdate = false; + } } + if(canUpdate) { + stage += 1; - //roomのstateを変更することになる。 - stateListener.changeState(); - + //ゲームに必要な枚数がそろうと、roomのstateを「お絵描き中」から「ゲーム中」に変更 + if(stage == maxstage){ + stateListener.changeState(); + } + } } //pathパラメーターを引数にするので、memberではなくてString @@ -44,5 +61,3 @@ } } - -//gameのgetassigmentはコンストラクタで貰うから要らなかった