Fixed bugs related to guest users

This commit is contained in:
simon 2017-11-04 15:02:59 -04:00
parent 36d433fdce
commit 8f117c5e27
3 changed files with 20 additions and 17 deletions

View File

@ -104,10 +104,11 @@ public class GameServer implements Runnable {
//Process user code
for(User user : gameUniverse.getUsers()){
user.getCpu().reset();
user.getCpu().execute();
// System.out.println(user.getCpu());
if(user.getCpu() != null){
user.getCpu().reset();
user.getCpu().execute();
}
}
//Process each worlds

View File

@ -98,23 +98,24 @@ public class GameUniverse implements JSONSerialisable{
try {
if(makeControlledUnit) {
user = new User();
user.setCpu(new CPU(GameServer.INSTANCE.getConfig(), user));
user.setUserCode(GameServer.INSTANCE.getConfig().getString("new_user_code"));
//Compile user code
AssemblyResult ar = new Assembler(user.getCpu().getInstructionSet(), user.getCpu().getRegisterSet(),
GameServer.INSTANCE.getConfig()).parse(user.getUserCode());
user.getCpu().getMemory().clear();
//Write assembled code to mem
user.getCpu().getMemory().write((short) ar.origin, ar.bytes, ar.bytes.length);
user.getCpu().setCodeSegmentOffset(ar.origin);
} else {
user = new User(null);
}
user.setUsername(username);
user.setCpu(new CPU(GameServer.INSTANCE.getConfig(), user));
user.setUserCode(GameServer.INSTANCE.getConfig().getString("new_user_code"));
//Compile user code
AssemblyResult ar = new Assembler(user.getCpu().getInstructionSet(), user.getCpu().getRegisterSet(),
GameServer.INSTANCE.getConfig()).parse(user.getUserCode());
user.getCpu().getMemory().clear();
//Write assembled code to mem
user.getCpu().getMemory().write((short) ar.origin, ar.bytes, ar.bytes.length);
user.getCpu().setCodeSegmentOffset(ar.origin);
users.add(user);

View File

@ -39,14 +39,13 @@ public class SocketServer extends WebSocketServer {
@Override
public void onOpen(WebSocket conn, ClientHandshake handshake) {
LogManager.LOGGER.info("(WS) New Websocket connection " + conn.getRemoteSocketAddress());
userManager.add(new OnlineUser(conn));
}
@Override
public void onClose(WebSocket conn, int code, String reason, boolean remote) {
LogManager.LOGGER.info("(WS) Closed " + conn.getRemoteSocketAddress() + " with exit code " + code + " additional info: " + reason);
userManager.add(new OnlineUser(conn));
userManager.remove(userManager.getUser(conn));
}
@Override
@ -110,6 +109,8 @@ public class SocketServer extends WebSocketServer {
@Override
public void onError(WebSocket conn, Exception ex) {
System.err.println("an error occured on connection " + conn.getRemoteSocketAddress() + ':' + ex);
userManager.remove(userManager.getUser(conn));
ex.printStackTrace();
}