View Javadoc

1   /*
2    *   Magic-Project is a turn based strategy simulator
3    *   Copyright (C) 2003-2007 Fabrice Daugan
4    *
5    *   This program is free software; you can redistribute it and/or modify it 
6    * under the terms of the GNU General Public License as published by the Free 
7    * Software Foundation; either version 2 of the License, or (at your option) any
8    * later version.
9    *
10   *   This program is distributed in the hope that it will be useful, but WITHOUT 
11   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12   * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more 
13   * details.
14   *
15   *   You should have received a copy of the GNU General Public License along  
16   * with this program; if not, write to the Free Software Foundation, Inc., 
17   * 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18   */
19  package net.sf.magicproject.action.listener;
20  
21  import java.util.List;
22  
23  import net.sf.magicproject.clickable.ability.Ability;
24  import net.sf.magicproject.clickable.targetable.card.MCard;
25  
26  /***
27   * @author <a href="mailto:fabdouglas@users.sourceforge.net">Fabrice Daugan </a>
28   * @since 0.86
29   */
30  public interface WaitingAbility extends Waiting {
31  
32  	/***
33  	 * Called to specify the triggered card chosen for the current action by the
34  	 * handed player
35  	 * 
36  	 * @param ability
37  	 *          the clicked card by the handed player for the current action
38  	 * @return true if this click has been managed. Return false if this click has
39  	 *         been ignored
40  	 */
41  	boolean clickOn(Ability ability);
42  
43  	/***
44  	 * Return activated abilities of the specified card.
45  	 * 
46  	 * @param card
47  	 *          the requesting card the abilities will be listed from.
48  	 * @return activated abilities of the specified card.
49  	 */
50  	List<Ability> abilitiesOf(MCard card);
51  
52  	/***
53  	 * Return activated advanced abilities of the specified card.
54  	 * 
55  	 * @param card
56  	 *          the requesting card the abilities will be listed from.
57  	 * @return activated advanced abilities of the specified card.
58  	 */
59  	List<Ability> advancedAbilitiesOf(MCard card);
60  
61  	/***
62  	 * This function should be called by the 'clickOn' caller in case of the
63  	 * specified ability has been handled during the checking validity of this
64  	 * click in the <code>clickOn(Ability)</code> function. <br>
65  	 * <ul>
66  	 * The calls chain is :
67  	 * <li>actionListener call clickOn(Ability)
68  	 * <li>if returned value is false we give hand to the player and exit, else
69  	 * we continue
70  	 * <li>actionListener call succeedClickOn(Ability)
71  	 * </ul>
72  	 * 
73  	 * @param ability
74  	 *          the ability that was clicked and successfuly handled by the
75  	 *          <code>clickOn(Ability)</code> function.
76  	 * @return true if this action is completed
77  	 * @see #clickOn(Ability)
78  	 */
79  	boolean succeedClickOn(Ability ability);
80  
81  	void finished();
82  
83  	boolean manualSkip();
84  }