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;
20  
21  import java.io.IOException;
22  import java.io.InputStream;
23  
24  import net.sf.magicproject.action.handler.StandardAction;
25  import net.sf.magicproject.clickable.ability.Ability;
26  import net.sf.magicproject.clickable.targetable.player.Player;
27  import net.sf.magicproject.event.context.ContextEventListener;
28  import net.sf.magicproject.stack.StackManager;
29  import net.sf.magicproject.token.IdZones;
30  import net.sf.magicproject.ui.i18n.LanguageManager;
31  import net.sf.magicproject.ui.i18n.LanguageManagerMDB;
32  
33  /***
34   * Shuffle the zone of targeted player(s). Use the target list to know
35   * player(s).
36   * 
37   * @author <a href="mailto:fabdouglas@users.sourceforge.net">Fabrice Daugan </a>
38   * @since 0.54
39   */
40  class Shuffle extends UserAction implements StandardAction {
41  
42  	/***
43  	 * Create an instance of CountCard by reading a file Offset's file must
44  	 * pointing on the first byte of this action <br>
45  	 * <ul>
46  	 * Structure of InputStream : Data[size]
47  	 * <li>idAction [1]</li>
48  	 * <li>idZone [1]</li>
49  	 * </ul>
50  	 * 
51  	 * @param inputFile
52  	 *          file containing this action
53  	 * @throws IOException
54  	 *           if error occurred during the reading process from the specified
55  	 *           input stream
56  	 */
57  	Shuffle(InputStream inputFile) throws IOException {
58  		super(inputFile);
59  		idZone = inputFile.read();
60  	}
61  
62  	@Override
63  	public final Actiontype getIdAction() {
64  		return Actiontype.SHUFFLE;
65  	}
66  
67  	public boolean play(ContextEventListener context, Ability ability) {
68  		for (int p = StackManager.getInstance().getTargetedList().size(); p-- > 0;) {
69  			if (StackManager.getInstance().getTargetedList().get(p).isPlayer()) {
70  				((Player) StackManager.getInstance().getTargetedList().get(p)).zoneManager
71  						.getContainer(idZone).shuffle();
72  			}
73  		}
74  		return true;
75  	}
76  
77  	@Override
78  	public String toHtmlString(Ability ability, ContextEventListener context) {
79  		if (actionName == null) {
80  			return super.toHtmlString(ability, context);
81  		}
82  		if (actionName.charAt(0) == '%') {
83  			return "";
84  		}
85  		// we return only the string representation
86  		return LanguageManagerMDB.getString("shuffle", LanguageManager
87  				.getString(IdZones.ZONE_NAMES[idZone]));
88  	}
89  
90  	@Override
91  	public String toString(Ability ability) {
92  		return "shuffle zone " + idZone;
93  	}
94  
95  	/***
96  	 * represents the place to shuffle
97  	 */
98  	private int idZone;
99  
100 }