package modtweaker.mods.tconstruct.actions;
import minetweaker.IUndoableAction;
import modtweaker.brackets.util.IMaterial;
import slimeknights.tconstruct.library.materials.HeadMaterialStats;
import slimeknights.tconstruct.library.materials.IMaterialStats;
import slimeknights.tconstruct.library.materials.Material;
/**
* Created by Jared on 6/16/2016.
*/
public class SetAttackAction implements IUndoableAction {
private final IMaterial material;
private final String stat;
private final float newValue;
private final float oldValue;
public SetAttackAction(IMaterial material, String stat, float newValue) {
this.material = material;
this.stat = stat;
this.newValue = newValue;
this.oldValue = ((HeadMaterialStats) ((Material) material.getInternal()).getStats("head")).attack;
}
private static void set(Material material, String stat, float attack) {
IMaterialStats oldStat = material.getStats(stat);
if (oldStat instanceof HeadMaterialStats) {
HeadMaterialStats headStat = (HeadMaterialStats) oldStat;
HeadMaterialStats newHead = new HeadMaterialStats(headStat.durability, headStat.miningspeed, attack, headStat.harvestLevel);
material.addStats(newHead);
}
}
@Override
public void apply() {
set((Material) material.getInternal(), stat, newValue);
}
@Override
public boolean canUndo() {
return true;
}
@Override
public void undo() {
set((Material) material.getInternal(), stat, oldValue);
}
@Override
public String describe() {
return "Setting Attack of " + material.getName() + " to " + newValue + " for " + stat;
}
@Override
public String describeUndo() {
return "Reverting Attack of " + material.getName() + " to " + oldValue + " for " + stat;
}
@Override
public Object getOverrideKey() {
return null;
}
}