diff --git a/src/main/java/com/ntlab/irisserver/entities/Game.java b/src/main/java/com/ntlab/irisserver/entities/Game.java new file mode 100644 index 0000000..d11ed8e --- /dev/null +++ b/src/main/java/com/ntlab/irisserver/entities/Game.java @@ -0,0 +1,7 @@ +package com.ntlab.irisserver.entities; + +import java.util.ArrayList; + +public class Game { + +} diff --git a/src/main/java/com/ntlab/irisserver/entities/Room.java b/src/main/java/com/ntlab/irisserver/entities/Room.java index 8ff70e3..2e891d7 100644 --- a/src/main/java/com/ntlab/irisserver/entities/Room.java +++ b/src/main/java/com/ntlab/irisserver/entities/Room.java @@ -2,10 +2,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; public class Room { @JsonProperty("rid") @@ -20,43 +17,22 @@ 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 members= new HashMap<>(); Map drawings = new HashMap<>(); + Settings settings = new Settings(); public Room(String rid, String owner) { this.rid=rid; ownerName=owner; - drawingTimer = false; - drawingTimerTimes = 0; - gameTimer = true; - gameTimerTimes = 30; - gameTimerFirstThinkingTimes = 10; + } + + public Settings getSettings() { + return settings; } public List getMembers() { @@ -131,6 +107,14 @@ } + public Game createGame() { + return null; + } + + public Game getGame() { + return null; + } + public Member getMember(String nick) { Member m = members.get(nick); return m; @@ -141,6 +125,11 @@ m.setNickname(nick); members.put(nick,m); } + + public void deleteMember(String nick) { + members.remove(nick); + } + public int getStateRest() { return 0; } @@ -154,46 +143,4 @@ 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; - } - - - } diff --git a/src/main/java/com/ntlab/irisserver/entities/Settings.java b/src/main/java/com/ntlab/irisserver/entities/Settings.java new file mode 100644 index 0000000..4eb2764 --- /dev/null +++ b/src/main/java/com/ntlab/irisserver/entities/Settings.java @@ -0,0 +1,74 @@ +package com.ntlab.irisserver.entities; + +import com.fasterxml.jackson.annotation.JsonProperty; + + +public class Settings { + @JsonProperty("drawingTimer") + private boolean drawingTimer; + + @JsonProperty("drawingTimerTimes") + private int drawingTimerTimes; + + @JsonProperty("gameTimer") + private boolean gameTimer; + + @JsonProperty("gameTimerTimes") + private int gameTimerTimes; + + @JsonProperty("gameTimerFirstThinkingTimes") + private int gameTimerFirstThinkingTimes; + + //-------------------------------------------------------------------- + //コンストラクタで初期値設定 + public Settings(){ + drawingTimer = false; + drawingTimerTimes = 0; + gameTimer = true; + gameTimerTimes = 30; + gameTimerFirstThinkingTimes = 10; + } + + //-------------------------------------------------------------------- + //setter & getter + public boolean isDrawingTimer() { + return drawingTimer; + } + + public void setDrawingTimer(boolean drawingTimer) { + this.drawingTimer = drawingTimer; + } + + public int getDrawingTimerTimes() { + return drawingTimerTimes; + } + + public void setDrawingTimerTimes(int drawingTimerTimes) { + this.drawingTimerTimes = drawingTimerTimes; + } + + public boolean isGameTimer() { + return gameTimer; + } + + public void setGameTimer(boolean gameTimer) { + this.gameTimer = gameTimer; + } + + public int getGameTimerTimes() { + return gameTimerTimes; + } + + public void setGameTimerTimes(int gameTimerTimes) { + this.gameTimerTimes = gameTimerTimes; + } + + public int getGameTimerFirstThinkingTimes() { + return gameTimerFirstThinkingTimes; + } + + public void setGameTimerFirstThinkingTimes(int gameTimerFirstThinkingTimes) { + this.gameTimerFirstThinkingTimes = gameTimerFirstThinkingTimes; + } + +} diff --git a/src/main/java/com/ntlab/irisserver/resources/MemberRest.java b/src/main/java/com/ntlab/irisserver/resources/MemberRest.java index a910a8c..730dd04 100644 --- a/src/main/java/com/ntlab/irisserver/resources/MemberRest.java +++ b/src/main/java/com/ntlab/irisserver/resources/MemberRest.java @@ -1,53 +1,54 @@ package com.ntlab.irisserver.resources; -import com.ntlab.irisserver.entities.Member; import com.ntlab.irisserver.entities.Room; import com.ntlab.irisserver.models.RoomManager; import org.springframework.stereotype.Component; import javax.ws.rs.*; -import java.util.List; +import javax.ws.rs.core.Response; @Component @Path("/rooms") public class MemberRest { - //所属チーム(n:無所属, r:赤, b:青) - String belongs = "n"; - //スパイマスターかどうか - boolean is_master = false; - int i = 0; - - /* - @GET - @Path("/{rid}/members/{nickname}") - public String getMember(@FormParam("rid") int rid, @FormParam("nickname") int nickname) { - return "Hello World"; - } - */ - // チーム変更・役職変更のメソッド @Path("/{rid}/members/{nickname}") @PUT - public String putMember(@PathParam("rid") String rid, @FormParam("nickname") String nickname) { + public String putMember(@PathParam("rid") String rid, @PathParam("nickname") String nickname, + @FormParam("belongs") String belongs, @FormParam("is-master") boolean isMaster) { RoomManager rm = RoomManager.getInstance(); Room room = rm.getRoom(rid); - List m = room.getMembers(); + + //部屋の確認 + if (room != null) { + //ニックネームの確認 + if (room.getMember(nickname) != null) { + room.changeTeamAndMaster(nickname, belongs, isMaster); + } else { + //ニックネームがなければエラー + var response = Response.status(Response.Status.NO_CONTENT); + response.status(404).entity("ニックネームが存在しません"); + throw new WebApplicationException(response.build()); + } + } else { + //部屋がなければエラー + var response = Response.status(Response.Status.NO_CONTENT); + response.status(404).entity("部屋が存在しません"); + throw new WebApplicationException(response.build()); + } + return "変更しました"; } // プレイヤーを退出させるメソッド @Path("/{rid}/members/{nickname}") @DELETE - public String deleteMember(@PathParam("rid") String rid, @FormParam("nickname") String nickname) { + public String deleteMember(@PathParam("rid") String rid, @PathParam("nickname") String nickname) { RoomManager rm = RoomManager.getInstance(); Room room = rm.getRoom(rid); - List m = room.getMembers(); - for( i = 0; i < 10; i++ ) { - Member name = m.get(i); - if ( nickname == name.getNickname() ) { - nickname = null; - } + if (room != null && room.getMember(nickname) != null) { + room.deleteMember(nickname); } + return "退出しました"; } } \ No newline at end of file diff --git a/src/main/java/com/ntlab/irisserver/resources/SettingsRest.java b/src/main/java/com/ntlab/irisserver/resources/SettingsRest.java index 344e615..1b82722 100644 --- a/src/main/java/com/ntlab/irisserver/resources/SettingsRest.java +++ b/src/main/java/com/ntlab/irisserver/resources/SettingsRest.java @@ -1,6 +1,7 @@ package com.ntlab.irisserver.resources; import com.ntlab.irisserver.entities.Room; +import com.ntlab.irisserver.entities.Settings; import com.ntlab.irisserver.models.RoomManager; import org.springframework.stereotype.Component; @@ -19,29 +20,28 @@ @GET @Produces(MediaType.APPLICATION_JSON) @Path("/{rid}/settings") - public Object GetSettings(@PathParam("rid") String rid) { + public Settings getSettings(@PathParam("rid") String rid) { Room r = rm.getRoom(rid); - //部屋が存在しないとき - var response = Response.status(Response.Status.NO_CONTENT); - if(r == null) { + //部屋がある時、JsonでSettingsの情報を返す + if(r != null) { + Settings settings = r.getSettings(); + return settings; + + } else { + //部屋がなければエラー + var response = Response.status(Response.Status.NO_CONTENT); response.status(404).entity("部屋が存在しません"); throw new WebApplicationException(response.build()); } - else return - "drawingTime:" + r.isDrawingTimer()+ ",\n" + - "drawingTimerTimes:" + r.getDrawingTimerTimes() + ",\n" + - "gameTimer:" + r.isGameTimer() +",\n" + - "gameTimerTimes:" + r.getGameTimerTimes() + ",\n" + - "gameTimerInitializeTimes:" + r.getGameTimerFirstThinkingTimes(); } //---------------------------------------------------------------------------------------------------- //PUT:設定値の変更 @PUT @Path("/{rid}/settings") - public void PutSettings(@PathParam("rid") String rid, + public void putSettings(@PathParam("rid") String rid, @FormParam("drawingTimer") boolean dTimer, @FormParam("drawingTimerTimes") int dTimerTimes, @FormParam("gameTimer") boolean gTimer, @@ -49,17 +49,22 @@ @FormParam("gameTimerFirstThinkingTimes") int gTimerFTTimes) { Room r = rm.getRoom(rid); + var response = Response.status(Response.Status.NO_CONTENT); //部屋がある時、値を変更 - if(r != null) { - r.setDrawingTimer(dTimer); - r.setDrawingTimerTimes(dTimerTimes); - r.setGameTimer(gTimer); - r.setGameTimerTimes(gTimerTimes); - r.setGameTimerFirstThinkingTimes(gTimerFTTimes); - }else{ + if (r != null) { + Settings settings = r.getSettings(); + + settings.setDrawingTimer(dTimer); + settings.setDrawingTimerTimes(dTimerTimes); + settings.setGameTimer(gTimer); + settings.setGameTimerTimes(gTimerTimes); + settings.setGameTimerFirstThinkingTimes(gTimerFTTimes); + + response.status(200).entity("値変更完了"); + throw new WebApplicationException(response.build()); + } else { //部屋がなければエラー - var response = Response.status(Response.Status.NO_CONTENT); response.status(404).entity("部屋が存在しません"); throw new WebApplicationException(response.build()); }