package org.reunionemu.jreunion.api; import java.util.Collection; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import org.reunionemu.jreunion.game.Player; import org.reunionemu.jreunion.server.LocalMap; import org.reunionemu.jreunion.server.Map; import org.reunionemu.jreunion.server.Server; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; @Controller @RequestMapping("/players") public class PlayerController { @Autowired Server server; //@Cacheable(value="default") @RequestMapping(value="{mapId}", method = RequestMethod.GET) public @ResponseBody List<Object> getCount(@PathVariable int mapId) { Map map = server.getWorld().getMap(mapId); if(map!=null && map instanceof LocalMap){ List<Object> playersReponse = new LinkedList<Object>(); List<Player> players = ((LocalMap) map).getPlayerList(); for(final Player player: players){ playersReponse.add(buildResponse(player)); } return playersReponse; } throw new RuntimeException(""); } @RequestMapping(method = RequestMethod.GET) public @ResponseBody List<Object> getCountTotal() { Collection<Map> maps = server.getWorld().getMaps(); Iterator<Map> iter = maps.iterator(); List<Object> playersReponse = new LinkedList<Object>(); while(iter.hasNext()){ Map map = iter.next(); if( map instanceof LocalMap){ List<Player> players = ((LocalMap) map).getPlayerList(); for(final Player player: players){ playersReponse.add(buildResponse(player)); } } } return playersReponse; } @SuppressWarnings("unused") public Object buildResponse(final Player player){ return new Object(){ public String name = player.getName(); public int level = player.getLevel(); public Object position = new Object(){ public int x = player.getPosition().getX(); public int y = player.getPosition().getY(); public int z = player.getPosition().getZ(); public int map = player.getPosition().getMap().getId(); }; }; } }