diff --git a/src/main/java/com/ntlab/irisserver/entities/RoomJson.java b/src/main/java/com/ntlab/irisserver/entities/RoomJson.java new file mode 100644 index 0000000..f971038 --- /dev/null +++ b/src/main/java/com/ntlab/irisserver/entities/RoomJson.java @@ -0,0 +1,39 @@ +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 RoomJson { + @JsonProperty("rid") + private String rid; + + @JsonProperty("state") + private int state; + + @JsonProperty("ownerName") + private String ownerName; + + @JsonProperty("members") + List members = new ArrayList<>(); + + //コンストラクター + public RoomJson(Room r){ + this.rid = r.rid; + this.ownerName = r.ownerName; + this.state = r.getState(); + this.members = r.getMembers(); + } + + //getter + public String getRid() {return this.rid;} + + public int getState() {return this.state;} + + public String getOwnerName() {return this.ownerName;} + + public List getMembers() {return this.members;} +} diff --git a/src/main/java/com/ntlab/irisserver/models/RoomManager.java b/src/main/java/com/ntlab/irisserver/models/RoomManager.java index 877a9a4..ad1c190 100644 --- a/src/main/java/com/ntlab/irisserver/models/RoomManager.java +++ b/src/main/java/com/ntlab/irisserver/models/RoomManager.java @@ -44,12 +44,21 @@ //--------------------------------テスト用-------------------------------------- public void createTestRoom() { + //テストルーム作成 + Room tr = new Room("roomtest", "test"); + rooms.put("roomtest", tr); + tr.addMember("test"); + //お絵描きテスト用 Room dr = new Room("drawtest", "draw"); rooms.put("drawtest", dr); + dr.addMember("draw"); + //ゲームテスト用 Room gr = new Room("gametest", "game"); rooms.put("gametest", gr); + gr.addMember("game"); + } diff --git a/src/main/java/com/ntlab/irisserver/resources/RoomsRest.java b/src/main/java/com/ntlab/irisserver/resources/RoomsRest.java index 29bfd01..0822ee8 100644 --- a/src/main/java/com/ntlab/irisserver/resources/RoomsRest.java +++ b/src/main/java/com/ntlab/irisserver/resources/RoomsRest.java @@ -1,4 +1,5 @@ package com.ntlab.irisserver.resources; +import com.ntlab.irisserver.entities.RoomJson; import org.springframework.stereotype.Component; import com.ntlab.irisserver.entities.Room; import com.ntlab.irisserver.models.RoomManager; @@ -17,20 +18,22 @@ @POST //部屋の作成,オーナーを設定 @Path("/") @Produces(MediaType.APPLICATION_JSON) - public Room makeRooms(@FormParam("nickname") String owner){ + public RoomJson makeRooms(@FormParam("nickname") String owner){ RoomManager rm = RoomManager.getInstance(); Room room = rm.createRoom(owner); room.addMember(owner); + RoomJson rj = new RoomJson(room); - return room; + return rj; } @GET//部屋の情報を表示 @Path("/{rid}") @Produces(MediaType.APPLICATION_JSON) - public Room getRoomMember(@PathParam("rid") String rid){ + public RoomJson getRoomMember(@PathParam("rid") String rid){ RoomManager rm = RoomManager.getInstance(); Room room = rm.getRoom(rid); + RoomJson rj = new RoomJson(room); if(room == null){ //部屋がなければエラー @@ -39,7 +42,7 @@ throw new WebApplicationException(response.build()); } - return room; + return rj; } @DELETE//部屋の削除 diff --git a/src/main/java/com/ntlab/irisserver/resources/TestRest.java b/src/main/java/com/ntlab/irisserver/resources/TestRest.java index 987c031..ff245ac 100644 --- a/src/main/java/com/ntlab/irisserver/resources/TestRest.java +++ b/src/main/java/com/ntlab/irisserver/resources/TestRest.java @@ -27,6 +27,29 @@ this.applicationContext = applicationContext; } + public void shafflem(Room room){ + List mem = room.getMembers(); + Collections.shuffle(mem); + for(int i=0; i < 8; i++){ + if(i >= mem.size())break; + Member info = mem.get(i); + if(i==0){ + info.setMaster(true); + room.changeTeamAndMaster(info.getNickname(), "r", true); + }else if(i==1){ + info.setMaster(true); + room.changeTeamAndMaster(info.getNickname(), "b", true); + }else{ + info.setMaster(false); + } + if(i % 2 == 0){ + info.setBelongs("r"); + }else{ + info.setBelongs("b"); + } + } + } + @PUT @Path("/test") public void putTestRoom(){ @@ -34,22 +57,22 @@ RoomManager rm = RoomManager.getInstance(); rm.createTestRoom(); + Room tr = rm.getRoom("roomtest"); Room dr = rm.getRoom("drawtest"); Room gr = rm.getRoom("gametest"); - dr.addMember("draw"); - gr.addMember("game"); //メンバー設定() int length = 0; char[] rch; rch = new char[3]; String rname; - while(length < 10){ - for(int i = 0; i<3; i++){ + while(length < 8){ + for(int i = 0; i<4; i++){ Random random = new Random(); rch[i] = (char)(random.nextInt(26) + 'a'); } rname = new String(rch); + tr.addMember(rname); dr.addMember(rname); gr.addMember(rname); List members = dr.getMembers(); @@ -57,36 +80,10 @@ } //チームシャッフル - List dm = dr.getMembers(); - List gm = gr.getMembers(); - Collections.shuffle(dm); - Collections.shuffle(gm); - for(int i=0; i < 10; i++){ - if(i >= dm.size())break; - Member infod = dm.get(i); - Member infog = gm.get(i); - if(i==0){ - infod.setMaster(true); - infog.setMaster(true); - dr.changeTeamAndMaster(infod.getNickname(), "r", true); - gr.changeTeamAndMaster(infog.getNickname(), "r", true); - }else if(i==1){ - infod.setMaster(true); - infog.setMaster(true); - dr.changeTeamAndMaster(infod.getNickname(), "b", true); - gr.changeTeamAndMaster(infog.getNickname(), "b", true); - }else{ - infod.setMaster(false); - infog.setMaster(false); - } - if(i % 2 == 0){ - infod.setBelongs("r"); - infog.setBelongs("r"); - }else{ - infod.setBelongs("b"); - infog.setBelongs("b"); - } - } + + shafflem(tr); + shafflem(dr); + shafflem(gr); //両部屋:gameインスタンス作成,stateの初期化 String path = null; diff --git a/src/main/java/com/ntlab/irisserver/resources/TurnsRest.java b/src/main/java/com/ntlab/irisserver/resources/TurnsRest.java index 9524bf1..088e7ad 100644 --- a/src/main/java/com/ntlab/irisserver/resources/TurnsRest.java +++ b/src/main/java/com/ntlab/irisserver/resources/TurnsRest.java @@ -23,9 +23,11 @@ @GET //現在のターンの取得 @Path("/{rid}/game/turns") - public int getTurnNumber(@PathParam("rid") String rid) { - - int tn = 0; + public Integer getTurnNumber(@PathParam("rid") String rid) { + RoomManager rm = RoomManager.getInstance(); + Room room = rm.getRoom(rid); + Game game = room.getGame(); + Integer tn = game.getNowTurn(); return tn; } @@ -99,9 +101,29 @@ //------------------------------------------------------------------------ // rooms/{rid}/game/turns/{tno}/questions: +// @GET //カードごとの疑っている人のリストを取得...は動かなくて糞 +// @Path("/{rid}/game/turns/{tno}/questions") +// @Produces(MediaType.APPLICATION_JSON) +// public List getqmember(@PathParam("rid") String rid, @PathParam("tno") int tno, @FormParam("cno") int cno){ +// +// RoomManager rm = RoomManager.getInstance(); +// Room room = rm.getRoom(rid); +// Game game = room.getGame(); +// Turn t = game.getTurn(tno); +// +// if (t == null) { +// //部屋がなければエラー +// var response = Response.status(Response.Status.NO_CONTENT); +// response.status(404).entity("部屋が存在しません"); +// throw new WebApplicationException(response.build()); +// } +// +// return t.getQuestions(cno); +// } + @POST //怪しいの切り替え @Path("/{rid}/game/turns/{tno}/questions") - public void putMax(@PathParam("rid") String rid, @PathParam("tno") int tno, @FormParam("cno") int cno, @FormParam("nickname") String nickname){ + public void changeq(@PathParam("rid") String rid, @PathParam("tno") int tno, @FormParam("cno") int cno, @FormParam("nickname") String nickname){ boolean on = true; @@ -144,13 +166,15 @@ @PUT //オープンリストの追加 @Path("/{rid}/game/turns/{tno}/openlist") - public void setOpenList(@PathParam("rid") String rid, @PathParam("tno") int tno, @FormParam("cno")int cno){ + public void setOpenList(@PathParam("rid") String rid, @PathParam("tno") Integer tno, @FormParam("cno")Integer cno){ RoomManager rm = RoomManager.getInstance(); Room room = rm.getRoom(rid); Game game = room.getGame(); Turn t = game.getTurn(tno); + Cell card = game.getCell(cno); + card.setIsOpen(true); } }