2014-01-17 21:47:23 +00:00
|
|
|
package WayofTime.alchemicalWizardry.common.spell.complex;
|
|
|
|
|
2014-01-18 00:59:31 +00:00
|
|
|
import java.util.ArrayList;
|
2014-01-18 03:44:00 +00:00
|
|
|
import java.util.LinkedList;
|
2014-01-18 00:59:31 +00:00
|
|
|
import java.util.List;
|
2014-01-17 21:47:23 +00:00
|
|
|
|
2014-01-18 00:59:31 +00:00
|
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
|
|
import net.minecraft.item.ItemStack;
|
|
|
|
import net.minecraft.world.World;
|
|
|
|
import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellEffect;
|
2014-01-18 16:45:31 +00:00
|
|
|
import WayofTime.alchemicalWizardry.common.spell.complex.enhancement.SpellEnhancement;
|
2014-01-18 00:59:31 +00:00
|
|
|
|
|
|
|
public abstract class SpellParadigm
|
|
|
|
{
|
|
|
|
protected List<SpellEffect> bufferedEffectList = new ArrayList();
|
2014-01-25 14:22:59 +00:00
|
|
|
public List<String> effectList = new LinkedList();
|
2014-01-18 00:59:31 +00:00
|
|
|
|
|
|
|
public void addBufferedEffect(SpellEffect effect)
|
|
|
|
{
|
|
|
|
if(effect!=null)
|
|
|
|
{
|
|
|
|
this.bufferedEffectList.add(effect);
|
2014-01-18 03:44:00 +00:00
|
|
|
|
|
|
|
effectList.add(effect.getClass().getName());
|
2014-01-18 00:59:31 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void modifyBufferedEffect(SpellModifier modifier)
|
|
|
|
{
|
|
|
|
SpellEffect effect = this.getBufferedEffect();
|
|
|
|
if(effect!=null)
|
|
|
|
{
|
|
|
|
effect.modifyEffect(modifier);
|
2014-01-18 03:44:00 +00:00
|
|
|
|
|
|
|
effectList.add(modifier.getClass().getName());
|
2014-01-18 00:59:31 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void applyEnhancement(SpellEnhancement enh)
|
|
|
|
{
|
2014-01-18 03:44:00 +00:00
|
|
|
if(enh!=null)
|
2014-01-18 00:59:31 +00:00
|
|
|
{
|
2014-01-18 03:44:00 +00:00
|
|
|
if(bufferedEffectList.isEmpty())
|
|
|
|
{
|
|
|
|
this.enhanceParadigm(enh);
|
|
|
|
}
|
|
|
|
else
|
2014-01-18 00:59:31 +00:00
|
|
|
{
|
2014-01-18 03:44:00 +00:00
|
|
|
SpellEffect effect = this.getBufferedEffect();
|
|
|
|
if(effect!=null)
|
|
|
|
{
|
|
|
|
effect.enhanceEffect(enh);
|
|
|
|
}
|
2014-01-18 00:59:31 +00:00
|
|
|
}
|
2014-01-18 03:44:00 +00:00
|
|
|
|
|
|
|
effectList.add(enh.getClass().getName());
|
2014-01-18 00:59:31 +00:00
|
|
|
}
|
2014-01-18 03:44:00 +00:00
|
|
|
|
2014-01-18 00:59:31 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public abstract void enhanceParadigm(SpellEnhancement enh);
|
|
|
|
public abstract void castSpell(World world, EntityPlayer entityPlayer, ItemStack itemStack);
|
|
|
|
|
|
|
|
public void applySpellEffect(SpellEffect effect)
|
|
|
|
{
|
|
|
|
effect.modifyParadigm(this);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void applyAllSpellEffects()
|
|
|
|
{
|
|
|
|
for(SpellEffect effect : bufferedEffectList)
|
|
|
|
{
|
|
|
|
this.applySpellEffect(effect);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public SpellEffect getBufferedEffect()
|
|
|
|
{
|
|
|
|
if(bufferedEffectList.isEmpty())
|
|
|
|
{
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
return bufferedEffectList.get(bufferedEffectList.size()-1);
|
|
|
|
}
|
|
|
|
}
|
2014-01-18 23:05:25 +00:00
|
|
|
|
|
|
|
public int getTotalCost()
|
|
|
|
{
|
|
|
|
int cost = 0;
|
|
|
|
if(this.bufferedEffectList!=null && !this.bufferedEffectList.isEmpty())
|
|
|
|
{
|
|
|
|
if(this instanceof SpellParadigmProjectile)
|
|
|
|
{
|
|
|
|
for(SpellEffect effect : bufferedEffectList)
|
|
|
|
{
|
|
|
|
cost+=effect.getCostForProjectile();
|
|
|
|
}
|
|
|
|
}else if(this instanceof SpellParadigmSelf)
|
|
|
|
{
|
|
|
|
for(SpellEffect effect : bufferedEffectList)
|
|
|
|
{
|
|
|
|
cost+=effect.getCostForSelf();
|
|
|
|
}
|
|
|
|
}else if(this instanceof SpellParadigmMelee)
|
|
|
|
{
|
|
|
|
for(SpellEffect effect : bufferedEffectList)
|
|
|
|
{
|
|
|
|
cost+=effect.getCostForMelee();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-01-19 01:29:20 +00:00
|
|
|
return (int)(cost*Math.sqrt(this.bufferedEffectList.size()));
|
2014-01-18 23:05:25 +00:00
|
|
|
}
|
|
|
|
|
2014-01-19 01:29:20 +00:00
|
|
|
return getDefaultCost();
|
2014-01-18 23:05:25 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public abstract int getDefaultCost();
|
2014-01-19 21:15:10 +00:00
|
|
|
|
|
|
|
public int getBufferedEffectPower()
|
|
|
|
{
|
|
|
|
SpellEffect eff = this.getBufferedEffect();
|
|
|
|
|
|
|
|
if(eff!=null)
|
|
|
|
{
|
|
|
|
return eff.getPowerEnhancements();
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getBufferedEffectCost()
|
|
|
|
{
|
|
|
|
SpellEffect eff = this.getBufferedEffect();
|
|
|
|
|
|
|
|
if(eff!=null)
|
|
|
|
{
|
|
|
|
return eff.getCostEnhancements();
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getBufferedEffectPotency()
|
|
|
|
{
|
|
|
|
SpellEffect eff = this.getBufferedEffect();
|
|
|
|
|
|
|
|
if(eff!=null)
|
|
|
|
{
|
|
|
|
return eff.getPotencyEnhancements();
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
2014-01-17 21:47:23 +00:00
|
|
|
}
|