Minor changes because we use a map instead of a list

This commit is contained in:
snowleo 2011-10-23 23:20:18 +02:00
parent b07b3fc373
commit 9c793208ad

View file

@ -2,6 +2,8 @@ package com.earth2me.essentials.update.states;
import com.earth2me.essentials.update.WorkListener; import com.earth2me.essentials.update.WorkListener;
import com.earth2me.essentials.update.VersionInfo; import com.earth2me.essentials.update.VersionInfo;
import java.util.Collections;
import java.util.Iterator;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
@ -24,7 +26,7 @@ public class StateMachine extends WorkListener
states.clear(); states.clear();
states.add(new EssentialsChat(states)); states.add(new EssentialsChat(states));
states.add(new EssentialsProtect(states)); states.add(new EssentialsProtect(states));
current = states.get(0); current = states.values().iterator().next();
} }
public MachineResult askQuestion() public MachineResult askQuestion()
@ -58,16 +60,17 @@ public class StateMachine extends WorkListener
current = next; current = next;
return askQuestion(); return askQuestion();
} }
private int position = 0; private transient Iterator<AbstractState> iterator;
public void startWork() public void startWork()
{ {
iterator = states.values().iterator();
callStateWork(); callStateWork();
} }
private void callStateWork() private void callStateWork()
{ {
if (position > states.size()) if (!iterator.hasNext())
{ {
if (player.isOnline()) if (player.isOnline())
{ {
@ -75,14 +78,13 @@ public class StateMachine extends WorkListener
} }
return; return;
} }
final AbstractState state = states.get(position); final AbstractState state = iterator.next();
state.doWork(this); state.doWork(this);
} }
@Override @Override
public void onWorkAbort(final String message) public void onWorkAbort(final String message)
{ {
position = 0;
Bukkit.getScheduler().scheduleSyncDelayedTask(getPlugin(), new Runnable() Bukkit.getScheduler().scheduleSyncDelayedTask(getPlugin(), new Runnable()
{ {
@Override @Override
@ -99,7 +101,6 @@ public class StateMachine extends WorkListener
@Override @Override
public void onWorkDone(final String message) public void onWorkDone(final String message)
{ {
position++;
Bukkit.getScheduler().scheduleSyncDelayedTask(getPlugin(), new Runnable() Bukkit.getScheduler().scheduleSyncDelayedTask(getPlugin(), new Runnable()
{ {
@Override @Override