1 package net.sourceforge.rpgee.dice;
2
3 import java.util.List;
4
5 import net.sourceforge.rpgee.Describable;
6 import net.sourceforge.rpgee.dice.exceptions.InvalidParameterException;
7 import net.sourceforge.rpgee.dice.exceptions.RandomValueException;
8
9 public interface RandomValueGenerator extends Describable {
10
11 /**
12 * The setting (see setSetting below) that is potentially used in the generateRandomness call.
13 */
14 public final static String DICE_MAPPING_CLASS = "paramMappingClass";
15 public final static String DIE_HANDLING_CLASS = "paramDieHandlingClass";
16
17 /**
18 * Returns the internal map of settings used by the "roll" call
19 *
20 * @return
21 */
22 public Object getSetting(String key);
23
24 /**
25 * Get a list of available settings
26 *
27 * @return
28 */
29 public String[] getSettings();
30
31 /**
32 * Sets a setting in the internal settings map to the given value.
33 *
34 * @param setting String name of the setting
35 * @param value Object value to set the setting to
36 */
37 public void setSetting(String setting, Object value) throws InvalidParameterException;
38
39 /**
40 * Produces a DiceEvaluation
41 *
42 * @param d
43 * @return
44 */
45 public GeneratedRandomValue produceGeneratedRandomValue(String d) throws RandomValueException;
46
47 /**
48 * Reset the "randomness" factor for a RandomValueGenerator. For instance, getting a new Random object with a new seed or
49 * shuffling a deck of cards.
50 */
51 public void generateRandomness() throws RandomValueException;
52
53 /**
54 * Set the code that maps values in die rolls to result strings.
55 *
56 * @param mapper The RandomValueResultMapper to map to, or null to use the basic RandomValue's output
57 */
58 public void setRandomValueResultMapper(RandomValueResultMapper mapper);
59
60 /**
61 * GameMapModel the dice rolls in roll with a mapper if available
62 *
63 * @param GeneratedRandomValue
64 * @return String representation of the dice rolled
65 * @throws MappingException
66 */
67 public String getRandomValuesAsString(List<RandomValue> roll) throws RandomValueException;
68
69 /**
70 * Returns the local result mapper
71 *
72 * @return Result mapper
73 */
74 public RandomValueResultMapper getRandomValueResultMapper();
75
76 public List<RandomValueHandler> getRandomValueHandlers();
77
78 /**
79 * Set the DieHandlers for this Roller. Die handlers manage the effect of an individual die and are allowed to transform the
80 * value rolled by the randomizer into a new value before display.
81 *
82 * @param handler The RandomValueHandler to use for this randmizer
83 */
84 public void setRandomValueHandlers(List<RandomValueHandler> handlers);
85
86 /**
87 * Add A new RandomValueHandler to the list of handlers for this roller
88 *
89 * @param handler RandomValueHandler to add
90 */
91 public void addRandomValueHandler(RandomValueHandler handler);
92
93 /**
94 * Submit some value that is required before a roll can continue. For a deck, this is probably the "minimum number of cards
95 * remaining". For some other randomizer, it might be a "minumum randomness".
96 *
97 * This is purely implementation dependent. For randomizers that don't need this, like dice rollers, an empty implementation is
98 * fine.
99 *
100 * @param requirement Some object passed to this function to determine a randomness factor
101 */
102 public void require(Object requirement) throws RandomValueException;
103
104 public void setRandomnessFactor(Object o);
105
106 }