Newer
Older
IrisServer / src / main / java / com / ntlab / irisserver / entities / Room.java
package com.ntlab.irisserver.entities;

import com.fasterxml.jackson.annotation.JsonProperty;

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("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(String rid, String owner) {
                this.rid=rid;
                ownerName=owner;
                drawingTimer = false;
                drawingTimerTimes = 0;
                gameTimer = true;
                gameTimerTimes = 30;
                gameTimerFirstThinkingTimes = 10;
        }

        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 Game createGame() {
                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 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;
        }



}