package org.ntlab.SproutServerMicro.rooms;
import java.util.HashMap;
import javax.ws.rs.FormParam;
import net.arnx.jsonic.JSONHint;
public class Rooms {
public static final int playerNumber = 2; //プレイヤー数(ルーム上限人数)
private static Rooms theInstance = null;
public HashMap<Integer,Room> roomList = new HashMap<Integer,Room>();
public int roomId = 0; // ルームID
private Room waitingRoom = null; //待ち部屋
private Room waitingRoomSecond = null; //待ち部屋2
private RoomsConnection roomsConnection = null; //ルームコネクション
private Rooms(){
if (theInstance == null) {
theInstance = this;
}
}
public static Rooms getInstance() {
if (theInstance == null) {
theInstance = new Rooms();
}
return theInstance;
}
/**
* 部屋のメンバーの準備チェック
*/
public int readyCheck(int roomId,boolean frag){
int checkCount = 0;
int battleCount = 0;
Room room = roomList.get(roomId);
if(frag == true){
for(int i = 0;i<room.getMemberId();i++){
if(room.getMemberList().get(i) != null && room.getMemberList().get(i).isReady() == true){
checkCount++;
}
if(checkCount == playerNumber){
room.setStartFrag(true);
if(room.isStartFrag() == true && room.getMemberList().size() == playerNumber && this.waitingRoom == null){
this.waitingRoom = room;
}else if(room.isStartFrag() == true && room.getMemberList().size() == playerNumber && this.waitingRoom != null){
this.waitingRoomSecond = room;
battleCount = 1;
}
}
}
}else if(frag == false){
if(room == this.waitingRoom){
this.waitingRoom = this.waitingRoomSecond;
this.waitingRoomSecond = null;
room.setStartFrag(false);
}
if(room == this.waitingRoomSecond){
this.waitingRoomSecond = null;
room.setStartFrag(false);
}
}
return battleCount;
}
public Room makeRoomBattle(@FormParam("roomId") int roomId, @FormParam("userId") int userId, @FormParam("roomName") String roomName, @FormParam("key") String key) {
Member member = new Member(userId);
Room room = new Room(roomName,roomId,key,member);
roomList.put(roomId,room);
return room;
}
//ルームリスト
@JSONHint(ignore=true)
public HashMap<Integer,Room> getRoomList() {
return roomList;
}
// public void setRoomList(HashMap<Integer,Room> roomList) {
// Rooms.roomList = roomList;
// }
//待ち部屋1
//@JSONHint(ignore=true)
public Room getWaitingRoom() {
return waitingRoom;
}
public void setWaitingRoom(Room waitingRoom) {
this.waitingRoom = waitingRoom;
}
//待ち部屋2
//@JSONHint(ignore=true)
public Room getWaitingRoomSecond() {
return waitingRoomSecond;
}
public void setWaitingRoomSecond(Room waitingRoomSecond) {
this.waitingRoomSecond = waitingRoomSecond;
}
//人数
@JSONHint(ignore=true)
public int getPlayerNumber() {
return playerNumber;
}
//ルームID
public int getRoomId() {
return roomId;
}
public void setRoomId(int roomId) {
this.roomId = roomId;
}
@JSONHint(ignore = true)
public RoomsConnection getRoomsConnection() {
return roomsConnection;
}
}