@Test
 public void getAllGames() throws Exception {
   GameService service = new GameService();
   List<Game> games = service.getAllGames();
   for (Game game : games) {
     System.out.println(game);
   }
 }
Esempio n. 2
0
  public boolean saveGame(String saveName, int index) {
    if (saveName == null || index < 1) {
      // User create new save slot

      TextInputDialog dialog = new TextInputDialog("Slot1");
      dialog.setTitle(SAVE_DIALOG);
      dialog.setHeaderText("Please enter save state name:");
      Optional<String> result = dialog.showAndWait();
      if (result.isPresent()) {
        // name was inputed
        if (saveGameDao.isSaveExists(result.get())) {
          // duplicated name
          Alert alert = new Alert(AlertType.ERROR);
          alert.setTitle("Save Error Dialog");
          alert.setHeaderText("Save with this name exists.");
          alert.showAndWait();
          return false;

        } else {
          // there are no saves with that name
          SaveGameDTO saveGame = game.getSaveGame(result.get());
          saveGameDao.insertSave(saveGame);

          Alert alert = new Alert(AlertType.INFORMATION);
          alert.setTitle(SAVE_DIALOG);
          alert.setHeaderText("You successfully save the game.");
          alert.showAndWait();
          return true;
        }
      } else {
        // no name typed

        Alert alert = new Alert(AlertType.ERROR);
        alert.setTitle("Save Error Dialog");
        alert.setHeaderText("No name typed.");
        alert.showAndWait();
        return false;
      }

    } else {
      // User override slot
      SaveGameDTO saveGame = game.getSaveGame(saveName);
      saveGameDao.updateSave(saveGame);

      Alert alert = new Alert(AlertType.INFORMATION);
      alert.setTitle(SAVE_DIALOG);
      alert.setHeaderText("You successfully save the game.");
      alert.showAndWait();
      return true;
    }
  }
Esempio n. 3
0
 public void setSaveButton(Button save) {
   if (!game.isGameRunning()) {
     save.setDisable(true);
   } else {
     save.setDisable(false);
   }
 }
Esempio n. 4
0
 public void loadGame(String string) {
   SaveGameDTO save = saveGameDao.getSave(string);
   mainWindowController.resetBoard((int) Math.sqrt(save.getBoardState().length()));
   game.loadGame(save);
   mainWindowController.update();
 }
Esempio n. 5
0
public class GameWorkerThread extends Thread {

  protected static final Logger logger = Logger.getLogger(GameWorkerThread.class.getName());

  //	static final StateMachine stateMachine =
  // GameStateMachineBuilder.getInstance().buildStateMachine();
  static final StateMachine stateMachine =
      NewGameStateMachineBuilder.getInstance().buildStateMachine();
  GameSessionManager gameManager = GameSessionManager.getInstance();
  GameService gameService = GameService.getInstance();
  PriorityBlockingQueue<GameEvent> queue = new PriorityBlockingQueue<GameEvent>(4096);
  AtomicInteger stopFlag = new AtomicInteger(0);

  public int threadHashKey;

  @Override
  public void run() {

    logger.info("Thread " + threadHashKey + " is running...");

    while (stopFlag.intValue() == 0) {
      GameEvent event = null;
      try {
        event = queue.take();
        GameSession session = gameManager.findGameSessionById(event.getTargetSession());
        if (session == null) {
          GameLog.warn(
              event.getTargetSession(),
              "process event " + event.getKey() + " but session id not found ");
          continue;
        }

        boolean skipEvent = preHandleEvent(event, session);
        if (skipEvent) {
          continue;
        }

        com.orange.common.statemachine.State nextState =
            stateMachine.nextState(session.getCurrentState(), event, session);
        if (nextState == null) {
          GameLog.warn(
              event.getTargetSession(),
              "process event " + event.getKey() + " but next state not found");
          continue;
        }

        session.setCurrentState(nextState);

        /*
        GameSession session = gameManager.findGameSessionById(event.getTargetSession());
        if (session == null){
        	// no session available for this event?

        	GameLog.warn(event.getTargetSession(), "process event but session id not found ");
        	HandlerUtils.sendErrorResponse(event, GameResultCode.ERROR_NO_SESSION_ID);
        	continue;
        }

        if (session.getCurrentState().validateEvent(event, session) != 0){
        	// donnot send back request here since validate event will make it
        	// argument, where to send the response???
        	continue;
        }

         com.orange.common.statemachine.State nextState =
        	 stateMachine.nextState(session.getCurrentState(), event, session);

         if (nextState == null){
        	 // incorrect message event?
        	 HandlerUtils.sendErrorResponse(event, GameResultCode.ERROR_NEXT_STATE_NOT_FOUND);
        	 continue;
         }

         session.setCurrentState(nextState);
         */

      } catch (Exception e) {
        logger.error("catch exception while handle event, exception = " + e.toString(), e);
        // rem by Benson for refactor
        //				if (event != null){
        //					HandlerUtils.sendErrorResponse(event, GameResultCode.ERROR_SYSTEM_EXCEPTION);
        //				}
      }
    }

    logger.info("Thread " + threadHashKey + " is stop...");
  }

  private boolean preHandleEvent(GameEvent event, GameSession session) {
    AbstractRequestHandler handler = null;
    switch ((GameCommandType) event.getKey()) {
      case START_GAME_REQUEST:
        handler = new StartGameRequestHandler(event, session);
        break;
      case CLEAN_DRAW_REQUEST:
        handler = new CleanDrawRequestHandler(event, session);
        break;
      case SEND_DRAW_DATA_REQUEST:
        handler = new DrawDataRequestHandler(event, session);
        break;
      case CHAT_REQUEST:
        handler = new ChatRequestHandler(event, session);
        break;
      default:
        return false;
    }

    if (handler == null) return false;

    try {
      handler.handleRequest(event.getMessage());
    } catch (Exception e) {
      GameLog.error(event.getTargetSession(), e);
    }
    return true;
  }

  public void stopGraceful() {
    logger.info("Thread " + threadHashKey + " try stop gracefully");
    stopFlag.incrementAndGet();
  }

  public void putEvent(GameEvent gameEvent) {
    try {
      queue.put(gameEvent);
    } catch (Exception e) {
      logger.error("<putEvent> but catch exception " + e.toString(), e);
    }
  }

  //	public void putEventHead(GameEvent gameEvent) {
  //		try {
  //			queue.put(gameEvent);
  //		} catch (Exception e) {
  //			logger.error("<putEventHead> but catch exception " + e.toString(), e);
  //		}
  //	}

}