package NET.worlds.scape; import NET.worlds.core.IniFile; import NET.worlds.network.URL; import java.util.Enumeration; import java.util.Vector; class DroneLoader { private int MaxDroneLoadingRate = 2000; static final boolean debug = false; DroneLoader() { int numAvs = IniFile.gamma().getIniInt("avatars", 24); int droneRate = IniFile.gamma().getIniInt("droneLoadRate", 8000); this.MaxDroneLoadingRate = droneRate / numAvs; } public synchronized void load(Vector droneList) { try { if (droneList.size() > 0) { Vector listCopy = (Vector)droneList.clone(); Enumeration enums = listCopy.elements(); while (enums.hasMoreElements()) { PendingDrone pd = (PendingDrone)enums.nextElement(); if (pd.getDrone().discarded) { droneList.removeElement(pd); } else { loadDrone(pd); droneList.removeElement(pd); } } } this.wait(); } catch (InterruptedException var5) { } } public synchronized void wakeUp() { this.notify(); } private static void loadDrone(PendingDrone pd) { if (!pd.getLoaded()) { Enumeration e = PosableShape.getComponentAvatars(pd.getUrl()); if (e != null) { while (e.hasMoreElements()) { String avURL = (String)e.nextElement(); pd.download(URL.make(avURL)); } } PosableShape ps; if (VehicleShape.isVehicle(pd.getUrl())) { ps = new VehicleShape(); } else { ps = new PosableShape(); } boolean prog = ProgressiveAdder.get().enabled(); if (prog) { ProgressiveAdder.get().scheduleForAdd(pd.getDrone(), ps); } ps.setURL(pd.getUrl()); ps.setVisible(true); ps.setBumpable(false); if (!pd.getDrone().isPilotDrone(pd.getUrl())) { ps.enableLOD(true); } if (!prog) { pd.getDrone().SetPendingShape(ps); } pd.setLoaded(); } } }