/* * To change this template, choose Tools | Templates * and open the template in the editor. */ /** * * @author shs.student */ import java.util.Iterator; import java.util.Scanner; import java.util.Vector; import javax.swing.JOptionPane; import Item.ItemEffect; public class Item { public abstract class ItemEffect { public int value; protected int duration=1; protected boolean used=false; public abstract void applyTo(Object other); protected void use() { duration--; if(duration <= 0) used=true; } } public class HealthModifier extends ItemEffect { @Override public void applyTo(Object other) { other.health += value; use(); } } public enum StatusEffects { EFFECT_POISON, EFFECT_PARALYSIS } public class StatusModifier extends ItemEffect { public StatusEffects ModifiedEffect; public boolean Cures = false; @Override public void applyTo(Object other) { if(Cures) other.RemoveStatus(ModifiedEffect); else other.AddStatus(ModifiedEffect); use(); } } public class InventoryItem { protected Vector Effects = new Vector(); public InventoryItem() { HealthModifier hm = new HealthModifier(); hm.value = 50; Effects.add(hm); StatusModifier sm = new StatusModifier(); sm.ModifiedEffect = StatusEffects.EFFECT_PARALYSIS; sm.Cures = true; Effects.add(hm); } public void UseItem(Object other) { Iterator itr = Effects.iterator(); while(itr.hasNext()) ((ItemEffect) itr).applyTo(other); } } }