package cactusServer.resources; import java.util.HashMap; import javax.ws.rs.DELETE; import javax.ws.rs.FormParam; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import org.ntlab.radishforandroidstudio.framework.model3D.Position3D; import org.ntlab.radishforandroidstudio.framework.model3D.Quaternion3D; import cactusServer.entities.CameraState; import cactusServer.entities.EmoteState; import cactusServer.entities.Player; import cactusServer.models.Instances; import cactusServer.utils.App; import net.arnx.jsonic.JSON; @Path("/instances/players") public class PlayersRest { @POST // @Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.TEXT_PLAIN) public String createPlayer(@FormParam("instanceID") String instanceID, @FormParam("characterID") String characterID/*, @FormParam("cameraState") CameraState cameraState, @FormParam("animationClassToStart") EmoteState.EmoteType animationClassToStart*/) { Instances instances = Instances.getInstance(); HashMap<String, Player> idMap = instances.createPlayer(instanceID, characterID, null, null); HashMap<String, Player> uriMap = new HashMap<>(); for (String id : idMap.keySet()) { String uri = (InstancesRest.INSTANCES_URI + "/" + "/players/") + id; uriMap.put(uri, idMap.get(id)); } return JSON.encode(uriMap); } @Path("/{playerId}") @GET // @Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.TEXT_PLAIN) public String getPlayer(@PathParam("playerId") String playerId) { return JSON.encode(Instances.getInstance().getPlayer(playerId)); } @GET // @Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.TEXT_PLAIN) public String getPlayers(@QueryParam("instanceId") String instanceId) { return JSON.encode(Instances.getInstance().getPlayers(instanceId)); } @Path("/{playerId}") @PUT // @Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.TEXT_PLAIN) public String updatePlayer(@PathParam("playerId") String playerId, @FormParam("characterID") String characterID, @FormParam("position") Position3D position, @FormParam("angle") Quaternion3D angle, @FormParam("cameraState") CameraState cameraState, @FormParam("animationClassToStart") EmoteState.EmoteType animationClassToStart) { Player player = Instances.getInstance().updatePlayer(playerId, characterID, position, angle, cameraState, animationClassToStart, System.nanoTime()); return JSON.encode(player); // return JSON.encode(Instances.getInstance().updatePlayer(playerId, characterID, position, angle, cameraState, // animationClassToStart)); } @Path("/{playerId}") @DELETE @Produces(MediaType.TEXT_PLAIN) public void deletePlayer(@PathParam("playerId") String playerId) { Instances.getInstance().destroyPlayer(playerId); } }