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.skills;
00023
00024 import com.realtime.crossfire.jxclient.guistate.ClientSocketState;
00025 import com.realtime.crossfire.jxclient.guistate.GuiStateListener;
00026 import com.realtime.crossfire.jxclient.guistate.GuiStateManager;
00027 import com.realtime.crossfire.jxclient.stats.Stats;
00028 import java.util.Arrays;
00029 import java.util.HashMap;
00030 import java.util.Map;
00031 import org.jetbrains.annotations.NotNull;
00032 import org.jetbrains.annotations.Nullable;
00033
00038 public class SkillSet {
00039
00044 @NotNull
00045 private final Skill[] numberedSkills = new Skill[Stats.CS_NUM_SKILLS];
00046
00050 @NotNull
00051 private final Map<String, Skill> namedSkills = new HashMap<String, Skill>();
00052
00057 @NotNull
00058 private final GuiStateListener guiStateListener = new GuiStateListener() {
00059
00060 @Override
00061 public void start() {
00062
00063 }
00064
00065 @Override
00066 public void metaserver() {
00067
00068 }
00069
00070 @Override
00071 public void preConnecting(@NotNull final String serverInfo) {
00072
00073 }
00074
00075 @Override
00076 public void connecting(@NotNull final String serverInfo) {
00077 clearNumberedSkills();
00078 }
00079
00080 @Override
00081 public void connecting(@NotNull final ClientSocketState clientSocketState) {
00082
00083 }
00084
00085 @Override
00086 public void connected() {
00087
00088 }
00089
00090 @Override
00091 public void connectFailed(@NotNull final String reason) {
00092
00093 }
00094
00095 };
00096
00101 public SkillSet(@NotNull final GuiStateManager guiStateManager) {
00102 guiStateManager.addGuiStateListener(guiStateListener);
00103 }
00104
00108 public void clearSkills() {
00109 clearNumberedSkills();
00110 Arrays.fill(numberedSkills, null);
00111 }
00112
00118 public void addSkill(final int id, @NotNull final String skillName) {
00119 final int index = id-Stats.CS_STAT_SKILLINFO;
00120 final Skill oldSkill = numberedSkills[index];
00121 final Skill newSkill = getNamedSkill(skillName);
00122 if (oldSkill == newSkill) {
00123 return;
00124 }
00125
00126 if (oldSkill != null) {
00127 oldSkill.set(0, 0);
00128 }
00129 numberedSkills[index] = newSkill;
00130 }
00131
00137 public Skill getNamedSkill(final String skillName) {
00138 final Skill oldSkill = namedSkills.get(skillName);
00139 if (oldSkill != null) {
00140 return oldSkill;
00141 }
00142
00143 final Skill newSkill = new Skill(skillName);
00144 namedSkills.put(skillName, newSkill);
00145 return newSkill;
00146 }
00147
00151 public void clearNumberedSkills() {
00152 for (final Skill skill : numberedSkills) {
00153 if (skill != null) {
00154 skill.set(0, 0);
00155 }
00156 }
00157 }
00158
00165 @Nullable
00166 public Skill getSkill(final int id) {
00167 return numberedSkills[id-Stats.CS_STAT_SKILLINFO];
00168 }
00169
00170 }