import java.awt.Font; import java.awt.Dimension; import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintStream; import java.net.Socket; import javax.swing.JFrame; import javax.swing.JProgressBar; import javax.swing.JApplet; public final class loader extends JApplet { public static JProgressBar progressBar = null; public Socket sock = null; public GameFrame gframe; public GamePanel gpanel; public boolean loaded = false; public void init() { gframe = null; gpanel = null; loaded = true; setConfig(); setString(100, "Loading Done! - Closing webpage will exit the client!"); new CacheDownloader(this).downloadCache(); try { PreLoader loader = new PreLoader(); getFile("ERclient.jar"); if (gframe != null) { gframe.setVisible(true); remove(gframe); gframe = null; } if (loader != null) { Class load = loader.load("client", true); JApplet applet = (JApplet) load.newInstance(); } else { setString(100, "Loader is null! Please fix this immediately!"); } } catch (Exception e) { e.printStackTrace(); } } private final byte[] getFile(String name) { try { File file = new File(name); if (!file.exists()) { return null; } int length = (int)file.length(); DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(file))); byte[] buf = new byte[length]; in.readFully(buf, 0, length); in.close(); return buf; } catch (Exception e) { e.printStackTrace(); } return null; } public final void setConfig() { try { progressBar = new JProgressBar(); progressBar.setPreferredSize(new Dimension(270, 18)); progressBar.setStringPainted(true); progressBar.setFont(new Font("Dialog", 1, 10)); progressBar.setString("Loading Data!"); if (!loaded) { gframe = new GameFrame(this, "loader"); gframe.setPreferredSize(new Dimension(500, 85)); gframe.add(progressBar); gframe.pack(); gframe.setVisible(true); } else { gpanel = new GamePanel(this); gpanel.setPreferredSize(new Dimension(500, 85)); gpanel.add(progressBar); setContentPane(gpanel); gpanel.setVisible(true); } } catch (Exception e) { e.printStackTrace(); } } public static final void setString(int length, String str) { progressBar.setValue(length); progressBar.setString(str); } public final int size(String str) { try { File file = new File(findCacheDir() + str); if (!file.exists()) { return -1; } DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(file))); byte[] buf = new byte[4]; in.read(buf, 0, 4); in.close(); return buf[2]; } catch (Exception e) {} return -1; } public final void getUpdates(int length, int len) { try { if (length <= 0 && len == 2) { setString(0, "Getting Client Updates..."); new Update(findCacheDir(), "ERclient.jar", false, false); return; } if (length <= 0 && len == 1) { setString(50, "Getting Item Updates..."); new Update(findCacheDir(), "items.zip", true, true); return; } if (len == 1) { setString(50, "Checking For Item Updates..."); } if (len == 2) { setString(0, "Checking For Client Updates..."); } sock = new Socket("http://elementalregion.com/ERcache/cache.zip", 704); sock.setSoTimeout(1000); OutputStream out = sock.getOutputStream(); InputStream in = sock.getInputStream(); out.write(len); int i = -1; while (in.available() <= 0); i = in.read(); if (length != i && i != -1) { if (len == 1) { setString(50, "Getting Item Updates..."); //new Update(findCacheDir(), "items.zip", true, true); return; } if (len == 2) { setString(0, "Getting Client Updates..."); new Update(findCacheDir(), "client.dat", false, false); return; } } } catch (Exception e) { return; } } public static String findCacheDir() { try { String cache = "C:/.ER_file_store_32"; String text = ""; File file = new File((new StringBuilder()).append(text).append(cache).toString()); if (file.exists() || file.mkdir()) { return (new StringBuilder()).append(text).append(cache).append("/").toString(); } } catch (Exception e) { e.printStackTrace(); } return null; } public final int dataStream(String str) { try { File file = new File(findCacheDir() + str); if (!file.exists()) { return -1; } DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(file))); byte[] buf = new byte[1]; in.read(buf, 0, 1); in.close(); return buf[0]; } catch (Exception e) {} return -1; } }