Crossfire JXClient, Trunk
GUILabelStats.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.gui.label;
24 
32 import java.awt.Color;
33 import java.awt.Font;
34 import org.jetbrains.annotations.NotNull;
35 import org.jetbrains.annotations.Nullable;
36 
43 public class GUILabelStats extends GUIOneLineLabel {
44 
48  private static final long serialVersionUID = 1;
49 
53  @NotNull
54  private final Stats stats;
55 
59  private final int stat;
60 
64  @NotNull
65  private final StatsListener statsListener = new StatsListener() {
66 
67  @Override
68  public void resetBefore() {
69  // ignore
70  }
71 
72  @Override
73  public void resetAfter() {
74  // ignore
75  }
76 
77  @Override
78  public void statChanged(final int statNo, final int value) {
79  switch (stat) {
80  case Stats.CS_STAT_SPEED:
81  if (stat == statNo) {
83  }
84  break;
85 
87  if (stat == statNo) {
89  }
90  break;
91 
93  case Stats.C_STAT_WEIGHT:
94  if (stat == statNo) {
95  //noinspection IntegerDivisionInFloatingPointContext
96  setText(Formatter.formatFloat(((value+50)/100)/10.0, 1));
98  }
101  }
102  break;
103 
104  default:
105  if (stat == statNo) {
106  setText(String.valueOf(value));
107  }
108  break;
109  }
110  }
111 
112  @Override
113  public void simpleWeaponSpeedChanged(final boolean simpleWeaponSpeed) {
114  // ignore
115  }
116 
117  @Override
118  public void titleChanged(@NotNull final String title) {
119  if (stat == Stats.CS_STAT_TITLE) {
120  setText(title);
121  }
122  }
123 
124  @Override
125  public void godNameChanged(@NotNull final String godName) {
126  if (stat == Stats.CS_STAT_GOD_NAME) {
127  setText(godName);
128  }
129  }
130 
131  @Override
132  public void rangeChanged(@NotNull final String range) {
133  if (stat != Stats.CS_STAT_RANGE) {
134  return;
135  }
136 
137  final String text;
138  if (range.startsWith("Range: spell ")) {
139  text = range.substring(13);
140  } else if (range.startsWith("Range: ") || range.startsWith("Skill: ")) {
141  text = range.substring(7);
142  } else {
143  text = range;
144  }
145  setText(text);
146  }
147 
148  @Override
149  public void activeSkillChanged(@NotNull final String activeSkill) {
151  setText(activeSkill);
152  }
153  }
154 
155  @Override
156  public void experienceChanged(final long exp) {
157  if (stat == Stats.CS_STAT_EXP || stat == Stats.CS_STAT_EXP64) {
158  setText(String.valueOf(exp));
159  }
160  }
161 
162  @Override
163  public void experienceNextLevelChanged(final long expNextLevel) {
165  setText(String.valueOf(expNextLevel));
166  }
167  }
168 
169  };
170 
185  public GUILabelStats(@NotNull final TooltipManager tooltipManager, @NotNull final GUIElementListener elementListener, @NotNull final String name, @NotNull final Font textFont, @NotNull final Color textColor, @NotNull final Color textHighlightColor, @Nullable final Color backgroundColor, final int stat, @NotNull final Alignment alignment, @NotNull final Stats stats, @NotNull final GuiFactory guiFactory) {
187  this.stats = stats;
188  this.stat = stat;
189  this.stats.addCrossfireStatsListener(statsListener);
190  }
191 
192  @Override
193  public void dispose() {
194  super.dispose();
196  }
197 
198  @Nullable
199  @Override
201  switch (stat) {
203  case Stats.C_STAT_WEIGHT:
204  return newTooltipText(Formatter.formatFloat(stats.getStat(stat)/1000.0, 3)+"kg"+(stat == Stats.C_STAT_WEIGHT && isOverloaded() ? " (overloaded)" : ""));
205 
206  default:
207  break;
208  }
209 
210  return super.getTooltip();
211  }
212 
217  private boolean isOverloaded() {
218  return stats.getStat(Stats.CS_STAT_OVERLOAD) > 0;
219  }
220 
221 }
com.realtime.crossfire.jxclient.gui.gui.AbstractGUIElement.newTooltipText
TooltipText newTooltipText(@Nullable final String tooltipText)
Definition: AbstractGUIElement.java:247
com.realtime.crossfire.jxclient.gui.gui.AbstractGUIElement.name
final String name
Definition: AbstractGUIElement.java:77
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_OVERLOAD
static final int CS_STAT_OVERLOAD
Definition: Stats.java:341
com.realtime.crossfire.jxclient
com.realtime.crossfire.jxclient.skin.skin
Definition: DefaultJXCSkin.java:23
com.realtime.crossfire.jxclient.gui.label.GUILabelStats.statsListener
final StatsListener statsListener
Definition: GUILabelStats.java:65
com.realtime.crossfire.jxclient.stats.Stats.C_STAT_CURRENT_SKILL
static final int C_STAT_CURRENT_SKILL
Definition: Stats.java:532
com.realtime.crossfire.jxclient.util.Formatter.formatFloat
static String formatFloat(final double value, final int digits)
Definition: Formatter.java:77
com.realtime.crossfire.jxclient.stats.Stats.C_STAT_EXP_NEXT_LEVEL
static final int C_STAT_EXP_NEXT_LEVEL
Definition: Stats.java:104
com.realtime.crossfire.jxclient.gui.label.GUILabelStats.stat
final int stat
Definition: GUILabelStats.java:59
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_RANGE
static final int CS_STAT_RANGE
Definition: Stats.java:155
com.realtime.crossfire.jxclient.gui.label.AbstractLabel.text
String text
Definition: AbstractLabel.java:54
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_WEIGHT_LIM
static final int CS_STAT_WEIGHT_LIM
Definition: Stats.java:185
com.realtime.crossfire.jxclient.skin
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_TITLE
static final int CS_STAT_TITLE
Definition: Stats.java:160
com.realtime.crossfire.jxclient.gui.label.GUILabelStats.serialVersionUID
static final long serialVersionUID
Definition: GUILabelStats.java:48
com.realtime.crossfire.jxclient.skin.skin.GuiFactory
Definition: GuiFactory.java:41
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_EXP64
static final int CS_STAT_EXP64
Definition: Stats.java:195
com.realtime.crossfire.jxclient.stats.Stats
Definition: Stats.java:44
com.realtime.crossfire.jxclient.stats.Stats.getWeaponSpeed
double getWeaponSpeed()
Definition: Stats.java:979
com.realtime.crossfire.jxclient.gui.label.Alignment
Definition: Alignment.java:29
com.realtime.crossfire.jxclient.gui.label.GUILabelStats.GUILabelStats
GUILabelStats(@NotNull final TooltipManager tooltipManager, @NotNull final GUIElementListener elementListener, @NotNull final String name, @NotNull final Font textFont, @NotNull final Color textColor, @NotNull final Color textHighlightColor, @Nullable final Color backgroundColor, final int stat, @NotNull final Alignment alignment, @NotNull final Stats stats, @NotNull final GuiFactory guiFactory)
Definition: GUILabelStats.java:185
com.realtime.crossfire.jxclient.gui.label.GUILabelStats.isOverloaded
boolean isOverloaded()
Definition: GUILabelStats.java:217
com.realtime.crossfire.jxclient.stats.StatsListener
Definition: StatsListener.java:32
com.realtime.crossfire.jxclient.gui.label.AbstractLabel.textFont
final Font textFont
Definition: AbstractLabel.java:60
com.realtime.crossfire.jxclient.gui.label.AbstractLabel.textHighlightColor
final Color textHighlightColor
Definition: AbstractLabel.java:72
com.realtime.crossfire.jxclient.gui.gui.AbstractGUIElement.tooltipChanged
void tooltipChanged()
Definition: AbstractGUIElement.java:265
com.realtime.crossfire.jxclient.gui.label.GUILabelStats.stats
final Stats stats
Definition: GUILabelStats.java:54
com.realtime.crossfire.jxclient.stats.Stats.C_STAT_WEIGHT
static final int C_STAT_WEIGHT
Definition: Stats.java:190
com.realtime.crossfire.jxclient.stats.Stats.getStat
int getStat(final int statNo)
Definition: Stats.java:771
com.realtime.crossfire.jxclient.gui.label.GUILabelStats.dispose
void dispose()
Definition: GUILabelStats.java:193
com.realtime.crossfire.jxclient.gui.label.AbstractLabel.setTextHighlight
void setTextHighlight(final boolean textHighlight)
Definition: AbstractLabel.java:131
com.realtime.crossfire.jxclient.stats.Stats.getFloatStat
double getFloatStat(final int statNo)
Definition: Stats.java:780
com.realtime.crossfire.jxclient.gui.label.AbstractLabel.backgroundColor
final Color backgroundColor
Definition: AbstractLabel.java:85
com.realtime.crossfire.jxclient.gui.label.GUILabelStats
Definition: GUILabelStats.java:43
com.realtime.crossfire.jxclient.gui
com.realtime.crossfire.jxclient.gui.label.GUILabelStats.getTooltip
TooltipText getTooltip()
Definition: GUILabelStats.java:200
com.realtime.crossfire.jxclient.util.Formatter
Definition: Formatter.java:31
com.realtime.crossfire.jxclient.util
Definition: Codec.java:23
com.realtime.crossfire.jxclient.gui.gui.AbstractGUIElement.elementListener
final GUIElementListener elementListener
Definition: AbstractGUIElement.java:89
com.realtime.crossfire.jxclient.gui.gui.TooltipManager
Definition: TooltipManager.java:33
com.realtime.crossfire.jxclient.gui.gui
Definition: AbstractGUIElement.java:23
com.realtime.crossfire.jxclient.gui.label.AbstractLabel.setText
void setText(@NotNull final String text)
Definition: AbstractLabel.java:120
com.realtime.crossfire.jxclient.gui.gui.TooltipText
Definition: TooltipText.java:31
com.realtime.crossfire
com.realtime
com
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_CHARACTER_FLAGS
static final int CS_STAT_CHARACTER_FLAGS
Definition: Stats.java:330
com.realtime.crossfire.jxclient.stats.Stats.removeCrossfireStatsListener
void removeCrossfireStatsListener(@NotNull final StatsListener statsListener)
Definition: Stats.java:971
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_GOD_NAME
static final int CS_STAT_GOD_NAME
Definition: Stats.java:335
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_SPEED
static final int CS_STAT_SPEED
Definition: Stats.java:134
com.realtime.crossfire.jxclient.gui.gui.AbstractGUIElement.guiFactory
final GuiFactory guiFactory
Definition: AbstractGUIElement.java:48
com.realtime.crossfire.jxclient.gui.label.AbstractLabel.textColor
final Color textColor
Definition: AbstractLabel.java:66
com.realtime.crossfire.jxclient.gui.label.GUIOneLineLabel
Definition: GUIOneLineLabel.java:43
com.realtime.crossfire.jxclient.gui.gui.GUIElementListener
Definition: GUIElementListener.java:32
com.realtime.crossfire.jxclient.gui.gui.AbstractGUIElement.tooltipManager
final TooltipManager tooltipManager
Definition: AbstractGUIElement.java:83
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_WEAP_SP
static final int CS_STAT_WEAP_SP
Definition: Stats.java:149
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_EXP
static final int CS_STAT_EXP
Definition: Stats.java:99
com.realtime.crossfire.jxclient.stats
Definition: ActiveSkillWatcher.java:23