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.Player;
import net.scapeemulator.game.model.player.PlayerVariables.Variable;
import net.scapeemulator.game.model.player.requirement.Requirement;
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.HeraldryCrest;
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 CrestedFurniture implements Furniture {
/* @formatter:off */
// Decorations
OAK_DECORATION(16, 13798, 8102, OAK.req(2)),
TEAK_DECORATION(36, 13814, 8103, TEAK.req(2)),
GILDED_DECORATION(56, 13782, 8104, MAHOGANY.req(3), GOLD_LEAF.req(2)),
ROUND_SHIELD(66, 13734, 8105, OAK.req(2)),
SQUARE_SHIELD(76, 13766, 8106, TEAK.req(4)),
KITE_SHIELD(86, 13750, 8107, MAHOGANY.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 CrestedFurniture(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);
reqs.addRequirement(new Requirement() {
@Override
public boolean hasRequirement(Player player) {
return (HeraldryCrest.forId(player.getVariables().getVar(Variable.HERALDRY_CREST)) != null);
}
@Override
public void displayErrorMessage(Player player) {
player.sendMessage("You must get a family crest from Sir Renitee in Falador before you can build that.");
}
@Override
public void fulfill(Player player) {
}
});
}
@Override
public int getLevel() {
return level;
}
@Override
public int getObjectId(RoomPlaced room) {
HeraldryCrest crest = HeraldryCrest.forId(room.getHouse().getOwner().getVariables().getVar(Variable.HERALDRY_CREST));
if (crest != null) {
return baseObjectId + crest.getOffset();
} else {
System.out.println("Player lost crest?");
return baseObjectId;
}
}
@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;
}
}