package nl.tudelft.bw4t.client.message;
import java.util.StringTokenizer;
public interface StringToMessageCommand {
BW4TMessage getMessage(String message);
}
class CommandType implements StringToMessageCommand {
MessageType type;
public CommandType(MessageType type) {
this.type = type;
}
@Override
public BW4TMessage getMessage(String message) {
return new BW4TMessage(type);
}
}
class CommandRoom implements StringToMessageCommand {
MessageType type;
public CommandRoom(MessageType type) {
this.type = type;
}
@Override
public BW4TMessage getMessage(String message) {
return new BW4TMessage(type, MessageTranslator.findRoomId(message), MessageTranslator.findColorId(message), Integer.MAX_VALUE);
}
}
class CommandColor implements StringToMessageCommand {
MessageType type;
public CommandColor(MessageType type) {
this.type = type;
}
@Override
public BW4TMessage getMessage(String message) {
return new BW4TMessage(type, MessageTranslator.findRoomId(message), MessageTranslator.findColorId(message), Integer.MAX_VALUE);
}
}
class CommandRoomColor implements StringToMessageCommand {
MessageType type;
public CommandRoomColor(MessageType type) {
this.type = type;
}
@Override
public BW4TMessage getMessage(String message) {
return new BW4TMessage(type, MessageTranslator.findRoomId(message), MessageTranslator.findColorId(message),
Integer.MAX_VALUE);
}
}
class CommandRoomColorPlayer implements StringToMessageCommand {
String message;
MessageType type;
String playerId;
public CommandRoomColorPlayer(MessageType type) {
this.type = type;
}
@Override
public BW4TMessage getMessage(String message) {
playerId = new StringTokenizer(message, ", ").nextToken();
return new BW4TMessage(type, MessageTranslator.findRoomId(message), MessageTranslator.findColorId(message),
playerId);
}
}
class CommandRoomColorNumber implements StringToMessageCommand {
MessageType type;
public CommandRoomColorNumber(MessageType type) {
this.type = type;
}
@Override
public BW4TMessage getMessage(String message) {
return new BW4TMessage(type, MessageTranslator.findRoomId(message), MessageTranslator.findColorId(message),
MessageTranslator.findNumber(message));
}
}
class CommandContainsBy implements StringToMessageCommand {
MessageType type;
String playerId;
public CommandContainsBy(MessageType type) {
this.type = type;
}
@Override
public BW4TMessage getMessage(String message) {
if (message.contains("by")) {
String[] splitMessage = message.split(" ");
playerId = splitMessage[splitMessage.length - 1];
}
return new BW4TMessage(type, MessageTranslator.findRoomId(message), MessageTranslator.findColorId(message), playerId);
}
}
class CommandContains implements StringToMessageCommand {
private MessageType type;
public CommandContains() {
}
@Override
public BW4TMessage getMessage(String message) {
int number = MessageTranslator.findNumber(message);
if (number == Integer.MAX_VALUE) {
type = MessageType.ROOMCONTAINS;
} else {
type = MessageType.ROOMCONTAINSAMOUNT;
}
return new BW4TMessage(type, MessageTranslator.findRoomId(message), MessageTranslator.findColorId(message),
number);
}
}