package net.sourceforge.pain.tinylib.logic.event;
import net.sourceforge.pain.*;
import net.sourceforge.pain.network.console.*;
import net.sourceforge.pain.tinylib.*;
import net.sourceforge.pain.tinylib.data.type.*;
import net.sourceforge.pain.tinylib.logic.fn.*;
import net.sourceforge.pain.util.*;
import java.util.*;
/**
* PAiN Date: 20.05.2003 Time: 1:11:25
*/
public class LogicReloadingEvent extends AbstractEvent {
public Object execute(Object param) throws Exception {
stopActiveSubShells();
return null;
}
private void stopActiveSubShells() {
// Moving all consoles to command mode!
final UserConsoleManager cm = Codebase.getUserConsoleManager();
for (Iterator it = cm.consoles().iterator(); it.hasNext();) {
Console c = (Console) it.next();
final Player p = c.getPlayer();
if (p != null) {
Log.debug(p.asInteractive().getName() + " raw:" + c.isRawMode());
if (c.isRawMode() && c.getPlayer() != null) {
c.setCommandMode();
MessageOutFn.outln(c, "{wCode reloaded!{x");
ShowFn.showSpace(p.asReceptive(), p.asLocated().getLocation());
} else {
c.setCommandMode();
}
} else {// player is just logging in
MessageOutFn.outln(c, "\n{WAction aborted, server code is reloading!{x");
c.setCommandMode();
cm.closeConsole(c);
}
}
}
}