/
area/
classes/net/sourceforge/pain/console/
classes/net/sourceforge/pain/logic/
classes/net/sourceforge/pain/logic/event/
classes/net/sourceforge/pain/logic/fn/util/
classes/net/sourceforge/pain/plugin/
classes/net/sourceforge/pain/plugin/reset/
classes/net/sourceforge/pain/plugin/shutdown/
classes/net/sourceforge/pain/plugin/social/
classes/net/sourceforge/pain/util/
classest/net/sourceforge/pain/db/data/
doc/
doc/paindb/resources/
src/net/sourceforge/pain/console/
src/net/sourceforge/pain/console/telnet/
src/net/sourceforge/pain/logic/
src/net/sourceforge/pain/logic/event/
src/net/sourceforge/pain/logic/fn/util/
src/net/sourceforge/pain/plugin/
src/net/sourceforge/pain/plugin/command/
src/net/sourceforge/pain/plugin/reset/
src/net/sourceforge/pain/plugin/shutdown/
src/net/sourceforge/pain/plugin/social/
src/net/sourceforge/pain/util/
tests/net/sourceforge/pain/db/data/
package net.sourceforge.pain.logic.event.console.command.builder;

import net.sourceforge.pain.*;
import net.sourceforge.pain.console.*;
import net.sourceforge.pain.data.*;
import net.sourceforge.pain.data.prototype.*;
import net.sourceforge.pain.data.type.*;
import net.sourceforge.pain.logic.event.console.*;
import net.sourceforge.pain.logic.fn.*;

import java.util.*;

/**
 * PAiN  Date: 05.06.2003  Time: 1:40:02
 */
public final class BC_Reset extends BuilderCommand {

	public void processBuilderCommand(BuilderShell p, String args) throws Exception {
		Prototype role = p.builder.getEditedRole();
		PrototypeInfo resettedPrototype;
		if (role == null || (resettedPrototype = (PrototypeInfo) role.getRole(PrototypeInfo.class)) == null) {
			MessageOutFn.outln(p.console, "No active prototype found!");
			return;
		}

		if (args == null || args.length() < 3) {
			showHelp(p.console);
			return;
		}
		String result[] = new String[2];
		ConsoleInputEvent.parseCommand(args, result);
		String uniqueSpaceId = result[0];
		String resetGroupId = result[1];
		if (resetGroupId == null) {
			showHelp(p.console);
			return;
		}
		IndexedSpace is = Core.getWorld().getIndexedSpacesRegistry().getSpace(uniqueSpaceId);
		if (is == null) {
			MessageOutFn.outln(p.console, "Indexed Space is not found: '" + uniqueSpaceId + "'");
			return;
		}
		Space space = is.asSpace();

		ResetGroupRegistry resetGroupRegistry = Core.getWorld().getResetGroupRegistry();
		ResetGroup rg = resetGroupRegistry.getResetGroup(resetGroupId);
		if (rg == null) {
			MessageOutFn.outln(p.console, "Reset group not found: '" + resetGroupId + "'");
			MessageOutFn.outln(p.console, "Available reset groups:");
			Collection resetGroups = resetGroupRegistry.getResetGroups();
			for (Iterator it = resetGroups.iterator(); it.hasNext();) {
				rg = (ResetGroup) it.next();
				MessageOutFn.outln(p.console, "\t" + rg.getGroupId() + " \t\t" + rg.getGroupInfo());
			}
			MessageOutFn.outln(p.console, "Total: " + resetGroups.size());
			return;
		}
		SpaceReset spaceReset = (SpaceReset) ObjectFactory.create(SpaceReset.class);
		spaceReset.setResettedPrototype(resettedPrototype);
		spaceReset.setLocation(space);
		RelocateFn.addToSpace(space, spaceReset.asLocated());
		rg.addReset(spaceReset.asReset());
		p.builder.setEditedRole(null);
		p.builder.getPrototypes().remove(resettedPrototype);

		MessageOutFn.outln(p.console, "Prototype :" + resettedPrototype.getName() + " was resetted in " + space.getName());
		MessageOutFn.outln(p.console, "Reset group used:" + rg.getGroupInfo());

	}


	public void showHelp(Console console) {
		MessageOutFn.outln(console, "Builder command RESET resets the edited prototype.");
		MessageOutFn.outln(console, "Usage: reset <unique_room_id> <reset_group_id>");
	}

}