Package org.ggp.base.player.request.grammar

Source Code of org.ggp.base.player.request.grammar.PlayRequest

package org.ggp.base.player.request.grammar;

import java.util.List;

import org.ggp.base.player.event.PlayerTimeEvent;
import org.ggp.base.player.gamer.Gamer;
import org.ggp.base.player.gamer.event.GamerUnrecognizedMatchEvent;
import org.ggp.base.player.gamer.exception.MoveSelectionException;
import org.ggp.base.util.gdl.grammar.GdlTerm;
import org.ggp.base.util.logging.GamerLogger;


public final class PlayRequest extends Request
{
  private final Gamer gamer;
  private final String matchId;
  private final List<GdlTerm> moves;

  public PlayRequest(Gamer gamer, String matchId, List<GdlTerm> moves)
  {
    this.gamer = gamer;
    this.matchId = matchId;
    this.moves = moves;
  }

  @Override
  public String getMatchId() {
    return matchId;
  }

  @Override
  public String process(long receptionTime)
  {
      // First, check to ensure that this play request is for the match
      // we're currently playing. If we're not playing a match, or we're
      // playing a different match, send back "busy".
    if (gamer.getMatch() == null || !gamer.getMatch().getMatchId().equals(matchId)) {
      gamer.notifyObservers(new GamerUnrecognizedMatchEvent(matchId));
      GamerLogger.logError("GamePlayer", "Got play message not intended for current game: ignoring.");
      return "busy";
    }

    if (moves != null) {
      gamer.getMatch().appendMoves(moves);
    }

    try {
      gamer.notifyObservers(new PlayerTimeEvent(gamer.getMatch().getPlayClock() * 1000));
      return gamer.selectMove(gamer.getMatch().getPlayClock() * 1000 + receptionTime).toString();
    } catch (MoveSelectionException e) {
        GamerLogger.logStackTrace("GamePlayer", e);
      return "nil";
    }
  }

  @Override
  public String toString()
  {
    return "play";
  }
}
TOP

Related Classes of org.ggp.base.player.request.grammar.PlayRequest

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.