Gridarta Editor
IntegerParameter.java
Go to the documentation of this file.
1 /*
2  * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games.
3  * Copyright (C) 2000-2015 The Gridarta Developers.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more 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  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  */
19 
20 package net.sf.gridarta.plugin.parameter;
21 
25 import org.jetbrains.annotations.NotNull;
26 
31 public class IntegerParameter<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> extends AbstractValuePluginParameter<G, A, R, Integer> {
32 
36  @NotNull
37  public static final String PARAMETER_TYPE = Integer.class.getName();
38 
42  private int min = Integer.MIN_VALUE;
43 
47  private int max = Integer.MAX_VALUE;
48 
52  public IntegerParameter() {
53  super(0);
54  }
55 
56  @NotNull
57  @Override
58  public <T> T visit(@NotNull final PluginParameterVisitor<G, A, R, T> visitor) {
59  return visitor.visit(this);
60  }
61 
62  @Override
63  public boolean setStringValue(@NotNull final String stringValue) {
64  final int intValue;
65  try {
66  intValue = Integer.parseInt(stringValue);
67  } catch (final NumberFormatException ignored) {
68  return false;
69  }
70  if (intValue < min) {
71  return false;
72  }
73  if (intValue > max) {
74  return false;
75  }
76  super.setValue(intValue);
77  assert getValue() == intValue;
78  return true;
79  }
80 
81  @Override
82  public void setValue(@NotNull final Integer value) {
83  super.setValue(Math.max(Math.min(value, max), min));
84  }
85 
86  @NotNull
87  @Override
88  public String getParameterType() {
89  return PARAMETER_TYPE;
90  }
91 
92  @NotNull
93  @Override
94  public String getStringValue() {
95  return getValue().toString();
96  }
97 
102  public int getMax() {
103  return max;
104  }
105 
110  public void setMax(final int max) {
111  final int newMax = Math.max(min, max);
112  if (this.max == newMax) {
113  return;
114  }
115  this.max = newMax;
116  changed();
117  if (getValue() > this.max) {
118  setValue(this.max);
119  }
120  }
121 
126  public int getMin() {
127  return min;
128  }
129 
134  public void setMin(final int min) {
135  final int newMin = Math.min(min, max);
136  if (this.min == newMin) {
137  return;
138  }
139  this.min = newMin;
140  changed();
141  if (getValue() < this.min) {
142  setValue(this.min);
143  }
144  }
145 
146 }
int getMin()
Returns the minimal allowed value.
boolean setStringValue(@NotNull final String stringValue)
static final String PARAMETER_TYPE
The string representation of this parameter type.
A PluginParameter that holds an integer value and a range of valid values.
void setMin(final int min)
Sets the minimal allowed value.
Abstract base class for PluginParameter implementations for which the string representation of the va...
Base package of all Gridarta classes.
Reflects a game object (object on a map).
Definition: GameObject.java:36
GameObjects are the objects based on Archetypes found on maps.
Interface for visitors of PluginParameter instances.
void setMax(final int max)
Sets the maximal allowed value.
int getMax()
Returns the maximal allowed value.
void setValue(@NotNull final Integer value)