Package web.servlets

Source Code of web.servlets.JoinGame

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package web.servlets;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.scotlandyard.engine.Game;
import org.scotlandyard.engine.GameException;
import org.scotlandyard.engine.Player;
import org.scotlandyard.engine.User;
import org.scotlandyard.engine.constants.PlayerRole;
import org.scotlandyard.engine.json.JsonFactory;
import org.scotlandyard.impl.engine.Detective;
import org.scotlandyard.impl.engine.GameEngine;
import org.scotlandyard.impl.engine.MrX;
import org.scotlandyard.impl.engine.PlayerPositionImpl;

/**
* TODO add a description for this class
*
*
* @author Hussain Al-Mutawa
* @version 2.0
* @since Sun Sep 23, 2011
*/
public class JoinGame extends AbstractServlet  implements IRequestProcessor{

  private /*transient*/ User user;
  private /*transient*/ Game game;
  private /*transient*/ PlayerRole playerRole;

  //TODO add documentation about the action performed by getting the output of this servlet
  @Override
   public Object getOutput(
         final HttpServletRequest request,
        final GameEngine engine) throws GameException {

    try{
      playerRole = PlayerRole.valueOf(request.getParameter("role"));
    }catch(Exception ex){
      throw new GameException("playing role is not recognized");
    }

    String gameId = request.getParameter("gameId");
    if(gameId==null){
      throw new GameException("gameId is null");
    }

    game = engine.getLobby().getGame(gameId);

    if(game==null){
      throw new GameException("game is not found");
    }

    user = (User)engine.getUsers().get(getSessionId());
    if(user==null){
      throw new GameException("user is null");
    }

    if(game.hasPlayer(user.getEmail()))
    {
      throw new GameException("you are already playing a game");
    }

    if(playerRole==PlayerRole.MrX && game.getMrX()!=null){
      throw new GameException("MrX player has been taken by someone else");
    }
    else if(playerRole==PlayerRole.Detective  && game.getDetectives().size()>=GameEngine.MIXIMUM_NUMBER_OF_DETECTIVES){
        throw new GameException("Sorry, this game is full. try to create another game and play with someone else");
    }

    final Player player;

    if(playerRole==PlayerRole.MrX){

      player = new MrX(user);
      game.setMrX(player);

    }else{ // if(playerRole==PlayerRole.Detective){

      player = new Detective(user);
      game.addDetective((Detective)player);

    }

    game.setPlayerPosition(player.getEmail(),  game.getEmptyPositionLabel());
    return ( JsonFactory.toJson( user.getName() ) );


  }

  @Override
  public void validateRequest(

             final HttpServletRequest request,
            final GameEngine engine) throws GameException {




  }
}
TOP

Related Classes of web.servlets.JoinGame

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.