package net.sourceforge.pain.logic.event.console.command.builder;
import net.sourceforge.pain.data.prototype.*;
import net.sourceforge.pain.logic.fn.*;
import net.sourceforge.pain.network.console.*;
/**
* PAiN Date: 05.06.2003 Time: 1:40:02
*/
public final class BC_Remove extends BuilderCommand {
public void processBuilderCommand(BuilderShell p, String args) throws Exception {
Prototype role = p.builder.getEditedRole();
if (role == null) {
MessageOutFn.outln(p.console, "No active role found!");
} else if (args == null) {
showHelp(p.console);
} else {
args = args.trim();
try {
Class protoClass = Class.forName("net.sourceforge.pain.data.prototype." + args);
if (!role.is(protoClass)) {
MessageOutFn.outln(p.console, "Role not found in active prototype:" + args);
} else if (protoClass == PrototypeInfo.class) {
MessageOutFn.outln(p.console, "PrototypeInfo can't not be removed!");
} else {
if (role.getClass() == protoClass) {
p.builder.setEditedRole((Prototype)role.getRole(PrototypeInfo.class));
}
role.removeRole(protoClass);
MessageOutFn.outln(p.console, "Role Removed:" + protoClass.getName());
}
} catch (ClassNotFoundException e) {
MessageOutFn.outln(p.console, "No prototype found with name:" + args);
}
}
}
public void showHelp(Console console) {
MessageOutFn.outln(console, "Builder command REMOVE removes specified role from the active prototype");
MessageOutFn.outln(console, "Usage: remove <Prototype_Role_Name>");
}
}