private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { // We have to call defaultReadObject first. in.defaultReadObject(); // Read version number. byte major = in.readByte(); byte minor = in.readByte(); if (major != 1) { throw new IOException("LogRecord: bad version: " + major + "." + minor); } int len = in.readInt(); if (len == -1) { parameters = null; } else { parameters = new Object[len]; for (int i = 0; i < parameters.length; i++) { parameters[i] = in.readObject(); } } // If necessary, try to regenerate the resource bundle. if (resourceBundleName != null) { try { resourceBundle = ResourceBundle.getBundle(resourceBundleName); } catch (MissingResourceException ex) { // This is not a good place to throw an exception, // so we simply leave the resourceBundle null. resourceBundle = null; } } needToInferCaller = false; }
public void run() { Server.preRunOperations(this); while (true) { try { String type = in.readUTF(); if (type.equals("newObject")) { Object object = in.readObject(); if (object instanceof String) { // Adding player.. this.player = new Player((String) object, Entity.BLUE); boolean addPlayer = true; for (int i = 0; i < Server.players.size(); i++) { if (this.player.name.equals(Server.players.get(i).name)) { // Set to online! if (Server.players.get(i).online) { System.out.println( "Player " + player.name + " is already connected! " + (userID + 1)); this.player = null; addPlayer = false; } else { this.player = Server.players.get(i); System.out.println("Returning User: "******", " + (userID + 1)); this.player.online = true; addPlayer = false; } break; } } if (addPlayer) { System.out.println("New User: "******", " + (userID + 1)); Server.players.add(this.player); } } } else if (type.equals( "MoveUnit")) { // this needs to require the player to be the owner of the unit short unit = in.readShort(); double cX = in.readDouble(); double cY = in.readDouble(); double x = in.readDouble(); double y = in.readDouble(); boolean stacked = in.readBoolean(); // Pretty simple: (If the unit doesn't "exist", game will take care of that.) [Keep in // mind, this currently could easily let the player control enemy units] new PathFind( unit, cX, cY, x, y, stacked); // All commands take the liberty of adding themselves to the game stack. } else if (type.equals( "SetTarget")) { // this needs to require the player to be the owner of the unit short unit = in.readShort(); short enemy = in.readShort(); boolean stacked = in.readBoolean(); // Pretty simple: new SetTarget(unit, enemy, stacked); } else if (type.equals("AddOrder")) { short unit = in.readShort(); byte order = in.readByte(); double atX = in.readDouble(); double atY = in.readDouble(); boolean stacked = in.readBoolean(); new AddOrder(unit, order, atX, atY, stacked); } else if (type.equals("Uber")) { short unit = in.readShort(); boolean stacked = in.readBoolean(); new Uber(unit, stacked); } else if (type.equals("Exiting")) { disconnect(); return; } } catch (IOException e) { disconnect(); return; } catch (Exception e) { System.out.println("Alternate error."); e.printStackTrace(); } } }