package com.ntlab.irisserver.entities;
import com.fasterxml.jackson.annotation.JsonProperty;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.util.*;
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("members")
Map<String,Member> members= new HashMap<>();
@JsonProperty("settings")
Settings settings = new Settings();
private Member redMaster;
private Member blueMaster;
public Room(String rid, String owner) {
this.rid=rid;
ownerName=owner;
}
public Settings getSettings() {
return settings;
}
public List<Member> getMembers() {
List<Member> memberslist = new ArrayList<Member>(members.values()) ;
return memberslist;
}
//プレイヤーの情報を変更する
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 Game createGame(String owner) {
return null;
}
public Game getGame() {
return null;
}
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 void deleteMember(String nick) {
members.remove(nick);
}
public int getState() {
return state;
}
}