Crossfire JXClient, Trunk
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-2017,2019-2023 Andreas Kirschbaum
20  * Copyright (C) 2010-2012,2014-2018,2020-2023 Nicolas Weeger
21  */
22 
23 package com.realtime.crossfire.jxclient.skills;
24 
27 import org.jetbrains.annotations.NotNull;
28 import org.jetbrains.annotations.Nullable;
29 
35 public class Skill {
36 
40  @NotNull
42 
46  @NotNull
47  private final String name;
48 
52  private int face = -1;
53 
57  private long experience;
58 
62  private int level;
63 
68  @Nullable
69  private String message;
70 
75  public Skill(@NotNull final String name) {
76  this.name = name;
77  }
78 
84  public void set(final int level, final long experience) {
85  if (this.level == level && this.experience == experience) {
86  return;
87  }
88 
89  final boolean oldKnown = isKnown();
90  this.level = level;
91  this.experience = experience;
92  fireEvents(oldKnown);
93  }
94 
99  public long getExperience() {
100  return experience;
101  }
102 
107  public int getLevel() {
108  return level;
109  }
110 
115  public int getFace() {
116  return face;
117  }
118 
123  public void setFace(final int face) {
124  this.face = face;
125  }
126 
131  public void setMessage(@Nullable final String message) {
132  this.message = message;
133  }
134 
139  private boolean isKnown() {
140  return experience != 0 || level != 0;
141  }
142 
143  @NotNull
144  @Override
145  public String toString() {
146  return name;
147  }
148 
153  @Nullable
154  public String getTooltipText() {
155  if (message == null) {
156  return null;
157  }
158 
159  final StringBuilder sb = new StringBuilder();
160  for (final String line : message.split("\n")) {
161  sb.append(StringSplitter.splitAsHtml(line)).append("<br>");
162  }
163  return sb.toString();
164  }
165 
170  private void fireEvents(final boolean oldKnown) {
171  final boolean newKnown = isKnown();
172 
173  if (!oldKnown) {
174  assert newKnown;
175  fireAddSkill();
176  } else if (!newKnown) {
177  fireDelSkill();
178  } else {
179  fireUpdSkill();
180  }
181  }
182 
186  private void fireAddSkill() {
187  for (SkillListener listener : listeners) {
188  listener.gainedSkill();
189  }
190  }
191 
195  private void fireDelSkill() {
196  for (SkillListener listener : listeners) {
197  listener.lostSkill();
198  }
199  }
200 
204  private void fireUpdSkill() {
205  for (SkillListener listener : listeners) {
206  listener.changedSkill();
207  }
208  }
209 
214  public void addSkillListener(@NotNull final SkillListener listener) {
215  listeners.add(listener);
216  }
217 
222  public void removeSkillListener(@NotNull final SkillListener listener) {
223  listeners.remove(listener);
224  }
225 
226 }
com.realtime.crossfire.jxclient
com.realtime.crossfire.jxclient.util.StringSplitter.splitAsHtml
static String splitAsHtml(@NotNull final String message)
Definition: StringSplitter.java:58
com.realtime.crossfire.jxclient.skills.Skill.fireDelSkill
void fireDelSkill()
Definition: Skill.java:195
com.realtime.crossfire.jxclient.skills.Skill.toString
String toString()
Definition: Skill.java:145
com.realtime.crossfire.jxclient.skills.Skill.isKnown
boolean isKnown()
Definition: Skill.java:139
com.realtime.crossfire.jxclient.skills.Skill.getTooltipText
String getTooltipText()
Definition: Skill.java:154
com.realtime.crossfire.jxclient.skills.Skill.Skill
Skill(@NotNull final String name)
Definition: Skill.java:75
com.realtime.crossfire.jxclient.skills.Skill.getLevel
int getLevel()
Definition: Skill.java:107
com.realtime.crossfire.jxclient.util.EventListenerList2
Definition: EventListenerList2.java:37
com.realtime.crossfire.jxclient.skills.Skill
Definition: Skill.java:35
com.realtime.crossfire.jxclient.skills.Skill.fireUpdSkill
void fireUpdSkill()
Definition: Skill.java:204
com.realtime.crossfire.jxclient.skills.Skill.level
int level
Definition: Skill.java:62
com.realtime.crossfire.jxclient.util.StringSplitter
Definition: StringSplitter.java:33
com.realtime.crossfire.jxclient.skills.Skill.getExperience
long getExperience()
Definition: Skill.java:99
com.realtime.crossfire.jxclient.skills.Skill.fireAddSkill
void fireAddSkill()
Definition: Skill.java:186
com.realtime.crossfire.jxclient.skills.SkillListener
Definition: SkillListener.java:31
com.realtime.crossfire.jxclient.skills.Skill.name
final String name
Definition: Skill.java:47
com.realtime.crossfire.jxclient.skills.Skill.getFace
int getFace()
Definition: Skill.java:115
com.realtime.crossfire.jxclient.skills.Skill.message
String message
Definition: Skill.java:69
com.realtime.crossfire.jxclient.util
Definition: Codec.java:23
com.realtime.crossfire.jxclient.skills.Skill.removeSkillListener
void removeSkillListener(@NotNull final SkillListener listener)
Definition: Skill.java:222
com.realtime.crossfire
com.realtime
com
com.realtime.crossfire.jxclient.skills.Skill.fireEvents
void fireEvents(final boolean oldKnown)
Definition: Skill.java:170
com.realtime.crossfire.jxclient.skills.Skill.listeners
final EventListenerList2< SkillListener > listeners
Definition: Skill.java:41
com.realtime.crossfire.jxclient.skills.Skill.experience
long experience
Definition: Skill.java:57
com.realtime.crossfire.jxclient.skills.Skill.addSkillListener
void addSkillListener(@NotNull final SkillListener listener)
Definition: Skill.java:214
com.realtime.crossfire.jxclient.skills.Skill.setFace
void setFace(final int face)
Definition: Skill.java:123
com.realtime.crossfire.jxclient.skills.Skill.setMessage
void setMessage(@Nullable final String message)
Definition: Skill.java:131
com.realtime.crossfire.jxclient.skills.Skill.face
int face
Definition: Skill.java:52