package entity;
import java.util.LinkedHashMap;
import java.util.Map;
import org.apache.commons.lang3.text.WordUtils;
import core.Main;
public class ArmorEntity extends ItemEntity {
private int armorBonus;
private int maxDexBonus;
private int armorCheckPenalty;
private String cost;
private boolean isMagic;
private int spellFailureChance;
private int magicBonus; // if isMagic == false, leave null
private String magicProperties; // if isMagic == false, leave null
private String speed30;
private String speed20;
private double weight;
public ArmorEntity(LinkedHashMap<String, String> input) {
super(input);
this.TYPE = DNDEntity.type.ARMOR;
passedData = input;
for (Map.Entry<String, String> entry : input.entrySet()) {
String field = entry.getKey();
String value = entry.getValue();
switch (field) {
case "NAME":
String tempN = WordUtils.capitalize(value.toLowerCase());
tempN = WordUtils.capitalize(tempN);
this.name = tempN;
break;
case "COST":
this.cost = value;
break;
case "ARMORBONUS":
if (!value.equalsIgnoreCase("-"))
this.armorBonus = Integer.parseInt(value);
else
this.armorBonus = 0;
break;
case "MAXDEXBONUS":
if (!value.equalsIgnoreCase("-"))
this.maxDexBonus = Integer.parseInt(value);
else
this.maxDexBonus = 0;
break;
case "ARMORCHECKPENALTY":
if (!value.equalsIgnoreCase("-"))
this.armorCheckPenalty = Integer.parseInt(value);
else
this.armorCheckPenalty = 0;
break;
case "ARCANESPELLFAILURECHANCE":
if (!value.equalsIgnoreCase("-"))
this.maxDexBonus = Integer.parseInt(value.split("%")[0]);
else
this.maxDexBonus = 0;
break;
case "ISMAGIC":
if(value.equalsIgnoreCase("true"))
this.isMagic = true;
else
this.isMagic = false;
break;
case "MAGICPROPERTIES":
if(this.isMagic)
this.magicProperties = value;
break;
case "SPEED30FT":
this.speed30 = value;
break;
case "SPEED20FT":
this.speed20 = value;
break;
case "WEIGHT":
String temp;
temp = value.replaceAll("[^\\d]+", "");
if (temp.length() == 0)
this.weight = 0;
else
this.weight = Double.parseDouble(temp);
break;
case "DESCRIPTION":
this.description = value;
break;
default:
break;
}
}
}
public int getSpellFailureChance() {
return spellFailureChance;
}
public void setSpellFailureChance(int spellFailureChance) {
this.spellFailureChance = spellFailureChance;
}
public String getSpeed30() {
return speed30;
}
public void setSpeed30(String speed30) {
this.speed30 = speed30;
}
public String getSpeed20() {
return speed20;
}
public void setSpeed20(String speed20) {
this.speed20 = speed20;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
@Override
public void search(String searchString, Thread runningThread)
throws InterruptedException {
if(this.name != null && this.name.toLowerCase().contains(searchString)){
Main.gameState.searchResultsLock.acquire();
//System.out.println("Lock aquired, adding " + this.name + " to results list.");
Main.gameState.searchResults.put(this.name, this);
Main.gameState.searchResultsLock.release();
//System.out.println("Lock released.");
return;
}
if(this.description != null && this.description.toLowerCase().contains(searchString)){
Main.gameState.searchResultsLock.acquire();
//System.out.println("Lock aquired, adding " + this.name + " to results list.");
Main.gameState.searchResults.put(this.name, this);
Main.gameState.searchResultsLock.release();
//System.out.println("Lock released.");
return;
}
}
public int getArmorBonus() {
return armorBonus;
}
public void setArmorBonus(int armorBonus) {
this.armorBonus = armorBonus;
}
public int getMaxDexBonus() {
return maxDexBonus;
}
public void setMaxDexBonus(int maxDexBonus) {
this.maxDexBonus = maxDexBonus;
}
public int getArmorCheckPenalty() {
return armorCheckPenalty;
}
public void setArmorCheckPenalty(int armorCheckPenalty) {
this.armorCheckPenalty = armorCheckPenalty;
}
public String getCost() {
return cost;
}
public void setCost(String cost) {
this.cost = cost;
}
public boolean isMagic() {
return isMagic;
}
public void setMagic(boolean isMagic) {
this.isMagic = isMagic;
}
public int getMagicBonus() {
return magicBonus;
}
public void setMagicBonus(int magicBonus) {
this.magicBonus = magicBonus;
}
public String getMagicProperties() {
return magicProperties;
}
public void setMagicProperties(String magicProperties) {
this.magicProperties = magicProperties;
}
@Override
public String saveCustomContent() {
String output = "";
return output;
}
}