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;
}
}