Crossfire JXClient, Trunk  R20561
Skill.java
Go to the documentation of this file.
1 /*
2  * This file is part of JXClient, the Fullscreen Java Crossfire Client.
3  *
4  * JXClient is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * JXClient is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with JXClient; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17  *
18  * Copyright (C) 2005-2008 Yann Chachkoff.
19  * Copyright (C) 2006-2011 Andreas Kirschbaum.
20  */
21 
22 package com.realtime.crossfire.jxclient.skills;
23 
25 import org.jetbrains.annotations.NotNull;
26 
32 public class Skill {
33 
37  @NotNull
39 
43  @NotNull
44  private final String name;
45 
49  private int face = -1;
50 
54  private long experience;
55 
59  private int level;
60 
65  public Skill(@NotNull final String name) {
66  this.name = name;
67  }
68 
74  public void set(final int level, final long experience) {
75  if (this.level == level && this.experience == experience) {
76  return;
77  }
78 
79  final boolean oldKnown = isKnown();
80  this.level = level;
81  this.experience = experience;
82  fireEvents(oldKnown);
83  }
84 
89  public long getExperience() {
90  return experience;
91  }
92 
97  public int getLevel() {
98  return level;
99  }
100 
105  public int getFace() {
106  return face;
107  }
108 
113  public void setFace(final int face) {
114  this.face = face;
115  }
116 
121  private boolean isKnown() {
122  return experience != 0 || level != 0;
123  }
124 
128  @NotNull
129  @Override
130  public String toString() {
131  return name;
132  }
133 
138  private void fireEvents(final boolean oldKnown) {
139  final boolean newKnown = isKnown();
140 
141  if (!oldKnown) {
142  assert newKnown;
143  fireAddSkill();
144  } else if (!newKnown) {
145  fireDelSkill();
146  } else {
147  fireUpdSkill();
148  }
149  }
150 
154  private void fireAddSkill() {
155  for (final SkillListener listener : listeners) {
156  listener.gainedSkill();
157  }
158  }
159 
163  private void fireDelSkill() {
164  for (final SkillListener listener : listeners) {
165  listener.lostSkill();
166  }
167  }
168 
172  private void fireUpdSkill() {
173  for (final SkillListener listener : listeners) {
174  listener.changedSkill();
175  }
176  }
177 
182  public void addSkillListener(@NotNull final SkillListener listener) {
183  listeners.add(listener);
184  }
185 
190  public void removeSkillListener(@NotNull final SkillListener listener) {
191  listeners.remove(listener);
192  }
193 
194 }
void fireAddSkill()
Notifies all listeners about a gained skill.
Definition: Skill.java:154
void addSkillListener(@NotNull final SkillListener listener)
Adds a listener to be notified of changes.
Definition: Skill.java:182
void removeSkillListener(@NotNull final SkillListener listener)
Removes a listener to be notified of changes.
Definition: Skill.java:190
int getFace()
Returns the skill's face.
Definition: Skill.java:105
Skill(@NotNull final String name)
Creates a new instance.
Definition: Skill.java:65
void fireUpdSkill()
Notifies all listeners about an updated attribute.
Definition: Skill.java:172
Interface for listeners on skill related changes.
int getLevel()
Returns the skill level.
Definition: Skill.java:97
final String name
The skill name.
Definition: Skill.java:44
void fireEvents(final boolean oldKnown)
Notifies all listeners about changes.
Definition: Skill.java:138
One skill of the character.
Definition: Skill.java:32
long getExperience()
Returns the skill experience.
Definition: Skill.java:89
final EventListenerList2< SkillListener > listeners
The listeners to inform of changes.
Definition: Skill.java:38
void add(@NotNull final T listener)
Adds a listener.
void setFace(final int face)
Defines the skill&#39;s face.
Definition: Skill.java:113
void fireDelSkill()
Notifies all listeners about a lost attribute.
Definition: Skill.java:163
boolean isKnown()
Returns whether the skill is known.
Definition: Skill.java:121
long experience
The skill experience.
Definition: Skill.java:54
void remove(@NotNull final T listener)
Removes a listener.
int face
The skill&#39;s face number.
Definition: Skill.java:49