Fixed InputToProtocolMap to now contain a encoding map from client input to protocol msg and a set of legal client inputs.
This commit is contained in:
parent
3f05121925
commit
8f0ccbfa36
@ -1,8 +1,6 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.Klassenstruktur;
|
package ch.unibas.dmi.dbis.cs108.Klassenstruktur;
|
||||||
|
|
||||||
import ch.unibas.dmi.dbis.cs108.Multiplayer.Server.ClientHandler;
|
import ch.unibas.dmi.dbis.cs108.multiplayer.server.ClientHandler;
|
||||||
|
|
||||||
import java.net.Socket;
|
|
||||||
|
|
||||||
public class GhostPlayer extends Ghost{
|
public class GhostPlayer extends Ghost{
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,6 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.Klassenstruktur;
|
package ch.unibas.dmi.dbis.cs108.Klassenstruktur;
|
||||||
|
|
||||||
import ch.unibas.dmi.dbis.cs108.Multiplayer.Server.ClientHandler;
|
import ch.unibas.dmi.dbis.cs108.multiplayer.server.ClientHandler;
|
||||||
|
|
||||||
import java.net.Socket;
|
|
||||||
|
|
||||||
public class HumanPlayer extends Human{
|
public class HumanPlayer extends Human{
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,8 +1,6 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.Klassenstruktur;
|
package ch.unibas.dmi.dbis.cs108.Klassenstruktur;
|
||||||
|
|
||||||
import ch.unibas.dmi.dbis.cs108.Multiplayer.Server.ClientHandler;
|
import ch.unibas.dmi.dbis.cs108.multiplayer.server.ClientHandler;
|
||||||
|
|
||||||
import java.net.Socket;
|
|
||||||
|
|
||||||
public class Passenger {
|
public class Passenger {
|
||||||
protected int position; //the player's Cabin number (0 to 5)
|
protected int position; //the player's Cabin number (0 to 5)
|
||||||
|
|||||||
@ -1,16 +0,0 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Client;
|
|
||||||
|
|
||||||
import ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol.NightTrainProtocol;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
public class InputToProtocolMap extends HashMap<String, NightTrainProtocol.NTtBCommands> {
|
|
||||||
public InputToProtocolMap(){
|
|
||||||
super();
|
|
||||||
this.put("chat", NightTrainProtocol.NTtBCommands.CHATA);
|
|
||||||
this.put("cn", NightTrainProtocol.NTtBCommands.CUSRN);
|
|
||||||
this.put("list", NightTrainProtocol.NTtBCommands.LISTP);
|
|
||||||
this.put("exit", NightTrainProtocol.NTtBCommands.LEAVG);
|
|
||||||
//TODO extend according to extended function
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Client;
|
package ch.unibas.dmi.dbis.cs108.multiplayer.client;
|
||||||
|
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Client;
|
package ch.unibas.dmi.dbis.cs108.multiplayer.client;
|
||||||
|
|
||||||
public class EmptyClientInputException extends Exception {
|
public class EmptyClientInputException extends Exception {
|
||||||
String exceptionMsg;
|
String exceptionMsg;
|
||||||
@ -0,0 +1,33 @@
|
|||||||
|
package ch.unibas.dmi.dbis.cs108.multiplayer.client;
|
||||||
|
|
||||||
|
import ch.unibas.dmi.dbis.cs108.multiplayer.protocol.NightTrainProtocol;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
|
||||||
|
public class InputToProtocolMap {
|
||||||
|
|
||||||
|
private static final HashMap<String, NightTrainProtocol.NTtBCommands> encoding;
|
||||||
|
private static final HashSet<String> legalClientInput;
|
||||||
|
|
||||||
|
static {
|
||||||
|
//First add all legal commands to a map
|
||||||
|
HashMap<String, NightTrainProtocol.NTtBCommands> builder = new HashMap<>();
|
||||||
|
builder.put("chat", NightTrainProtocol.NTtBCommands.CHATA);
|
||||||
|
builder.put("cn", NightTrainProtocol.NTtBCommands.CUSRN);
|
||||||
|
builder.put("list", NightTrainProtocol.NTtBCommands.LISTP);
|
||||||
|
builder.put("exit", NightTrainProtocol.NTtBCommands.LEAVG);
|
||||||
|
//TODO extend according to extended function
|
||||||
|
//Initialize static final map and set
|
||||||
|
legalClientInput = new HashSet<>(builder.keySet());
|
||||||
|
encoding = new HashMap<>(builder);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String encode(String toEncode) {
|
||||||
|
if (legalClientInput.contains(toEncode)) {
|
||||||
|
return encoding.get(toEncode).toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Client;
|
package ch.unibas.dmi.dbis.cs108.multiplayer.client;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Client;
|
package ch.unibas.dmi.dbis.cs108.multiplayer.client;
|
||||||
|
|
||||||
public interface ProtocolParser {
|
public interface ProtocolParser {
|
||||||
/**
|
/**
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.helpers;
|
package ch.unibas.dmi.dbis.cs108.multiplayer.helpers;
|
||||||
|
|
||||||
import java.io.BufferedWriter;
|
import java.io.BufferedWriter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.helpers;
|
package ch.unibas.dmi.dbis.cs108.multiplayer.helpers;
|
||||||
|
|
||||||
import java.io.BufferedWriter;
|
import java.io.BufferedWriter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol;
|
package ch.unibas.dmi.dbis.cs108.multiplayer.protocol;
|
||||||
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.Queue;
|
import java.util.Queue;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol;
|
package ch.unibas.dmi.dbis.cs108.multiplayer.protocol;
|
||||||
|
|
||||||
public interface NTtBInputType {
|
public interface NTtBInputType {
|
||||||
String msg = null;
|
String msg = null;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol;
|
package ch.unibas.dmi.dbis.cs108.multiplayer.protocol;
|
||||||
|
|
||||||
public class NTtBParameter implements NTtBInputType {
|
public class NTtBParameter implements NTtBInputType {
|
||||||
String parameterValue;
|
String parameterValue;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol;
|
package ch.unibas.dmi.dbis.cs108.multiplayer.protocol;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol;
|
package ch.unibas.dmi.dbis.cs108.multiplayer.protocol;
|
||||||
|
|
||||||
public class NoLegalProtocolCommandStringFoundException extends Exception {
|
public class NoLegalProtocolCommandStringFoundException extends Exception {
|
||||||
}
|
}
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol;
|
package ch.unibas.dmi.dbis.cs108.multiplayer.protocol;
|
||||||
|
|
||||||
public interface ProtocolDecoder {
|
public interface ProtocolDecoder {
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol;
|
package ch.unibas.dmi.dbis.cs108.multiplayer.protocol;
|
||||||
|
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Server;
|
package ch.unibas.dmi.dbis.cs108.multiplayer.server;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
@ -1,9 +1,9 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Server;
|
package ch.unibas.dmi.dbis.cs108.multiplayer.server;
|
||||||
|
|
||||||
import ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol.NTtBFormatMsg;
|
import ch.unibas.dmi.dbis.cs108.multiplayer.protocol.NTtBFormatMsg;
|
||||||
import ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol.NightTrainProtocol;
|
import ch.unibas.dmi.dbis.cs108.multiplayer.protocol.NightTrainProtocol;
|
||||||
import ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol.NoLegalProtocolCommandStringFoundException;
|
import ch.unibas.dmi.dbis.cs108.multiplayer.protocol.NoLegalProtocolCommandStringFoundException;
|
||||||
import ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol.ProtocolDecoder;
|
import ch.unibas.dmi.dbis.cs108.multiplayer.protocol.ProtocolDecoder;
|
||||||
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -43,10 +43,10 @@ public class ClientMsgDecoder implements ProtocolDecoder {
|
|||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
//assumes not empty list!
|
//assumes not empty list!
|
||||||
NightTrainProtocol.NTtBCommands cmd = getCommandConstant(msgTokens.get(0));
|
NightTrainProtocol.NTtBCommands cmd = getCommandConstant(msgTokens.get(0));
|
||||||
sb.append("Server msg: ");
|
sb.append("SERVER: ");
|
||||||
sb.append("Command *" + cmd.toString() + "* recieved");
|
sb.append("Command *" + cmd.toString() + "* recieved!");
|
||||||
|
|
||||||
return null;
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Uses the NightTrainProtocol classes utility method
|
//Uses the NightTrainProtocol classes utility method
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Server;
|
package ch.unibas.dmi.dbis.cs108.multiplayer.server;
|
||||||
|
|
||||||
public class InSessionLogik {
|
public class InSessionLogik {
|
||||||
Server server;
|
Server server;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Server;
|
package ch.unibas.dmi.dbis.cs108.multiplayer.server;
|
||||||
|
|
||||||
public class NoCommandTokenException extends Exception {
|
public class NoCommandTokenException extends Exception {
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Server;
|
package ch.unibas.dmi.dbis.cs108.multiplayer.server;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.net.ServerSocket;
|
import java.net.ServerSocket;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.Multiplayer.Server;
|
package ch.unibas.dmi.dbis.cs108.multiplayer.server;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implements the communication protocol in the connecting phase.
|
* Implements the communication protocol in the connecting phase.
|
||||||
Reference in New Issue
Block a user