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.room.RoomPlaced;
import static net.scapeemulator.game.model.player.skills.construction.furniture.Material.*;
/**
* @author David Insley
*/
public enum StyledFurniture implements Furniture {
/* @formatter:off */
FLOOR_DECORATION(61, new int[]{ 13689, 13686, 13687, 13688, 13684, 13685 }, 8370, MAHOGANY.req(5)),
TRAPDOORS(68, FLOOR_DECORATION.objectIds, 8372, MAHOGANY.req(5), CLOCKWORK.req(10));
/* @formatter:on */
private final int level;
private final int[] objectIds;
private final int itemId;
private final Requirements reqs;
private final MaterialRequirement[] mats;
private StyledFurniture(int level, int[] objectIds, int itemId, MaterialRequirement... mats) {
this.level = level;
this.objectIds = objectIds;
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) {
return objectIds[room.getHouse().getStyle().getId()];
}
@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;
}
}