diff options
author | snowleo <schneeleo@gmail.com> | 2011-10-23 21:45:01 +0200 |
---|---|---|
committer | snowleo <schneeleo@gmail.com> | 2011-10-23 21:45:01 +0200 |
commit | 9433acf6896eeea49e4c72a4acdf11cc619f8d44 (patch) | |
tree | 3620736ed675382e7dd1e7a2c7f25ec41574a00d /EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java | |
parent | aa922c5b67dc6d9fc5ef865edb9269397a687e13 (diff) | |
download | Essentials-9433acf6896eeea49e4c72a4acdf11cc619f8d44.tar Essentials-9433acf6896eeea49e4c72a4acdf11cc619f8d44.tar.gz Essentials-9433acf6896eeea49e4c72a4acdf11cc619f8d44.tar.lz Essentials-9433acf6896eeea49e4c72a4acdf11cc619f8d44.tar.xz Essentials-9433acf6896eeea49e4c72a4acdf11cc619f8d44.zip |
Statemachine for installation wizard (WIP)
Diffstat (limited to 'EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java')
-rw-r--r-- | EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java b/EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java new file mode 100644 index 000000000..b217ebd4b --- /dev/null +++ b/EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java @@ -0,0 +1,67 @@ +package com.earth2me.essentials.update.states; + +import com.earth2me.essentials.update.WorkListener; +import org.bukkit.entity.Player; + + +public abstract class AbstractState +{ + private transient boolean abortion = false; + + public abstract AbstractState getNextState(); + + /** + * Check if we already know the answer, so the user does not have to answer the question. + * + * @return true, if the answer could be guessed. + */ + public boolean guessAnswer() + { + return false; + } + + /** + * Ask the user the question. + * @param sender + */ + public abstract void askQuestion(Player sender); + + /** + * React on the answer and set internal variables + * @param answer + * @return true, if the answer could be recognized as a valid answer + */ + public abstract boolean reactOnAnswer(String answer); + + public final AbstractState reactOnAnswer(final Player sender, final String answer) + { + final String trimmedAnswer = answer.trim(); + if (trimmedAnswer.equalsIgnoreCase("quit") + || trimmedAnswer.equalsIgnoreCase("bye") + || trimmedAnswer.equalsIgnoreCase("abort")) + { + abortion = true; + return null; + } + final boolean found = reactOnAnswer(trimmedAnswer); + if (found) + { + return getNextState(); + } + else + { + sender.sendMessage("Answer not recognized."); + return this; + } + } + + /** + * Do something based on the answer, that the user gave. + */ + public abstract void doWork(WorkListener workListener); + + public boolean isAbortion() + { + return abortion; + } +} |