package net.scapeemulator.game.model.player.skills.construction.furniture; import java.util.List; import net.scapeemulator.game.model.player.Item; import net.scapeemulator.game.model.player.requirement.Requirements; import net.scapeemulator.game.model.player.requirement.SkillRequirement; import net.scapeemulator.game.model.player.skills.Skill; import net.scapeemulator.game.model.player.skills.construction.Construction; import net.scapeemulator.game.model.player.skills.construction.hotspot.FurnitureHotspot; import net.scapeemulator.game.model.player.skills.construction.hotspot.FurnitureHotspotType; import net.scapeemulator.game.model.player.skills.construction.room.RoomPlaced; import static net.scapeemulator.game.model.player.skills.construction.furniture.Material.*; /** * @author David Insley */ public enum GodFurniture implements Furniture { /* @formatter:off */ OAK_ALTAR(45, 13179, 8062, OAK.req(4)), TEAK_ALTAR(50, 13182, 8063, TEAK.req(4)), CLOTH_ALTAR(56, 13185, 8064, TEAK.req(4), CLOTH.req(2)), MAHOG_ALTAR(60, 13188, 8065, MAHOGANY.req(4), CLOTH.req(2)), STONE_ALTAR(64, 13191, 8066, MAHOGANY.req(6), CLOTH.req(2), LIMESTONE.req(2)), MARBLE_ALTAR(70, 13194, 8067, MARBLE.req(2), CLOTH.req(2)), GILDED_ALTAR(75, 13197, 8068, MARBLE.req(2), CLOTH.req(2), GOLD_LEAF.req(4)), SMALL_STATUE(49, 13271, 8082, LIMESTONE.req(2)), MED_STATUE(69, 13272, 8083, MARBLE.req()), LARGE_STATUE(89, 13273, 8084, MARBLE.req(3)); /* @formatter:on */ private final int level; private final int baseObjectId; private final int itemId; private final Requirements reqs; private final MaterialRequirement[] mats; private enum God { SARA(0, 0), ZAM(1, 2), GUTH(2, 1), BOB(0, 3); private final int altarOffset; private final int statueOffset; private God(int altarOffset, int statueOffset) { this.altarOffset = altarOffset; this.statueOffset = statueOffset; } } private GodFurniture(int level, int baseObjectId, int itemId, MaterialRequirement... mats) { this.level = level; this.baseObjectId = baseObjectId; this.itemId = itemId; this.mats = mats; reqs = new Requirements(); reqs.addRequirement(new SkillRequirement(Skill.CONSTRUCTION, level, true, "build that")); reqs.addRequirements(Construction.HAMMER_REQ, Construction.SAW_REQ); reqs.addRequirements(mats); } @Override public int getLevel() { return level; } @Override public int getObjectId(RoomPlaced room) { FurnitureHotspot iconSpot = room.getFurnitureHotspot(FurnitureHotspotType.CHAPEL_ICON); Furniture iconFurn = FurnitureHotspotType.CHAPEL_ICON.getFurniture(iconSpot.getFurnIndex().value()); God god = God.SARA; if (iconFurn != null) { switch ((BasicFurniture) iconFurn) { case ZAMO_SYMBOL: case ZAMO_ICON: god = God.ZAM; break; case GUTH_SYMBOL: case GUTH_ICON: god = God.GUTH; break; case BOB_ICON: god = God.BOB; break; default: god = God.SARA; } } switch (this) { case SMALL_STATUE: case MED_STATUE: case LARGE_STATUE: return baseObjectId + (god.statueOffset * 3); default: return baseObjectId + god.altarOffset; } } @Override public int getItemId() { return itemId; } @Override public Requirements getRequirements() { return reqs; } @Override public MaterialRequirement material(int index) { try { return mats[index]; } catch (IndexOutOfBoundsException e) { return null; } } @Override public double getXp() { double xp = 0; for (MaterialRequirement mat : mats) { xp += mat.getXp(); } return xp; } @Override public List<Item> getReturnedItems() { return null; } }