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.skin.io;
00023
00024 import com.realtime.crossfire.jxclient.gui.gauge.ActiveSkillGaugeUpdater;
00025 import com.realtime.crossfire.jxclient.gui.gauge.GaugeUpdater;
00026 import com.realtime.crossfire.jxclient.gui.gauge.SkillGaugeUpdater;
00027 import com.realtime.crossfire.jxclient.gui.gauge.StatGaugeUpdater;
00028 import com.realtime.crossfire.jxclient.items.ItemSet;
00029 import com.realtime.crossfire.jxclient.skills.SkillSet;
00030 import com.realtime.crossfire.jxclient.stats.ExperienceTable;
00031 import com.realtime.crossfire.jxclient.stats.Stats;
00032 import com.realtime.crossfire.jxclient.stats.StatsParser;
00033 import java.io.IOException;
00034 import org.jetbrains.annotations.NotNull;
00035
00040 public class GaugeUpdaterParser {
00041
00045 @NotNull
00046 private final Stats stats;
00047
00051 @NotNull
00052 private final ItemSet itemSet;
00053
00057 @NotNull
00058 private final SkillSet skillSet;
00059
00066 public GaugeUpdaterParser(@NotNull final Stats stats, @NotNull final ItemSet itemSet, @NotNull final SkillSet skillSet) {
00067 this.stats = stats;
00068 this.itemSet = itemSet;
00069 this.skillSet = skillSet;
00070 }
00071
00079 @NotNull
00080 public GaugeUpdater parseGaugeUpdater(@NotNull final String name, @NotNull final ExperienceTable experienceTable) throws IOException {
00081 try {
00082 return new StatGaugeUpdater(experienceTable, StatsParser.parseStat(name), stats, itemSet);
00083 } catch (final IllegalArgumentException ignored) {
00084
00085 }
00086
00087 if (name.startsWith("SKILL_")) {
00088 return new SkillGaugeUpdater(experienceTable, skillSet.getNamedSkill(name.substring(6).replaceAll("_", " ")));
00089 }
00090
00091 if (name.startsWith("ACTIVE_SKILL_")) {
00092 return new ActiveSkillGaugeUpdater(experienceTable, name.substring(13).replaceAll("_", " "), stats);
00093 }
00094
00095 throw new IOException("invalid stat name: "+name);
00096 }
00097
00098 }