package com.ntlab.irisserver.entities;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Room {
@JsonProperty("rid")
public String rid;
//String rid = null;
@JsonProperty("state")
public int state;
//int state;
@JsonProperty("ownerName")
public String ownerName;
//String ownerName = null;
@JsonProperty("drawingTimer")
public boolean drawingTimer;
//boolean drawingTimer;
@JsonProperty("drawingTimerTimes")
public int drawingTimerTimes;
//int drawingTimerTimes;
@JsonProperty("gameTimer")
public boolean gameTimer;
//boolean gameTimer;
@JsonProperty("gameTimerTimes")
public int gameTimerTimes;
//int gameTimerTimes;
@JsonProperty("gameTimerFirstThinkingTimes")
public int gameTimerFirstThinkingTimes;
//int gameTimerFirstThinkingTimes;
@JsonProperty("redMaster")
private Member redMaster;
@JsonProperty("blueMaster")
private Member blueMaster;
Map<String,Member> members= new HashMap<>();
Map<Integer, Drawing> drawings = new HashMap<>();
public Room() {
drawingTimer = false;
drawingTimerTimes = 0;
gameTimer = true;
gameTimerTimes = 30;
gameTimerFirstThinkingTimes = 10;
}
public Room(String rid, String owner) {
this.rid=rid;
ownerName=owner;
}
public List<Member> getMembers() {
List<Member> memberslist = new ArrayList<Member>(members.values()) ;
return memberslist;
}
public List<Drawing> getDrawings() {
List<Drawing> drawingslist = new ArrayList<Drawing>(drawings.values()) ;
return drawingslist;
}
//プレイヤーの情報を変更する
public void changeTeamAndMaster(String nick, String belongs, boolean isMaster) {
//変更対象の情報を取得
Member m = members.get(nick);
//変更先のチームに既に所属している場合は変更なし
if(!(m.getBelongs().equals(belongs))) {
//1チームの最大人数は8人
//変更先のチームの人数を数える
int memberscount = 0;
List<Member> membersList = new ArrayList<Member>(members.values()) ;
for(Member mem :membersList) {
if(mem.getBelongs().equals(belongs)) {
memberscount++;
}
}
//変更先のチームが満員であれば変更不可
if(memberscount >= 8) {
return;
}else{
m.setBelongs(belongs);
}
}
//マスターを変更
if(belongs.equals("r")) {
//赤チームのマスターをメンバーに変更
if(redMaster != null) {
redMaster.setMaster(false);
}
//変更対象を赤チームのマスターに変更
m.setMaster(true);
redMaster = m;
}
if(belongs.equals("b")) {
//青チームのマスターをメンバーに変更
if(blueMaster != null) {
blueMaster.setMaster(false);
}
//変更対象を赤チームのマスターに変更
m.setMaster(true);
blueMaster = m;
}
}
public Member getMember(String nick) {
Member m = members.get(nick);
return m;
}
public void addMember(String nick) {
Member m=new Member(nick);
m.setNickname(nick);
members.put(nick,m);
}
public int getStateRest() {
return 0;
}
public Drawing getDrawing(int dno) {
return drawings.get(dno);
}
public void putDrawing(int dno, Drawing d) {
drawings.put(dno, d);
}
public void setDrawingTimer(boolean drawingTimer) {
this.drawingTimer = drawingTimer;
}
public void setDrawingTimerTimes(int drawingTimerTimes) {
this.drawingTimerTimes = drawingTimerTimes;
}
public void setGameTimer(boolean gameTimer) {
this.gameTimer = gameTimer;
}
public void setGameTimerTimes(int gameTimerTimes) {
this.gameTimerTimes = gameTimerTimes;
}
public void setGameTimerFirstThinkingTimes(int gameTimerFirstThinkingTimes) {
this.gameTimerFirstThinkingTimes = gameTimerFirstThinkingTimes;
}
public boolean isDrawingTimer() {
return drawingTimer;
}
public int getDrawingTimerTimes() {
return drawingTimerTimes;
}
public boolean isGameTimer() {
return gameTimer;
}
public int getGameTimerTimes() {
return gameTimerTimes;
}
public int getGameTimerFirstThinkingTimes() {
return gameTimerFirstThinkingTimes;
}
}