package space.events; import space.Server; import space.models.Ship; import space.models.User; import com.corundumstudio.socketio.AckRequest; import com.corundumstudio.socketio.SocketIOClient; import com.corundumstudio.socketio.listener.DataListener; public class Message implements DataListener<User.Message> { private Server _server = Server.instance(); @Override public void onData(SocketIOClient client, User.Message data, AckRequest ackSender) { User user = _server.userFromSocket(client); Ship ship = user.ship(); // Temporary chat commands if(data.msg.startsWith("/")) { final String[] msg = data.msg.split(" "); switch(msg[0]) { case "/warp": try { ship.x = Double.parseDouble(msg[1]); ship.y = Double.parseDouble(msg[2]); } catch(Exception ex) { user.sendMessage("Server", "Usage: warp x y"); } return; case "/stop": ship.stop(); return; case "/zoom": try { //TODO: This is a stupid way of doing it _server.broadcastEvent("zoom", new Object() { public double zoom = Double.parseDouble(msg[1]); }); } catch(Exception ex) { user.sendMessage("Server", "Usage: zoom n"); } return; case "/angle": try { ship.angle = Integer.parseInt(msg[1]); } catch(Exception ex) { user.sendMessage("Server", "Usage: angle n"); } return; } } _server.broadcastMessage(user.name, data.msg); } }