21 package com.realtime.crossfire.jxclient.quests;
27 import java.util.Collections;
28 import java.util.Comparator;
29 import java.util.List;
30 import java.util.concurrent.CopyOnWriteArrayList;
31 import org.jetbrains.annotations.NotNull;
32 import org.jetbrains.annotations.Nullable;
44 private final List<Quest>
quests =
new CopyOnWriteArrayList<>();
65 @SuppressWarnings(
"FieldCanBeLocal")
74 public void metaserver() {
79 public void preConnecting(@NotNull
final String serverInfo) {
84 public void connecting(@NotNull
final String serverInfo) {
94 public void connected() {
99 public void connectFailed(@NotNull
final String reason) {
118 listeners.
add(listener);
126 listeners.
remove(listener);
140 public void addQuest(
final int code, @NotNull
final String title,
final int face,
final boolean replay,
final int parent,
final boolean end, @NotNull
final String description) {
141 final Quest key =
new Quest(code, title, face, replay, parent, end, description);
143 int index = Collections.binarySearch(quests, key, questComparator);
146 quests.add(index, key);
148 final Quest quest = quests.get(index);
149 quest.
setStep(end, description);
153 listener.questAdded(index);
163 public void updateQuest(
final int code,
final boolean end, @NotNull
final String step) {
164 for (
final Quest quest : quests) {
165 if (quest.getCode() == code) {
166 quest.setStep(end, step);
177 return quests.size();
187 return 0 <= index && index < quests.size() ? quests.get(index) : null;
196 for (
final Quest quest : quests) {
197 if (quest.getFace() == faceNum) {
Interface for listeners interested gui state changes.
Maintains the current GuiState.
final Comparator< Quest > questComparator
A Comparator to compare Quest instances by title and code.
Describes an in-game quest.
void updateQuest(final int code, final boolean end, @NotNull final String step)
Updates quest information.
A list of event listeners.
A Comparator to compare Quest instances by title and code.
final List< Quest > quests
All quests.
void removeCrossfireQuestChangedListener(@NotNull final QuestsManagerListener listener)
Removes a QuestsManagerListener to notify about changes.
int getQuests()
Returns the number of current quests.
boolean displaysFace(final int faceNum)
Returns whether any quest has the given face.
Manages all quests for a player.
QuestsManager(@NotNull final GuiStateManager guiStateManager)
Creates a new instance.
final GuiStateListener guiStateListener
The GuiStateListener for detecting established or dropped connections.
void add(@NotNull final T listener)
Adds a listener.
final EventListenerList2< QuestsManagerListener > listeners
The QuestsManagerListeners to notify about changes.
void addQuest(final int code, @NotNull final String title, final int face, final boolean replay, final int parent, final boolean end, @NotNull final String description)
Adds a new quest.
Interface for listeners interested in QuestsManager events.
void setStep(final boolean end, @NotNull final String step)
Update the quest's state.
void selectCharacter()
A character name was sent to the server.
void addCrossfireQuestChangedListener(@NotNull final QuestsManagerListener listener)
Adds a QuestsManagerListener to notify about changes.
void remove(@NotNull final T listener)
Removes a listener.
Connection progress states of the Crossfire server connection.
Quest getQuest(final int index)
Returns a Quest instance by index.