View Javadoc
1   /******************************************************************************
2    * AnimateEvent.java - Base class for the animate events.
3    * $Id$
4    * 
5    * BuckoFIBS - Backgammon by BuckoSoft
6    * Copyright© 2011 - Dick Balaska - BuckoSoft, Corp.
7    * 
8    * $Log$
9    * Revision 1.7  2011/07/16 02:43:45  dick
10   * Add the Double type.
11   *
12   * Revision 1.6  2011/07/04 03:39:31  dick
13   * Add FirstRoll.
14   *
15   * Revision 1.5  2011/06/18 19:31:15  dick
16   * spelling
17   *
18   * Revision 1.4  2011/06/05 06:54:02  dick
19   * Define AcceptAndWin.
20   *
21   * Revision 1.3  2011/06/02 19:12:34  dick
22   * isGui() says that this event requires user interaction. (accept/decline, etc).
23   * Deal with resign events.
24   *
25   * Revision 1.2  2011/05/31 19:45:37  dick
26   * Javadoc.
27   *
28   * Revision 1.1  2011/05/22 22:56:08  dick
29   * c.b.f.B.g.boardTab.board becomes c.b.f.B.g.boardTab.boardPane .
30   *
31   * Revision 1.4  2011/05/22 05:21:48  dick
32   * Add Type.PleaseAcceptOrRejectDouble.
33   *
34   * Revision 1.3  2011/05/21 06:09:25  dick
35   * Javadoc.
36   *
37   * Revision 1.2  2011/05/21 05:03:34  dick
38   * Add GUI support, PleaseRollOrDouble and PleaseMove.
39   *
40   * Revision 1.1  2011/05/17 22:50:04  dick
41   * AnimateEvent moves to c.b.f.B.g.b.b which is where it is used.
42   *
43   * Revision 1.6  2011/05/16 22:04:13  dick
44   * More Javadoc tests (can we get to Board.X).
45   *
46   * Revision 1.5  2011/05/16 21:45:05  dick
47   * Javadoc test.
48   *
49   * Revision 1.4  2011/05/16 21:37:39  dick
50   * Javadoc.
51   *
52   * Revision 1.3  2011/05/16 14:17:30  dick
53   * Add Type.CantMove.
54   *
55   * Revision 1.2  2011/05/16 11:36:24  dick
56   * offset manages position in an animation.
57   * who manages direction of the animation.
58   *
59   * Revision 1.1  2011/05/15 02:17:34  dick
60   * c.b.f.B.gui.board becomes c.b.f.B.gui.boardTab.
61   *
62   * Revision 1.2  2011/05/13 17:16:17  dick
63   * Fix enum cvs location.
64   *
65   * Revision 1.1  2011/05/13 14:55:30  dick
66   * Base class for the animation events.
67   *
68   */
69  
70  /* 
71   * This program is free software: you can redistribute it and/or modify
72   * it under the terms of the GNU General Public License as published by
73   * the Free Software Foundation, either version 3 of the License, or
74   * (at your option) any later version.
75   *
76   * This program is distributed in the hope that it will be useful,
77   * but WITHOUT ANY WARRANTY; without even the implied warranty of
78   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
79   * GNU General Public License for more details.
80   *
81   * You should have received a copy of the GNU General Public License
82   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
83   *
84   * The Original Code is BuckoFIBS, <http://www.buckosoft.com/BuckoFIBS/>.
85   * The Initial Developer of the Original Code is Dick Balaska and BuckoSoft, Corp.
86   * 
87   */
88  package com.buckosoft.fibs.BuckoFIBS.gui.boardTab.boardPane;
89  
90  /** Abstract Base Class for the animation events.
91   * @author Dick Balaska
92   * @since 2011/05/12
93   * @version $Revision$ <br> $Date$
94   * @see <a href="http://cvs.buckosoft.com/Projects/BuckoFIBS/BuckoFIBS/src/main/java/com/buckosoft/fibs/BuckoFIBS/gui/boardTab/boardPane/AnimateEvent.java">cvs AnimateEvent.java</a>
95   */
96  public abstract class AnimateEvent {
97  	/** 0 -> 1 offset into the animation */
98  	protected	double	offset = 0;
99  	/** Board.X or Board.O */
100 	protected	int		who;
101 	
102 	/** A game event type.
103 	 * Events get Listed in GameManager and Type tells the different kinds apart.
104 	 * @author Dick Balaska
105 	 * @since 2011/05/11
106 	 * @version $Revision$ <br> $Date$
107 	 * @see com.buckosoft.fibs.BuckoFIBS.GameManager
108 	 * @see <a href="http://cvs.buckosoft.com/Projects/BuckoFIBS/BuckoFIBS/src/main/java/com/buckosoft/fibs/BuckoFIBS/gui/boardTab/board/AnimateEvent.java">cvs GameEvent.java</a>
109 	 */
110 	public enum Type {
111 		/** Board state. */
112 		Board,
113 		/** Move these pieces to their new positions */
114 		Move,
115 		/** Player rolled these dice */
116 		Roll,
117 		/** Player can't move based on the last roll of the dice */
118 		CantMove,
119 		/** Player wants to resign */
120 		Resign,
121 		/** GUI should ask the player to either Roll or Double */
122 		PleaseRollOrDouble,
123 		/** GUI should ask the player to move n number of pieces */
124 		PleaseMove,
125 		/** You Double */
126 		Double,
127 		/** GUI should ask the player to accept or reject the double */
128 		PleaseAcceptOrRejectDouble,
129 		/** GUI should ask the player to accept or reject the resign */
130 		PleaseAcceptOrRejectResign,
131 		/** Player rejected the resign offer */
132 		RejectResign,
133 		/** Player accepted the resign offer */
134 		AcceptAndWin,
135 		/** First roll of the game */
136 		FirstRoll,
137 	}
138 	
139 	/** Do not instantiate.  Must subclass */
140 	protected AnimateEvent() {}
141 
142 	/** Get the {@link Type} of this AnimateEvent
143 	 * @return The Type of this AnimateEvent
144 	 */
145 	public abstract Type getType();
146 
147 	/** Is this a Gui event?  That is, is the game waiting for user input?
148 	 * @return true if this event needs user input
149 	 */
150 	public abstract boolean isGui();
151 
152 	/** Get the number of milliseconds to execute this AnimateEvent
153 	 * @return The time it takes to execute this event 
154 	 */
155 	public abstract int	getDuration();
156 	
157 	
158 	/** Set how far along the animation we are (0.0 -> 1.0)
159 	 * @param offset the offset to set
160 	 */
161 	public void setOffset(double offset) {
162 		this.offset = offset;
163 	}
164 
165 	/** Get how far along the animation we are (0.0 -> 1.0)
166 	 * @return the offset
167 	 */
168 	public double getOffset() {
169 		return offset;
170 	}
171 
172 	/** Who's event is this?
173 	 * @param xo Either Board.X or Board.O
174 	 */
175 	public void setWho(int xo) {
176 		this.who = xo;
177 	}
178 
179 	/** Whose event is this?
180 	 * @return Either Board.X or Board.O
181 	 */
182 	public	int	getWho() {
183 		return(this.who);
184 	}
185 }