package net.sourceforge.pain.logic.event;
import net.sourceforge.pain.*;
import net.sourceforge.pain.data.type.*;
import net.sourceforge.pain.db.*;
import net.sourceforge.pain.logic.fn.*;
import java.util.*;
/**
* PAiN Date: 14.04.2003 Time: 0:38:36
*/
public class CheckSafeShutdown extends AbstractEvent {
public Object execute(Object param) throws Exception {
final PainDB db = Core.getDB();
final DbClass playerClass = db.getDbClass(Player.class);
final Space commonQuitSpace = Core.getWorld().getPlayersQuitSpace();
if (playerClass != null) { // if db is empty this class could be absent
for (Iterator it = playerClass.extentIterator(false); it.hasNext();) {
final Player p = (Player) it.next();
final Located located = p.asLocated();
final Space lastLocation = located.getLocation();
if (lastLocation != commonQuitSpace) {
RelocateFn.relocate(located, commonQuitSpace);
p.setQuitSpace(lastLocation);
}
p.setNextActivePlayer(null);
p.setPrevActivePlayer(null);
}
Core.getWorld().setFirstActivePlayer(null);
return null;
}
return "ok";
}
}