00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 package com.realtime.crossfire.jxclient.gui.label;
00023
00024 import com.realtime.crossfire.jxclient.gui.gui.GUIElementListener;
00025 import com.realtime.crossfire.jxclient.gui.gui.TooltipManager;
00026 import com.realtime.crossfire.jxclient.stats.Stats;
00027 import com.realtime.crossfire.jxclient.stats.StatsListener;
00028 import com.realtime.crossfire.jxclient.util.Formatter;
00029 import java.awt.Color;
00030 import java.awt.Font;
00031 import org.jetbrains.annotations.NotNull;
00032 import org.jetbrains.annotations.Nullable;
00033
00040 public class GUILabelStats extends GUIOneLineLabel {
00041
00045 private static final long serialVersionUID = 1;
00046
00050 @NotNull
00051 private final Stats stats;
00052
00056 private final int stat;
00057
00061 @NotNull
00062 private final StatsListener statsListener = new StatsListener() {
00063
00064 @Override
00065 public void reset() {
00066
00067 }
00068
00069 @Override
00070 public void statChanged(final int statNo, final int value) {
00071 switch (stat) {
00072 case Stats.CS_STAT_SPEED:
00073 if (stat == statNo) {
00074 setText(Formatter.formatFloat(stats.getFloatStat(stat), 2));
00075 }
00076 break;
00077
00078 case Stats.CS_STAT_WEAP_SP:
00079 if (stat == statNo) {
00080 setText(Formatter.formatFloat(stats.getWeaponSpeed(), 2));
00081 }
00082 break;
00083
00084 case Stats.CS_STAT_WEIGHT_LIM:
00085 case Stats.C_STAT_WEIGHT:
00086 if (stat == statNo) {
00087
00088 setText(Formatter.formatFloat(((value+50)/100)/10.0, 1));
00089 setTooltipText(Formatter.formatFloat(value/1000.0, 3)+"kg");
00090 }
00091 break;
00092
00093 default:
00094 if (stat == statNo) {
00095 setText(String.valueOf(value));
00096 }
00097 break;
00098 }
00099 }
00100
00101 @Override
00102 public void simpleWeaponSpeedChanged(final boolean simpleWeaponSpeed) {
00103
00104 }
00105
00106 @Override
00107 public void titleChanged(@NotNull final String title) {
00108 if (stat == Stats.CS_STAT_TITLE) {
00109 setText(title);
00110 }
00111 }
00112
00113 @Override
00114 public void rangeChanged(@NotNull final String range) {
00115 if (stat != Stats.CS_STAT_RANGE) {
00116 return;
00117 }
00118
00119 final String text;
00120 if (range.startsWith("Range: spell ")) {
00121 text = range.substring(13);
00122 } else if (range.startsWith("Range: ")) {
00123 text = range.substring(7);
00124 } else if (range.startsWith("Skill: ")) {
00125 text = range.substring(7);
00126 } else {
00127 text = range;
00128 }
00129 setText(text);
00130 }
00131
00132 @Override
00133 public void activeSkillChanged(@NotNull final String activeSkill) {
00134
00135 }
00136
00137 @Override
00138 public void experienceChanged(final long exp) {
00139 if (stat == Stats.CS_STAT_EXP || stat == Stats.CS_STAT_EXP64) {
00140 setText(String.valueOf(exp));
00141 }
00142 }
00143
00144 @Override
00145 public void experienceNextLevelChanged(final long expNextLevel) {
00146 if (stat == Stats.C_STAT_EXP_NEXT_LEVEL) {
00147 setText(String.valueOf(expNextLevel));
00148 }
00149 }
00150
00151 };
00152
00165 public GUILabelStats(@NotNull final TooltipManager tooltipManager, @NotNull final GUIElementListener elementListener, @NotNull final String name, @NotNull final Font font, @NotNull final Color color, @Nullable final Color backgroundColor, final int stat, @NotNull final Alignment alignment, @NotNull final Stats stats) {
00166 super(tooltipManager, elementListener, name, null, font, color, backgroundColor, alignment, "");
00167 this.stats = stats;
00168 this.stat = stat;
00169 this.stats.addCrossfireStatsListener(statsListener);
00170 }
00171
00175 @Override
00176 public void dispose() {
00177 super.dispose();
00178 stats.removeCrossfireStatsListener(statsListener);
00179 }
00180
00181 }