/* * Computoser is a music-composition algorithm and a website to present the results * Copyright (C) 2012-2014 Bozhidar Bozhanov * * Computoser is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * Computoser is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with Computoser. If not, see <http://www.gnu.org/licenses/>. */ package com.music.web; import java.security.Principal; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.music.web.websocket.Game; @Controller @RequestMapping("/game") public class GameController { private Map<String, Game> games = new ConcurrentHashMap<>(); @RequestMapping({"/", ""}) public String gameIndex() { return "game"; } @MessageMapping("/initialize") //@RequestMapping("/initialize") public String initialize(Principal principal) { return null; //game.getId(); } private void addCurrentUser(Game game, Principal principal) { //game.getPlayers().add(principal.getName()); //game.getAnswers().put(principal.getName(), new ArrayList<Integer>()); } @MessageMapping("/join") @ResponseBody public void joinGame(String gameId, Principal principal) { Game game = games.get(gameId); if (game != null && !game.isStarted()) { addCurrentUser(game, principal); } else { // Game doesn't exist or is already started } } @RequestMapping("/nextPiece") public Long getNextPiece(String gameId) { return 0L; } @MessageMapping("/answer") public void answer(Long userId, String gameId, int bpm) { //games.get(gameId).getAnswers().get(userId).add(bpm); } }