예제 #1
0
 public void load() {
   try {
     System.out.println("----- REGION_MANAGER -----");
     long start = System.nanoTime();
     ObjectDef.loadConfig();
     File f = new File("./Data/world/map_index");
     byte[] buffer = new byte[(int) f.length()];
     DataInputStream dis = new DataInputStream(new FileInputStream(f));
     dis.readFully(buffer);
     dis.close();
     ByteStream in = new ByteStream(buffer);
     int size = in.length() / 7;
     regions = new Region[size];
     int[] regionIds = new int[size];
     int[] mapGroundFileIds = new int[size];
     int[] mapObjectsFileIds = new int[size];
     boolean[] isMembers = new boolean[size];
     for (int i = 0; i < size; i++) {
       regionIds[i] = in.getUShort();
       mapGroundFileIds[i] = in.getUShort();
       mapObjectsFileIds[i] = in.getUShort();
       isMembers[i] = in.getUByte() == 0;
     }
     for (int i = 0; i < size; i++) {
       regions[i] = new Region(regionIds[i], isMembers[i]);
     }
     for (int i = 0; i < size; i++) {
       byte[] file1 = getBuffer(new File("./Data/world/map/" + mapObjectsFileIds[i] + ".gz"));
       byte[] file2 = getBuffer(new File("./Data/world/map/" + mapGroundFileIds[i] + ".gz"));
       if (file1 == null || file2 == null) {
         continue;
       }
       try {
         loadMaps(regionIds[i], new ByteStream(file1), new ByteStream(file2));
       } catch (Exception e) {
         System.out.println("Error loading map region: " + regionIds[i]);
       }
     }
     System.out.println("\tMaps loaded in " + ((System.nanoTime() - start) / 1000000) + " ms");
     start = System.nanoTime();
     WalkingCheck.load();
     System.out.println("\tClipping loaded in " + ((System.nanoTime() - start) / 1000000) + " ms");
   } catch (Exception e) {
     e.printStackTrace();
   }
 }