1 /****************************************************************************** 2 * GameEventFirstMove.java - Someone makes the first move 3 * $Id$ 4 * 5 * BuckoFIBS - Backgammon by BuckoSoft 6 * Copyright© 2011 - Dick Balaska - BuckoSoft, Corp. 7 * 8 * $Log$ 9 */ 10 11 /* 12 * This program is free software: you can redistribute it and/or modify 13 * it under the terms of the GNU General Public License as published by 14 * the Free Software Foundation, either version 3 of the License, or 15 * (at your option) any later version. 16 * 17 * This program is distributed in the hope that it will be useful, 18 * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 * GNU General Public License for more details. 21 * 22 * You should have received a copy of the GNU General Public License 23 * along with this program. If not, see <http://www.gnu.org/licenses/>. 24 * 25 * The Original Code is BuckoFIBS, <http://www.buckosoft.com/BuckoFIBS/>. 26 * The Initial Developer of the Original Code is Dick Balaska and BuckoSoft, Corp. 27 * 28 */ 29 package com.buckosoft.fibs.domain.gameEvent; 30 31 import org.slf4j.Logger; 32 import org.slf4j.LoggerFactory; 33 34 import com.buckosoft.fibs.domain.Board; 35 36 37 /** Someone makes the first move. 38 * @author Dick Balaska 39 * @since 2011/06/26 40 * @version $Revision$ <br> $Date$ 41 * @see com.buckosoft.fibs.BuckoFIBS.GameManager 42 * @see <a href="http://cvs.buckosoft.com/Projects/BuckoFIBS/BuckoFIBS/src/main/java/com/buckosoft/fibs/domain/gameEvent/GameEventFirstMove.java">cvs GameEventFirstMove.java</a> 43 */ 44 public class GameEventFirstMove extends GameEvent { 45 private Logger logger = LoggerFactory.getLogger(getClass()); 46 private int[] dice = new int[2]; 47 48 @Override 49 public Type getType() { 50 return(Type.FirstMove); 51 } 52 53 @Override 54 public Life getLife() { 55 return(Life.Transient); 56 } 57 58 /** Default constructor */ 59 public GameEventFirstMove() {} 60 61 /** Return the two dice rolled in this event 62 * @return The array of the dice 63 */ 64 public int[] getDice() { 65 return(dice); 66 } 67 68 /** Set the dice to be used for this turn 69 * @param dice The dice (from the previous roll) 70 */ 71 public void setDice(int[] dice) { 72 this.dice = dice; 73 } 74 75 /** Parse either "<code>It's your turn to move.</code>" or "<code>dickbalaska makes the first move.</code>" 76 * along with the first dice. 77 * @param s The FIBS string to parse. 78 * @param firstRoll The previous FirstRoll which contains his and her dice. 79 * @param board A board to match player names against. 80 */ 81 public void parse(String s, GameEventFirstRoll firstRoll, Board board) { 82 this.dice = firstRoll.getDice(); 83 String[] ss = s.split(" ", 2); 84 if (ss[0].equals("It's")) 85 this.who = Board.O; 86 else if (ss[0].equals(firstRoll.getPlayerNames()[0])) 87 this.who = Board.O; 88 else if (ss[0].equals(firstRoll.getPlayerNames()[1])) 89 this.who = Board.X; 90 else if (ss[0].equals(board.getPlayerName()[Board.O])) 91 this.who = Board.O; 92 else if (ss[0].equals(board.getPlayerName()[Board.X])) 93 this.who = Board.X; 94 else { 95 logger.error("Can't Determine first move player"); 96 logger.error("s = " + s); 97 logger.error("firstRoll = " + firstRoll.toString()); 98 } 99 100 } 101 102 /** A debug string of this object. 103 * @return "<code>Please move {checkersToMove} pieces. Dice= {dice0}-{dice1}</code>" 104 */ 105 public String toString() { 106 return("First move. who=" + who + " Dice= " + dice[0] + "-" + dice[1]); 107 } 108 }