Package com.kolakcc.loljclient.model

Source Code of com.kolakcc.loljclient.model.Item

package com.kolakcc.loljclient.model;

import java.awt.image.BufferedImage;
import java.io.File;
import java.util.LinkedList;

import javax.imageio.ImageIO;

import com.almworks.sqlite4java.SQLiteConnection;
import com.almworks.sqlite4java.SQLiteJob;
import com.almworks.sqlite4java.SQLiteQueue;
import com.almworks.sqlite4java.SQLiteStatement;
import com.kolakcc.loljclient.util.FileSystem;

public class Item {
  public static Item getItem(RiotRecommendedItem recItem) {
    return getItemFromID(recItem.ID);
  }

  protected int ID;
  protected String name;
  protected String description;
  protected String iconPath;
  protected int price;
  protected int flatHPPoolMod;
  protected int flatMPPoolMod;
  protected int percentHPPoolMod;
  protected int percentMPPoolMod;
  protected int flatHPRegenMod;
  protected int percentHPRegenMod;
  protected int flatMPRegenMod;
  protected int percentMPRegenMod;
  protected int flatArmorMod;
  protected int percentArmorMod;
  protected int flatAttackDamageMod;
  protected int percentAttackDamageMod;
  protected int flatAbilityPowerMod;
  protected int percentAbilityPowerMod;
  protected int flatMovementSpeedMod;
  protected int percentMovementSpeedMod;
  protected int flatAttackSpeedMod;
  protected int percentAttackSpeedMod;
  protected int flatDodgeMod;
  protected int percentDodgeMod;
  protected int flatCritChanceMod;
  protected int percentCritChanceMod;
  protected int flatCritDamageMod;
  protected int percentCritDamageMod;
  protected int flatMagicResistMod;
  protected int percentMagicResistMod;
  protected int flatEXPBonus;
  protected int percentEXPBonus;

  protected int epicness;

  protected boolean legacy;

  protected RiotRecommendedItem fromRiotRecommendedItem;
  private static LinkedList<Item> items;

  public static Item getItemFromID(int ID) {
    for (Item i : items) {
      if (i.ID == ID) {
        return i;
      }
    }
    new Exception("Item #" + ID + " not found.").printStackTrace();
    return null;
  }

  public static void initializeItems() {
    if (items != null) {
      new Exception(
          "Tried to initialize already initalized champion list")
          .printStackTrace();
    }

    SQLiteQueue queue = GameStatsDBWrapper.getQueue();
    items = new LinkedList<Item>();
    queue.execute(new SQLiteJob<Object>() {
      protected Object job(SQLiteConnection connection) throws Throwable {
        SQLiteStatement st = connection.prepare("SELECT * FROM items");
        while (st.step()) {
          Item newItem = new Item();
          int i = 0;
          newItem.ID = st.columnInt(i);
          i++;
          newItem.name = st.columnString(i);
          i++;
          newItem.description = st.columnString(i);
          i++;
          newItem.iconPath = st.columnString(i);
          i++;
          newItem.price = st.columnInt(i);
          i++;
          newItem.flatHPPoolMod = st.columnInt(i);
          i++;
          newItem.flatMPPoolMod = st.columnInt(i);
          i++;
          newItem.percentHPPoolMod = st.columnInt(i);
          i++;
          newItem.percentMPPoolMod = st.columnInt(i);
          i++;
          newItem.flatHPRegenMod = st.columnInt(i);
          i++;
          newItem.percentHPRegenMod = st.columnInt(i);
          i++;
          newItem.flatMPRegenMod = st.columnInt(i);
          i++;
          newItem.percentMPRegenMod = st.columnInt(i);
          i++;
          newItem.flatArmorMod = st.columnInt(i);
          i++;
          newItem.percentArmorMod = st.columnInt(i);
          i++;
          newItem.flatAttackDamageMod = st.columnInt(i);
          i++;
          newItem.percentAttackDamageMod = st.columnInt(i);
          i++;
          newItem.flatAbilityPowerMod = st.columnInt(i);
          i++;
          newItem.percentAbilityPowerMod = st.columnInt(i);
          i++;
          newItem.flatMovementSpeedMod = st.columnInt(i);
          i++;
          newItem.percentMovementSpeedMod = st.columnInt(i);
          i++;
          newItem.flatAttackSpeedMod = st.columnInt(i);
          i++;
          newItem.percentAttackSpeedMod = st.columnInt(i);
          i++;
          newItem.flatDodgeMod = st.columnInt(i);
          i++;
          newItem.percentDodgeMod = st.columnInt(i);
          i++;
          newItem.flatCritChanceMod = st.columnInt(i);
          i++;
          newItem.percentCritChanceMod = st.columnInt(i);
          i++;
          newItem.flatCritDamageMod = st.columnInt(i);
          i++;
          newItem.percentCritDamageMod = st.columnInt(i);
          i++;
          newItem.flatMagicResistMod = st.columnInt(i);
          i++;
          newItem.percentMagicResistMod = st.columnInt(i);
          i++;
          newItem.flatEXPBonus = st.columnInt(i);
          i++;
          newItem.percentEXPBonus = st.columnInt(i);
          i++;
          newItem.epicness = st.columnInt(i);
          i++;
          items.add(newItem);
        }
        st.dispose();

        // TODO: add all legacy items
        items.add(new Item(0, "Empty", "EmptyIcon.png"));
        items.add(new Item(1005, "Meki Pendant",
            "3013_Disruption_Rod.png"));
        items.add(new Item(3178, "Ionic Spark", "3178_IonicSpark.png"));
        items.add(new Item(3132, "Heart of Gold",
            "3051_Renewal_Tunic.png"));
        items.add(new Item(3040, "Seraph's Embrace",
            "3040_Seraphs_Embrace.png"));

        return null;
      }
    }).complete();
  }

  private Item() {
  }

  public Item(int ID, String name, String iconPath) {
    this.ID = ID;
    this.name = name;
    this.iconPath = iconPath;
    this.legacy = true;
  }

  public String getDescription() {
    return this.description;
  }

  public int getEpicness() {
    return this.epicness;
  }

  public int getFlatAbilityPowerMod() {
    return this.flatAbilityPowerMod;
  }

  public int getFlatArmorMod() {
    return this.flatArmorMod;
  }

  public int getFlatAttackDamageMod() {
    return this.flatAttackDamageMod;
  }

  public int getFlatAttackSpeedMod() {
    return this.flatAttackSpeedMod;
  }

  public int getFlatCritChanceMod() {
    return this.flatCritChanceMod;
  }

  public int getFlatCritDamageMod() {
    return this.flatCritDamageMod;
  }

  public int getFlatDodgeMod() {
    return this.flatDodgeMod;
  }

  public int getFlatEXPBonus() {
    return this.flatEXPBonus;
  }

  public int getFlatHPPoolMod() {
    return this.flatHPPoolMod;
  }

  public int getFlatHPRegenMod() {
    return this.flatHPRegenMod;
  }

  public int getFlatMagicResistMod() {
    return this.flatMagicResistMod;
  }

  public int getFlatMovementSpeedMod() {
    return this.flatMovementSpeedMod;
  }

  public int getFlatMPPoolMod() {
    return this.flatMPPoolMod;
  }

  public int getFlatMPRegenMod() {
    return this.flatMPRegenMod;
  }

  public RiotRecommendedItem getFromRiotRecommendedItem() {
    return this.fromRiotRecommendedItem;
  }

  public BufferedImage getIcon() throws Exception {
    String relativeFilePath = this.getIconPath().replace('/', File.separatorChar);
    // some files are not in the same captials as in riots database
    // there also seems to be something wrong with - and _, f.ex 073_Zettas_Mana-Stick should be 073_Zettas_Mana_Stick
    File f = FileSystem.getFile("app://img/items/"+relativeFilePath);
    if (!f.isFile()) {
      String id = relativeFilePath.split("_")[0];
      for (File compare : f.getParentFile().listFiles()) {
        if (compare.getName().startsWith(id + "_")) {
          f = compare;
          break;
        }
      }
    }

    if (!f.canRead()) {
      throw new Exception(String.format("Not found: %s",f.getAbsolutePath()));
    }
   
    if (!f.canRead()) {
      throw new Exception(String.format("Unreadable: %s",f.getAbsolutePath()));
    }
    if ((f.isFile()) && (f.canRead())) {
      return ImageIO.read(f);
    }

    throw new Exception(String.format("Unknown error opening %s",f.getAbsolutePath()));
  }

  public String getIconPath() {
    return this.iconPath;
  }

  public int getID() {
    return this.ID;
  }

  public String getName() {
    return this.name;
  }

  public int getPercentAbilityPowerMod() {
    return this.percentAbilityPowerMod;
  }

  public int getPercentArmorMod() {
    return this.percentArmorMod;
  }

  public int getPercentAttackDamageMod() {
    return this.percentAttackDamageMod;
  }

  public int getPercentAttackSpeedMod() {
    return this.percentAttackSpeedMod;
  }

  public int getPercentCritChanceMod() {
    return this.percentCritChanceMod;
  }

  public int getPercentCritDamageMod() {
    return this.percentCritDamageMod;
  }

  public int getPercentDodgeMod() {
    return this.percentDodgeMod;
  }

  public int getPercentEXPBonus() {
    return this.percentEXPBonus;
  }

  public int getPercentHPPoolMod() {
    return this.percentHPPoolMod;
  }

  public int getPercentHPRegenMod() {
    return this.percentHPRegenMod;
  }

  public int getPercentMagicResistMod() {
    return this.percentMagicResistMod;
  }

  public int getPercentMovementSpeedMod() {
    return this.percentMovementSpeedMod;
  }

  public int getPercentMPPoolMod() {
    return this.percentMPPoolMod;
  }

  public int getPercentMPRegenMod() {
    return this.percentMPRegenMod;
  }

  public int getPrice() {
    return this.price;
  }

}
TOP

Related Classes of com.kolakcc.loljclient.model.Item

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.