Share Pastebin
Guest
Public paste!

Serenity

By: a guest | Mar 21st, 2010 | Syntax: Ruby | Size: 7.51 KB | Hits: 72 | Expires: Never
Copy text to clipboard
  1. package net.maximemeire.rs2pro.io.file;
  2.  
  3. import net.maximemeire.rs2pro.util.Logger;
  4. import net.maximemeire.rs2pro.util.RsRandomAccesFile;
  5. import net.maximemeire.rs2pro.world.items.ItemManager;
  6. import net.maximemeire.rs2pro.world.items.defs.*;
  7.  
  8. import java.io.*;
  9. import java.net.URLConnection;
  10. import java.net.URL;
  11.  
  12. /**
  13.  * Created by IntelliJ IDEA.
  14.  * Author  : Serenity
  15.  * From    : Rune-server.org
  16.  * Date    : 21-mrt-2010
  17.  * Time    : 19:02:08
  18.  * Package : net.maximemeire.rs2pro.io.file
  19.  */
  20. public class ItemListLoader {
  21.     private static Logger logger = new Logger(ItemListLoader.class);
  22.     private static ItemListLoader instance;
  23.  
  24.     public static ItemListLoader getInstance() {
  25.         if (instance == null)
  26.             instance = new ItemListLoader();
  27.         return instance;
  28.     }
  29.  
  30.  
  31.     public void initialize() {
  32.         logger.info("Loading itemInfo");
  33.         File file = new File("./data/itemDefinitions.dat");
  34.         if (file.exists()) {
  35.             logger.info("File exsists and starts loading..");
  36.             importDefinitions(file);
  37.             logger.info("Done loading the ItemDefinitions..");
  38.         } else {
  39.             try {
  40.                 logger.info("file doesn't exists");
  41.                 logger.info("start downloading the file");
  42.                 logger.info(download("http://tigerden.uppit.com/0110/iff0r6iz/itemInfo.dat", "./data/itemDefinitions.dat"));
  43.                 importDefinitions(new File("./data/itemDefinitions.dat"));
  44.                 logger.info("Done loading the ItemDefinitions..");
  45.             } catch (Exception e) {
  46.                 e.printStackTrace();
  47.             }
  48.         }
  49.     }
  50.  
  51.     private static String download(String address, String localFileName) {
  52.  
  53.         OutputStream out = null;
  54.         URLConnection conn = null;
  55.         InputStream in = null;
  56.         try {
  57.             URL url = new URL(address);
  58.             out = new BufferedOutputStream(new FileOutputStream(localFileName));
  59.             conn = url.openConnection();
  60.             in = conn.getInputStream();
  61.             byte[] buffer = new byte[1024];
  62.             int numRead;
  63.             long numWritten = 0;
  64.             while ((numRead = in.read(buffer)) != -1) {
  65.                 out.write(buffer, 0, numRead);
  66.                 numWritten += numRead;
  67.             }
  68.         } catch (Exception exception) {
  69.             exception.printStackTrace();
  70.             return "Error while downloading file!";
  71.         } finally {
  72.             try {
  73.                 if (in != null)
  74.                     in.close();
  75.                 if (out != null)
  76.                     out.close();
  77.  
  78.                 return "File downloaded sucsessfully!";
  79.             } catch (IOException ignored) {
  80.             }
  81.         }
  82.         return "Unknown error!";
  83.     }
  84.  
  85.     private static void importDefinitions(File f) {
  86.         try {
  87.             RsRandomAccesFile raf = new RsRandomAccesFile(f, "r");
  88.             ItemManager.getInstance().setItemDefinitionsSize(raf.readInt());
  89.             int definitionSize = raf.readInt();
  90.             for (int i = 0; i < definitionSize; i++) {
  91.                
  92.                 WeaponDefinitions weaponDefinitions = null;
  93.                 GrandExchangePrices exchangePrices = null;
  94.                 EquipmentDefinition equipmentDefinition = null;
  95.                 int itemId = raf.readInt();
  96.                 String itemName = raf.readString();
  97.                 String itemExamine = raf.readString();
  98.                 boolean noted = raf.readBoolean();
  99.                 boolean stackAble = raf.readBoolean();
  100.                 boolean members = raf.readBoolean();
  101.                 boolean tradeAble = raf.readBoolean();
  102.                 int parentId = raf.readInt();
  103.                 int noteId = raf.readInt();
  104.                 int shopValue = raf.readInt();
  105.                 int lowAlchValue = raf.readInt();
  106.                 int highAlchValue = raf.readInt();
  107.                 double weight = raf.readDouble();
  108.  
  109.                 if (raf.readBoolean()) { // if true there is an EquipmentDefinition
  110.                  EquipmentDefinition(raf);
  111.                 }
  112.                 if (raf.readBoolean()) {   // if true there is a GrandExchangePrices
  113.                    GrandExchangePrices(raf);
  114.                 }
  115.                 if (raf.readBoolean())   // if true there is  a WeaponDefinitions
  116.                     WeaponDefinitions(raf);
  117.  
  118.                 ItemManager.getInstance().setItemDefinition(itemId, new ItemDefinition(itemId, itemName, itemExamine, noted, stackAble, members,
  119.                         tradeAble, parentId, noteId, shopValue, lowAlchValue, highAlchValue,
  120.                         weight, equipmentDefinition, weaponDefinitions,
  121.                         exchangePrices));
  122.             }
  123.         } catch (IOException e) {
  124.  
  125.             e.printStackTrace();
  126.         }
  127.     }
  128.  
  129.     private static EquipmentDefinition EquipmentDefinition(RsRandomAccesFile raf) throws IOException {
  130.                                  int[][] skillRequirements = null;
  131.                     int[] bonus = null;
  132.                     int equipId = raf.readInt();
  133.                     int slot = raf.readInt();
  134.                     boolean hasSkillrequirements = raf.readBoolean();
  135.                     if (hasSkillrequirements) {
  136.                         int amountOfSkills = raf.readInt();
  137.                         skillRequirements = new int[amountOfSkills][2];
  138.                         for (int k = 0; k < amountOfSkills; k++) {
  139.                             skillRequirements[k][0] = raf.readInt();
  140.                             skillRequirements[k][1] = raf.readInt();
  141.                         }
  142.                     }
  143.                     if (raf.readBoolean()) {
  144.                         bonus = new int[14];
  145.                         for (int k = 0; k < bonus.length; k++) {
  146.                             bonus[k] = raf.readShort();
  147.                         }
  148.                     }
  149.                     boolean isFullBody = raf.readBoolean();
  150.                     boolean isFullHat = raf.readBoolean();
  151.                     boolean isFullHelm = raf.readBoolean();
  152.                     return new EquipmentDefinition(equipId, slot, skillRequirements, bonus, isFullBody, isFullHat, isFullHelm);
  153.     }
  154.  
  155.     private static WeaponDefinitions WeaponDefinitions(RsRandomAccesFile raf) throws IOException {
  156.                     int tabId = raf.readInt();
  157.                     int walkEmote = raf.readInt();
  158.                     int runEmote = raf.readInt();
  159.                     int standEmote = raf.readInt();
  160.                     int weaponId = raf.readInt();
  161.                     int childOfSpecBar = raf.readInt();
  162.                     int crushEmote = raf.readInt();
  163.                     int stabEmote = raf.readInt();
  164.                     int slashEmote = raf.readInt();
  165.                     int blockEmote = raf.readInt();
  166.                     int attackSpeed = raf.readInt();
  167.                     boolean isMelee = raf.readBoolean();
  168.                     boolean is2H = raf.readBoolean();
  169.                   return new WeaponDefinitions(tabId, walkEmote, runEmote, standEmote, weaponId,
  170.                             childOfSpecBar, crushEmote, stabEmote, slashEmote, blockEmote, attackSpeed, isMelee, is2H);
  171.     }
  172.  
  173.     private static GrandExchangePrices GrandExchangePrices(RsRandomAccesFile raf) throws IOException {
  174.                     int lowPrice = raf.readInt();
  175.                     int midPrice = raf.readInt();
  176.                     int highPrice = raf.readInt();
  177.                    return new GrandExchangePrices(lowPrice, midPrice, highPrice);
  178.     }
  179. }