/** * Loads the packet handling classes from the persistence * manager. */ protected void loadPacketHandlers() { PacketHandlerDefContainer handlerDefs = (PacketHandlerDefContainer) PersistenceManager.load("PacketHandlers.xml"); for (PacketHandlerDef handlerDef : handlerDefs.getPacketHandlerDefs()) { try { String className = handlerDef.getClassName(); Class c = Class.forName(className); if (c != null) { PacketHandler handler = (PacketHandler) c.newInstance(); for (int packetID : handlerDef.getAssociatedPackets()) { if (handler instanceof GameEnginePacketHandler) { ((GameEnginePacketHandler) handler).setGameEngine(this); } packetHandlers.put(packetID, handler); } } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } } /** * Processes incoming packets. */ protected void processIncomingPackets() { List packets = packetQueue.getPackets(); for (Packet p : packets) { IoSession session = p.getSession(); PacketHandler handler = packetHandlers.get(p.getID()); if (handler != null) { handler.handlePacket(p, session); } else { System.out.println("--Unhandled packet--"); System.out.println(p); } } }