package com.ntlab.irisserver.entities; import java.util.HashMap; import java.util.List; import java.util.Map; public class DrawingController { private int stage = 0; private int maxstage; private Game game; private Map<Member, List<Integer>> assignments; private List<Member> members; private IStateListener stateListener; public DrawingController(IStateListener stateListener, List<Member> members, Game game) { this.members = members; this.stateListener = stateListener; 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を「お絵描き中」から「ゲーム中」に変更 if(stage == maxstage){ stateListener.changeState(); } } } //pathパラメーターを引数にするので、memberではなくてString //nicknameから書いてほしいdnoを返す public int getDno(String nickname) { List<Integer> dnolist = assignments.get(nickname); int dno = dnolist.get(stage); return dno; } }