diff --git a/src/main/java/com/gmail/nossr50/skills/repair/Repairable.java b/src/main/java/com/gmail/nossr50/skills/repair/Repairable.java new file mode 100644 index 000000000..4cd070eb4 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/skills/repair/Repairable.java @@ -0,0 +1,49 @@ +package com.gmail.nossr50.skills.repair; + +public interface Repairable { + /** + * Gets the item id of this repairable item + * + * @return the id of this repairable + */ + public int getItemId(); + + /** + * Gets the id of the material used to repair this item + * + * @return the id of the repair material + */ + public int getRepairMaterialId(); + + /** + * Gets the minimum quantity of repair materials ignoring all other repair bonuses + * + * This is typically set to the number of items needed to create that item, for example 5 for helmets or 2 for swords + * + * @return the minimum number of items + */ + public int getMinimumQuantity(); + + /** + * Gets the maximum durability of this item before it breaks + * + * @return the maximum durability + */ + public short getMaximumDurability(); + + /** + * Gets the base repair durability on which to calcuate bonuses. + * + * This is actually the maximum durability divided by the minimum quantity + * + * @return the base repair durability + */ + public short getBaseRepairDurability(); + + /** + * Gets the minimum repair level needed to repair this item + * + * @return the minimum level to repair this item, or 0 for no minimum + */ + public int getMinimumLevel(); +} diff --git a/src/main/java/com/gmail/nossr50/skills/repair/RepairableFactory.java b/src/main/java/com/gmail/nossr50/skills/repair/RepairableFactory.java new file mode 100644 index 000000000..4aac4b5c4 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/skills/repair/RepairableFactory.java @@ -0,0 +1,8 @@ +package com.gmail.nossr50.skills.repair; + +public class RepairableFactory { + public static Repairable getRepairable(int itemId, int repairMaterialId, int minimumLevel, int minimumQuantity, short maximumDurability) { + // TODO: Add in loading from config what type of manager we want. + return new SimpleRepairable(itemId, repairMaterialId, minimumLevel, minimumQuantity, maximumDurability); + } +} diff --git a/src/main/java/com/gmail/nossr50/skills/repair/SimpleRepairable.java b/src/main/java/com/gmail/nossr50/skills/repair/SimpleRepairable.java new file mode 100644 index 000000000..1fd0cdf6e --- /dev/null +++ b/src/main/java/com/gmail/nossr50/skills/repair/SimpleRepairable.java @@ -0,0 +1,45 @@ +package com.gmail.nossr50.skills.repair; + +public class SimpleRepairable implements Repairable { + private final int itemId, repairMaterialId, minimumQuantity, minimumLevel; + private final short maximumDurability, baseRepairDurability; + + protected SimpleRepairable(int itemId, int repairMaterialId, int minimumLevel, int minimumQuantity, short maximumDurability) { + this.itemId = itemId; + this.repairMaterialId = repairMaterialId; + this.minimumLevel = minimumLevel; + this.minimumQuantity = minimumQuantity; + this.maximumDurability = maximumDurability; + this.baseRepairDurability = (short) (maximumDurability / minimumQuantity); + } + + @Override + public int getItemId() { + return itemId; + } + + @Override + public int getRepairMaterialId() { + return repairMaterialId; + } + + @Override + public int getMinimumQuantity() { + return minimumQuantity; + } + + @Override + public short getMaximumDurability() { + return maximumDurability; + } + + @Override + public short getBaseRepairDurability() { + return baseRepairDurability; + } + + @Override + public int getMinimumLevel() { + return minimumLevel; + } +}