Crossfire JXClient, Trunk
KnowledgeManager.java
Go to the documentation of this file.
1 package com.realtime.crossfire.jxclient.knowledge;
2 
7 import java.util.ArrayList;
8 import java.util.Collection;
9 import java.util.Comparator;
10 import java.util.List;
11 import java.util.stream.Collectors;
12 import org.jetbrains.annotations.NotNull;
13 import org.jetbrains.annotations.Nullable;
14 
19 public class KnowledgeManager {
20 
24  @NotNull
25  private static final Comparator<KnowledgeItem> KNOWLEDGE_COMPARATOR = (o1, o2) -> o1.getKnowledgeTitle().compareToIgnoreCase(o2.getKnowledgeTitle());
26 
31  @NotNull
33 
34  @NotNull
35  private final List<String> types = new ArrayList<>();
36 
37  @NotNull
38  private final List<String> names = new ArrayList<>();
39 
40  @NotNull
41  private final List<Integer> faces = new ArrayList<>();
42 
43  @NotNull
44  private final List<Boolean> attempt = new ArrayList<>();
45 
46  @NotNull
47  private final Collection<KnowledgeItem> items = new ArrayList<>();
48 
49  @NotNull
50  private final List<KnowledgeItem> filteredItems = new ArrayList<>();
51 
52  @NotNull
53  private String typeFilter = "";
54 
59  @NotNull
60  @SuppressWarnings("FieldCanBeLocal")
62 
63  @Override
64  public void start() {
65  // ignore
66  }
67 
68  @Override
69  public void metaserver() {
70  // ignore
71  }
72 
73  @Override
74  public void preConnecting(@NotNull final String serverInfo) {
75  // ignore
76  }
77 
78  @Override
79  public void connecting(@NotNull final String serverInfo) {
80  types.clear();
81  faces.clear();
82  names.clear();
83  attempt.clear();
84  items.clear();
85  filteredItems.clear();
86  }
87 
88  @Override
89  public void connecting(@NotNull final ClientSocketState clientSocketState, @NotNull final String param) {
90  // ignore
91  }
92 
93  @Override
94  public void connected() {
95  // ignore
96  }
97 
98  @Override
99  public void connectFailed(@NotNull final String reason) {
100  // ignore
101  }
102 
103  };
104 
105  public KnowledgeManager(@NotNull final GuiStateManager guiStateManager) {
106  guiStateManager.addGuiStateListener(guiStateListener);
107  }
108 
112  public void selectCharacter() {
113  items.clear();
114  filteredItems.clear();
115  }
116 
121  public void addKnowledgeListener(@NotNull final KnowledgeListener listener) {
122  listeners.add(listener);
123  }
124 
125  public void addKnowledgeType(@NotNull final String type, @NotNull final String name, final int face, final boolean canAttempt) {
126  types.add(type);
127  if (type.isEmpty()) {
128  names.add("All types");
129  } else {
130  names.add(name);
131  }
132  faces.add(face);
133  attempt.add(canAttempt);
134  for (KnowledgeListener listener : listeners) {
135  listener.typeAdded(0);
136  }
137  }
138 
139  public void clearTypes() {
140  types.clear();
141  names.clear();
142  faces.clear();
143  attempt.clear();
144  }
145 
146  public int getTypes() {
147  return types.size();
148  }
149 
150  @NotNull
151  public String getTypeName(final int index) {
152  if (index < 0 || index >= faces.size()) {
153  return "";
154  }
155  return names.get(index);
156  }
157 
158  public int getTypeFace(final int index) {
159  if (index < 0 || index >= faces.size()) {
160  return 0;
161  }
162  return faces.get(index);
163  }
164 
165  public boolean canAttemptType(@NotNull final String type) {
166  for (int i = 0; i < types.size(); i++) {
167  if (type.equals(types.get(i))) {
168  return attempt.get(i);
169  }
170  }
171 
172  return false;
173  }
174 
175  public void addKnowledge(final int index, @NotNull final String type, @NotNull final String title, final int face) {
176  items.add(new KnowledgeItem(index, type, title, face));
177  filterKnowledge();
178  for (KnowledgeListener listener : listeners) {
179  listener.knowledgeAdded(0);
180  }
181  }
182 
183  public int getKnowledgeCount() {
184  return filteredItems.size();
185  }
186 
192  @Nullable
193  public KnowledgeItem getKnowledge(final int index) {
194  try {
195  return filteredItems.get(index);
196  } catch (final IndexOutOfBoundsException ignored) {
197  return null;
198  }
199  }
200 
201  public void filterType(final int index) {
202  if (index < 0 || index >= types.size()) {
203  return;
204  }
205 
206  final String filter = types.get(index);
207 
208  if (typeFilter.equals(filter)) {
209  return;
210  }
211 
212  typeFilter = filter;
213  filterKnowledge();
214 
215  for (KnowledgeListener listener : listeners) {
216  listener.knowledgeAdded(0);
217  }
218  }
219 
220  private void filterKnowledge() {
221  filteredItems.clear();
222  filteredItems.addAll(items.stream().filter(item -> typeFilter.isEmpty() || item.getType().equals(typeFilter)).collect(Collectors.toList()));
224  }
225 
226 }
com.realtime.crossfire.jxclient
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.getKnowledge
KnowledgeItem getKnowledge(final int index)
Definition: KnowledgeManager.java:193
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.KNOWLEDGE_COMPARATOR
static final Comparator< KnowledgeItem > KNOWLEDGE_COMPARATOR
Definition: KnowledgeManager.java:25
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.KnowledgeManager
KnowledgeManager(@NotNull final GuiStateManager guiStateManager)
Definition: KnowledgeManager.java:105
com.realtime.crossfire.jxclient.guistate.ClientSocketState
Definition: ClientSocketState.java:30
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.listeners
final EventListenerList2< KnowledgeListener > listeners
Definition: KnowledgeManager.java:32
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.names
final List< String > names
Definition: KnowledgeManager.java:38
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.getTypes
int getTypes()
Definition: KnowledgeManager.java:146
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.filteredItems
final List< KnowledgeItem > filteredItems
Definition: KnowledgeManager.java:50
com.realtime.crossfire.jxclient.util.EventListenerList2
Definition: EventListenerList2.java:37
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.filterKnowledge
void filterKnowledge()
Definition: KnowledgeManager.java:220
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.addKnowledgeListener
void addKnowledgeListener(@NotNull final KnowledgeListener listener)
Definition: KnowledgeManager.java:121
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.canAttemptType
boolean canAttemptType(@NotNull final String type)
Definition: KnowledgeManager.java:165
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.getTypeName
String getTypeName(final int index)
Definition: KnowledgeManager.java:151
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.attempt
final List< Boolean > attempt
Definition: KnowledgeManager.java:44
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.addKnowledgeType
void addKnowledgeType(@NotNull final String type, @NotNull final String name, final int face, final boolean canAttempt)
Definition: KnowledgeManager.java:125
com.realtime.crossfire.jxclient.guistate.GuiStateManager
Definition: GuiStateManager.java:34
com.realtime.crossfire.jxclient.guistate
Definition: ClientSocketState.java:23
com.realtime.crossfire.jxclient.guistate.GuiStateListener
Definition: GuiStateListener.java:32
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.guiStateListener
final GuiStateListener guiStateListener
Definition: KnowledgeManager.java:61
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.getTypeFace
int getTypeFace(final int index)
Definition: KnowledgeManager.java:158
com.realtime.crossfire.jxclient.knowledge.KnowledgeItem
Definition: KnowledgeItem.java:32
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.typeFilter
String typeFilter
Definition: KnowledgeManager.java:53
com.realtime.crossfire.jxclient.util
Definition: Codec.java:23
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.filterType
void filterType(final int index)
Definition: KnowledgeManager.java:201
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.addKnowledge
void addKnowledge(final int index, @NotNull final String type, @NotNull final String title, final int face)
Definition: KnowledgeManager.java:175
com.realtime.crossfire
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.clearTypes
void clearTypes()
Definition: KnowledgeManager.java:139
com.realtime
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager
Definition: KnowledgeManager.java:19
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.getKnowledgeCount
int getKnowledgeCount()
Definition: KnowledgeManager.java:183
com
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.items
final Collection< KnowledgeItem > items
Definition: KnowledgeManager.java:47
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.faces
final List< Integer > faces
Definition: KnowledgeManager.java:41
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.types
final List< String > types
Definition: KnowledgeManager.java:35
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.selectCharacter
void selectCharacter()
Definition: KnowledgeManager.java:112
com.realtime.crossfire.jxclient.knowledge.KnowledgeListener
Definition: KnowledgeListener.java:30