summaryrefslogtreecommitdiffstats
path: root/src/jrummikub/view/ISettingsPanel.java
blob: 8c30c78cece5e3b75432f9236afc08a68bed1922 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
package jrummikub.view;

import java.awt.Color;

import jrummikub.control.turn.TurnControlFactory;
import jrummikub.model.GameSettings;
import jrummikub.util.IEvent;
import jrummikub.util.IEvent1;
import jrummikub.util.IEvent2;

/**
 * The panel for the game setup
 */
public interface ISettingsPanel {
	/**
	 * The list of player colors
	 */
	public final static Color[] PLAYER_COLORS = { new Color(1.0f, 0, 0), // red
			new Color(0, 1.0f, 0), // lime
			new Color(1.0f, 1.0f, 0), // yellow
			new Color(0, 0, 1.0f), // blue
			new Color(1.0f, 0, 1.0f), // fuchsia
			new Color(0, 1.0f, 1.0f), // aqua
			new Color(0.5f, 0, 0), // maroon
			new Color(0, 0.5f, 0), // green
			new Color(0.5f, 0.5f, 0), // olive
			new Color(0, 0, 0.5f), // navy
			new Color(0.5f, 0, 0.5f), // purple
			new Color(0, 0.5f, 0.5f), // teal
			new Color(0, 0, 0), // black
			new Color(0.5f, 0.5f, 0.5f), // gray
			new Color(0.75f, 0.75f, 0.75f), // silver
			new Color(1.0f, 1.0f, 1.0f), // white
	};

	/**
	 * The add player event is emitted when the user wants to add a player to
	 * the player list
	 * 
	 * @return the event
	 */
	public IEvent getAddPlayerEvent();

	/**
	 * The remove player event is emitted when the user wants to remove a player
	 * remove the player list
	 * 
	 * @return the event
	 */
	public IEvent1<Integer> getRemovePlayerEvent();

	/**
	 * The change player color event is emitted when the user wants change a
	 * player's color
	 * 
	 * @return the event
	 */
	public IEvent2<Integer, Color> getChangePlayerColorEvent();

	/**
	 * The change player color event is emitted when the user wants change a
	 * player's name
	 * 
	 * @return the event
	 */
	public IEvent2<Integer, String> getChangePlayerNameEvent();

	/**
	 * The change player color event is emitted when the user wants change a
	 * player's type
	 * 
	 * @return the event
	 */
	public IEvent2<Integer, TurnControlFactory.Type> getChangePlayerTypeEvent();

	/**
	 * The change initial meld threshold event is emitted when the user wants
	 * change the initial meld threshold
	 * 
	 * @return the event
	 */
	public IEvent1<Integer> getChangeInitialMeldThresholdEvent();

	/**
	 * the start game event is emitted when the user wants to start the game
	 * 
	 * @return the event
	 */
	public IEvent getStartGameEvent();

	/**
	 * Sets an error to display
	 * 
	 * @param error
	 *            the kind of error
	 */
	public void setError(SettingsError error);

	/**
	 * Enables or disables the start game button
	 * 
	 * @param enable
	 *            specifies if the button is to be enabled or disabled
	 */
	public void enableStartGameButton(boolean enable);

	/**
	 * Enables or disables the add player button
	 * 
	 * @param enable
	 *            specifies if the button is to be enabled or disabled
	 */
	public void enableAddPlayerButton(boolean enable);

	/**
	 * Enables or disables the remove player buttons
	 * 
	 * @param enable
	 *            specifies if the buttons are to be enabled or disabled
	 */

	public void enableRemovePlayerButtons(boolean enable);

	/**
	 * Sets the game settings to display
	 * 
	 * @param gameSettings
	 *            the settings
	 */
	public void setGameSettings(GameSettings gameSettings);

	/**
	 * Specifies the different kinds of settings errors that can be displayed
	 */
	public enum SettingsError {
		/** Everything is ok */
		NO_ERROR,
		/** A player name is used twice */
		DUPLICATE_PLAYER_NAME_ERROR,
		/** A player has an empty name */
		NO_PLAYER_NAME_ERROR,
		/** More Stones than present would be dealed */
		NOT_ENOUGH_STONES_ERROR,

		// warnings
		/** threshold higher 100 */
		TOO_HIGH_THRESHOLD_WARNING,
		/** Only computer players added */
		COMPUTER_PLAYERS_ONLY_WARNING
	}

	/**
	 * Sets the initial meld threshold in the option pane
	 * 
	 * @param value
	 *            initial meld threshold
	 */
	public void setInitialMeldThreshold(int value);

	/**
	 * Emitted when the joker number is changed
	 * 
	 * @return the event
	 */
	public IEvent1<Integer> getChangeJokerNumberEvent();

	/**
	 * Sets the joker number in the option pane
	 * 
	 * @param jokerNumber
	 *            the joker number
	 */
	public void setJokerNumber(int jokerNumber);
}