package ring.commands.mud;
import java.util.List;
import com.aelfengard.i3.I3NotConnectedException;
import ring.commands.Command;
import ring.commands.CommandParameters;
import ring.commands.CommandResult;
import ring.commands.CommandSender;
import ring.commands.CommandParameters.CommandType;
import ring.intermud3.Intermud3Client;
import ring.intermud3.Intermud3Daemon;
import ring.players.PlayerCharacter;
public class I3 implements Command {
@Override
public void execute(CommandSender sender, CommandParameters params) {
params.init(CommandType.TEXT);
CommandResult res = new CommandResult();
res.setFailText("This MUD is not connected to I3.");
//Continue onwards.
String op = params.getParameterAsText(0);
PlayerCharacter pc = (PlayerCharacter)sender;
System.out.println("daemon: " + Intermud3Daemon.currentDaemon());
System.out.println("player: " + pc.getPlayer());
Intermud3Client client = Intermud3Daemon.currentDaemon().getClientForPlayer(pc.getPlayer());
if (!client.isConnected()) {
res.send();
return;
}
String result = "";
if (op.equalsIgnoreCase("muds")) {
result = "List of MUDs:\n";
List<String> muds = client.getMuds();
for (String mud : muds) {
result += mud + "\n";
}
res.setSuccessful(true);
res.setText(result);
res.send();
}
else if (op.equalsIgnoreCase("channels")) {
result = "List of Channels:\n";
List<String> channels = client.getChannels();
for (String channel : channels) {
result += channel + "\n";
}
res.setSuccessful(true);
res.setText(result);
res.send();
}
else if (op.equalsIgnoreCase("who")) {
String mudName = params.getTextParameters(1);
try {
client.submitWhoRequest(mudName);
res.setText("Who request for [B]" + mudName + "[R] submitted.");
res.setSuccessful(true);
} catch (I3NotConnectedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else if (op.equalsIgnoreCase("tell")) {
String[] target = params.getParameterAsText(1).split("@");
String message = params.getTextParameters(2);
System.out.println("tell mud: " + target[1]);
System.out.println("tell user: " + target[0]);
client.sendTell(target[1], target[0], message);
res.setText("You tell [B]" + target[0] + "@" + target[1] + "[R]: " + message);
res.setSuccessful(true);
}
}
@Override
public String getCommandName() {
return "i3";
}
@Override
public void rollback() {
}
}