502 lines
15 KiB
Java
502 lines
15 KiB
Java
![]() |
package WayofTime.alchemicalWizardry.api.spell;
|
||
|
|
||
|
import net.minecraft.nbt.NBTTagCompound;
|
||
|
import WayofTime.alchemicalWizardry.common.spell.complex.enhancement.SpellEnhancement;
|
||
|
|
||
|
/**
|
||
|
* New wrapper class to enclose the ComplexSpellEffect
|
||
|
*/
|
||
|
public class SpellEffect
|
||
|
{
|
||
|
public ComplexSpellType type;
|
||
|
public ComplexSpellModifier modifier;
|
||
|
|
||
|
protected int powerEnhancement;
|
||
|
protected int costEnhancement;
|
||
|
protected int potencyEnhancement;
|
||
|
|
||
|
public SpellEffect()
|
||
|
{
|
||
|
this(ComplexSpellType.FIRE);
|
||
|
}
|
||
|
|
||
|
public SpellEffect(ComplexSpellType type)
|
||
|
{
|
||
|
this(type, ComplexSpellModifier.DEFAULT);
|
||
|
}
|
||
|
|
||
|
public SpellEffect(ComplexSpellType type, ComplexSpellModifier modifier)
|
||
|
{
|
||
|
this.type = type;
|
||
|
this.modifier = modifier;
|
||
|
|
||
|
this.powerEnhancement = 0;
|
||
|
this.potencyEnhancement = 0;
|
||
|
this.costEnhancement = 0;
|
||
|
}
|
||
|
|
||
|
public void enhanceEffect(SpellEnhancement enh)
|
||
|
{
|
||
|
if (enh != null)
|
||
|
{
|
||
|
switch (enh.getState())
|
||
|
{
|
||
|
case SpellEnhancement.POWER:
|
||
|
this.powerEnhancement++;
|
||
|
break;
|
||
|
case SpellEnhancement.EFFICIENCY:
|
||
|
this.costEnhancement++;
|
||
|
break;
|
||
|
case SpellEnhancement.POTENCY:
|
||
|
this.potencyEnhancement++;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void modifyEffect(ComplexSpellModifier mod)
|
||
|
{
|
||
|
if(mod != null)
|
||
|
{
|
||
|
this.modifier = mod;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void modifyParadigm(SpellParadigm parad) //When modifying the paradigm it will instead get the class name and ask the registry
|
||
|
{
|
||
|
if(parad == null)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
Class paraClass = parad.getClass();
|
||
|
|
||
|
ComplexSpellEffect effect = SpellEffectRegistry.getSpellEffect(paraClass, type, modifier, powerEnhancement, potencyEnhancement, costEnhancement);
|
||
|
|
||
|
if(effect != null)
|
||
|
{
|
||
|
effect.modifyParadigm(parad);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public int getCostOfEffect(SpellParadigm parad)
|
||
|
{
|
||
|
if(parad == null)
|
||
|
{
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
Class paraClass = parad.getClass();
|
||
|
|
||
|
ComplexSpellEffect effect = SpellEffectRegistry.getSpellEffect(paraClass, type, modifier, powerEnhancement, potencyEnhancement, costEnhancement);
|
||
|
|
||
|
if(effect == null)
|
||
|
{
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
return effect.getCostOfEffect();
|
||
|
}
|
||
|
|
||
|
public NBTTagCompound getTag()
|
||
|
{
|
||
|
NBTTagCompound tag = new NBTTagCompound();
|
||
|
|
||
|
tag.setString("Class", this.getClass().getName());
|
||
|
tag.setString("type", SpellEffectRegistry.getKeyForType(type));
|
||
|
tag.setString("modifier", SpellEffectRegistry.getKeyForModifier(modifier));
|
||
|
tag.setInteger("power", powerEnhancement);
|
||
|
tag.setInteger("cost", costEnhancement);
|
||
|
tag.setInteger("potency", potencyEnhancement);
|
||
|
|
||
|
return tag;
|
||
|
}
|
||
|
|
||
|
public static SpellEffect getEffectFromTag(NBTTagCompound tag)
|
||
|
{
|
||
|
try
|
||
|
{
|
||
|
Class clazz = Class.forName(tag.getString("Class"));
|
||
|
if (clazz != null)
|
||
|
{
|
||
|
try
|
||
|
{
|
||
|
Object obj = clazz.newInstance();
|
||
|
if (obj instanceof SpellEffect)
|
||
|
{
|
||
|
SpellEffect eff = (SpellEffect) obj;
|
||
|
|
||
|
eff.type = SpellEffectRegistry.getTypeForKey(tag.getString("type"));
|
||
|
eff.modifier = SpellEffectRegistry.getModifierForKey(tag.getString("modifier"));
|
||
|
eff.powerEnhancement = tag.getInteger("power");
|
||
|
eff.costEnhancement = tag.getInteger("cost");
|
||
|
eff.potencyEnhancement = tag.getInteger("potency");
|
||
|
|
||
|
return eff;
|
||
|
}
|
||
|
} catch (InstantiationException e)
|
||
|
{
|
||
|
e.printStackTrace();
|
||
|
} catch (IllegalAccessException e)
|
||
|
{
|
||
|
e.printStackTrace();
|
||
|
}
|
||
|
}
|
||
|
} catch (ClassNotFoundException e)
|
||
|
{
|
||
|
e.printStackTrace();
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
public int getPowerEnhancements()
|
||
|
{
|
||
|
return this.powerEnhancement;
|
||
|
}
|
||
|
|
||
|
public int getPotencyEnhancements()
|
||
|
{
|
||
|
return this.potencyEnhancement;
|
||
|
}
|
||
|
|
||
|
public int getCostEnhancements()
|
||
|
{
|
||
|
return this.costEnhancement;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//package WayofTime.alchemicalWizardry.common.spell.complex.effect;
|
||
|
//
|
||
|
//import WayofTime.alchemicalWizardry.common.spell.complex.*;
|
||
|
//import WayofTime.alchemicalWizardry.common.spell.complex.enhancement.SpellEnhancement;
|
||
|
//import net.minecraft.nbt.NBTTagCompound;
|
||
|
//
|
||
|
//public abstract class SpellEffect
|
||
|
//{
|
||
|
// protected int modifierState;
|
||
|
// protected int powerEnhancement;
|
||
|
// protected int costEnhancement;
|
||
|
// protected int potencyEnhancement;
|
||
|
//
|
||
|
// public SpellEffect()
|
||
|
// {
|
||
|
// this.modifierState = SpellModifier.DEFAULT;
|
||
|
// this.powerEnhancement = 0;
|
||
|
// this.costEnhancement = 0;
|
||
|
// this.potencyEnhancement = 0;
|
||
|
// }
|
||
|
//
|
||
|
// public void enhanceEffect(SpellEnhancement enh)
|
||
|
// {
|
||
|
// if (enh != null)
|
||
|
// {
|
||
|
// switch (enh.getState())
|
||
|
// {
|
||
|
// case SpellEnhancement.POWER:
|
||
|
// this.powerEnhancement++;
|
||
|
// break;
|
||
|
// case SpellEnhancement.EFFICIENCY:
|
||
|
// this.costEnhancement++;
|
||
|
// break;
|
||
|
// case SpellEnhancement.POTENCY:
|
||
|
// this.potencyEnhancement++;
|
||
|
// break;
|
||
|
// }
|
||
|
// }
|
||
|
// }
|
||
|
//
|
||
|
// public void modifyEffect(SpellModifier mod)
|
||
|
// {
|
||
|
// if (mod != null)
|
||
|
// modifierState = mod.getModifier();
|
||
|
// }
|
||
|
//
|
||
|
// public void modifyParadigm(SpellParadigm parad) //When modifying the paradigm it will instead get the class name and ask the registry
|
||
|
// {
|
||
|
// if (parad instanceof SpellParadigmProjectile)
|
||
|
// {
|
||
|
// this.modifyProjectileParadigm((SpellParadigmProjectile) parad);
|
||
|
// }
|
||
|
// if (parad instanceof SpellParadigmSelf)
|
||
|
// {
|
||
|
// this.modifySelfParadigm((SpellParadigmSelf) parad);
|
||
|
// }
|
||
|
// if (parad instanceof SpellParadigmMelee)
|
||
|
// {
|
||
|
// this.modifyMeleeParadigm((SpellParadigmMelee) parad);
|
||
|
// }
|
||
|
// if (parad instanceof SpellParadigmTool)
|
||
|
// {
|
||
|
// this.modifyToolParadigm((SpellParadigmTool) parad);
|
||
|
// }
|
||
|
// }
|
||
|
//
|
||
|
// public void modifyProjectileParadigm(SpellParadigmProjectile parad)
|
||
|
// {
|
||
|
// switch (modifierState)
|
||
|
// {
|
||
|
// case SpellModifier.DEFAULT:
|
||
|
// this.defaultModificationProjectile(parad);
|
||
|
// break;
|
||
|
// case SpellModifier.OFFENSIVE:
|
||
|
// this.offensiveModificationProjectile(parad);
|
||
|
// break;
|
||
|
// case SpellModifier.DEFENSIVE:
|
||
|
// this.defensiveModificationProjectile(parad);
|
||
|
// break;
|
||
|
// case SpellModifier.ENVIRONMENTAL:
|
||
|
// this.environmentalModificationProjectile(parad);
|
||
|
// break;
|
||
|
// }
|
||
|
// }
|
||
|
//
|
||
|
// public abstract void defaultModificationProjectile(SpellParadigmProjectile parad);
|
||
|
//
|
||
|
// public abstract void offensiveModificationProjectile(SpellParadigmProjectile parad);
|
||
|
//
|
||
|
// public abstract void defensiveModificationProjectile(SpellParadigmProjectile parad);
|
||
|
//
|
||
|
// public abstract void environmentalModificationProjectile(SpellParadigmProjectile parad);
|
||
|
//
|
||
|
// public void modifySelfParadigm(SpellParadigmSelf parad)
|
||
|
// {
|
||
|
// switch (modifierState)
|
||
|
// {
|
||
|
// case SpellModifier.DEFAULT:
|
||
|
// this.defaultModificationSelf(parad);
|
||
|
// break;
|
||
|
// case SpellModifier.OFFENSIVE:
|
||
|
// this.offensiveModificationSelf(parad);
|
||
|
// break;
|
||
|
// case SpellModifier.DEFENSIVE:
|
||
|
// this.defensiveModificationSelf(parad);
|
||
|
// break;
|
||
|
// case SpellModifier.ENVIRONMENTAL:
|
||
|
// this.environmentalModificationSelf(parad);
|
||
|
// break;
|
||
|
// }
|
||
|
// }
|
||
|
//
|
||
|
// public abstract void defaultModificationSelf(SpellParadigmSelf parad);
|
||
|
//
|
||
|
// public abstract void offensiveModificationSelf(SpellParadigmSelf parad);
|
||
|
//
|
||
|
// public abstract void defensiveModificationSelf(SpellParadigmSelf parad);
|
||
|
//
|
||
|
// public abstract void environmentalModificationSelf(SpellParadigmSelf parad);
|
||
|
//
|
||
|
// public void modifyMeleeParadigm(SpellParadigmMelee parad)
|
||
|
// {
|
||
|
// switch (modifierState)
|
||
|
// {
|
||
|
// case SpellModifier.DEFAULT:
|
||
|
// this.defaultModificationMelee(parad);
|
||
|
// break;
|
||
|
// case SpellModifier.OFFENSIVE:
|
||
|
// this.offensiveModificationMelee(parad);
|
||
|
// break;
|
||
|
// case SpellModifier.DEFENSIVE:
|
||
|
// this.defensiveModificationMelee(parad);
|
||
|
// break;
|
||
|
// case SpellModifier.ENVIRONMENTAL:
|
||
|
// this.environmentalModificationMelee(parad);
|
||
|
// break;
|
||
|
// }
|
||
|
// }
|
||
|
//
|
||
|
// public abstract void defaultModificationMelee(SpellParadigmMelee parad);
|
||
|
//
|
||
|
// public abstract void offensiveModificationMelee(SpellParadigmMelee parad);
|
||
|
//
|
||
|
// public abstract void defensiveModificationMelee(SpellParadigmMelee parad);
|
||
|
//
|
||
|
// public abstract void environmentalModificationMelee(SpellParadigmMelee parad);
|
||
|
//
|
||
|
// public void modifyToolParadigm(SpellParadigmTool parad)
|
||
|
// {
|
||
|
// switch (modifierState)
|
||
|
// {
|
||
|
// case SpellModifier.DEFAULT:
|
||
|
// this.defaultModificationTool(parad);
|
||
|
// break;
|
||
|
// case SpellModifier.OFFENSIVE:
|
||
|
// this.offensiveModificationTool(parad);
|
||
|
// break;
|
||
|
// case SpellModifier.DEFENSIVE:
|
||
|
// this.defensiveModificationTool(parad);
|
||
|
// break;
|
||
|
// case SpellModifier.ENVIRONMENTAL:
|
||
|
// this.environmentalModificationTool(parad);
|
||
|
// break;
|
||
|
// }
|
||
|
// }
|
||
|
//
|
||
|
// public abstract void defaultModificationTool(SpellParadigmTool parad);
|
||
|
//
|
||
|
// public abstract void offensiveModificationTool(SpellParadigmTool parad);
|
||
|
//
|
||
|
// public abstract void defensiveModificationTool(SpellParadigmTool parad);
|
||
|
//
|
||
|
// public abstract void environmentalModificationTool(SpellParadigmTool parad);
|
||
|
//
|
||
|
// public int getCostForProjectile()
|
||
|
// {
|
||
|
// switch (this.modifierState)
|
||
|
// {
|
||
|
// case SpellModifier.DEFAULT:
|
||
|
// return this.getCostForDefaultProjectile();
|
||
|
// case SpellModifier.OFFENSIVE:
|
||
|
// return this.getCostForOffenseProjectile();
|
||
|
// case SpellModifier.DEFENSIVE:
|
||
|
// return this.getCostForDefenseProjectile();
|
||
|
// case SpellModifier.ENVIRONMENTAL:
|
||
|
// return this.getCostForEnvironmentProjectile();
|
||
|
// }
|
||
|
// return 0;
|
||
|
// }
|
||
|
//
|
||
|
// protected abstract int getCostForDefaultProjectile();
|
||
|
//
|
||
|
// protected abstract int getCostForOffenseProjectile();
|
||
|
//
|
||
|
// protected abstract int getCostForDefenseProjectile();
|
||
|
//
|
||
|
// protected abstract int getCostForEnvironmentProjectile();
|
||
|
//
|
||
|
// public int getCostForSelf()
|
||
|
// {
|
||
|
// switch (this.modifierState)
|
||
|
// {
|
||
|
// case SpellModifier.DEFAULT:
|
||
|
// return this.getCostForDefaultSelf();
|
||
|
// case SpellModifier.OFFENSIVE:
|
||
|
// return this.getCostForOffenseSelf();
|
||
|
// case SpellModifier.DEFENSIVE:
|
||
|
// return this.getCostForDefenseSelf();
|
||
|
// case SpellModifier.ENVIRONMENTAL:
|
||
|
// return this.getCostForEnvironmentSelf();
|
||
|
// }
|
||
|
// return 0;
|
||
|
// }
|
||
|
//
|
||
|
// protected abstract int getCostForDefaultSelf();
|
||
|
//
|
||
|
// protected abstract int getCostForOffenseSelf();
|
||
|
//
|
||
|
// protected abstract int getCostForDefenseSelf();
|
||
|
//
|
||
|
// protected abstract int getCostForEnvironmentSelf();
|
||
|
//
|
||
|
// public int getCostForMelee()
|
||
|
// {
|
||
|
// switch (this.modifierState)
|
||
|
// {
|
||
|
// case SpellModifier.DEFAULT:
|
||
|
// return this.getCostForDefaultMelee();
|
||
|
// case SpellModifier.OFFENSIVE:
|
||
|
// return this.getCostForOffenseMelee();
|
||
|
// case SpellModifier.DEFENSIVE:
|
||
|
// return this.getCostForDefenseMelee();
|
||
|
// case SpellModifier.ENVIRONMENTAL:
|
||
|
// return this.getCostForEnvironmentMelee();
|
||
|
// }
|
||
|
// return 0;
|
||
|
// }
|
||
|
//
|
||
|
// protected abstract int getCostForDefaultMelee();
|
||
|
//
|
||
|
// protected abstract int getCostForOffenseMelee();
|
||
|
//
|
||
|
// protected abstract int getCostForDefenseMelee();
|
||
|
//
|
||
|
// protected abstract int getCostForEnvironmentMelee();
|
||
|
//
|
||
|
// public int getCostForTool()
|
||
|
// {
|
||
|
// switch (this.modifierState)
|
||
|
// {
|
||
|
// case SpellModifier.DEFAULT:
|
||
|
// return this.getCostForDefaultTool();
|
||
|
// case SpellModifier.OFFENSIVE:
|
||
|
// return this.getCostForOffenseTool();
|
||
|
// case SpellModifier.DEFENSIVE:
|
||
|
// return this.getCostForDefenseTool();
|
||
|
// case SpellModifier.ENVIRONMENTAL:
|
||
|
// return this.getCostForEnvironmentTool();
|
||
|
// }
|
||
|
// return 0;
|
||
|
// }
|
||
|
//
|
||
|
// protected abstract int getCostForDefaultTool();
|
||
|
//
|
||
|
// protected abstract int getCostForOffenseTool();
|
||
|
//
|
||
|
// protected abstract int getCostForDefenseTool();
|
||
|
//
|
||
|
// protected abstract int getCostForEnvironmentTool();
|
||
|
//
|
||
|
// public int getPowerEnhancements()
|
||
|
// {
|
||
|
// return this.powerEnhancement;
|
||
|
// }
|
||
|
//
|
||
|
// public int getCostEnhancements()
|
||
|
// {
|
||
|
// return this.costEnhancement;
|
||
|
// }
|
||
|
//
|
||
|
// public int getPotencyEnhancements()
|
||
|
// {
|
||
|
// return this.potencyEnhancement;
|
||
|
// }
|
||
|
//
|
||
|
// public NBTTagCompound getTag()
|
||
|
// {
|
||
|
// NBTTagCompound tag = new NBTTagCompound();
|
||
|
//
|
||
|
// tag.setString("Class", this.getClass().getName());
|
||
|
// tag.setInteger("modifier", modifierState);
|
||
|
// tag.setInteger("power", powerEnhancement);
|
||
|
// tag.setInteger("cost", costEnhancement);
|
||
|
// tag.setInteger("potency", potencyEnhancement);
|
||
|
//
|
||
|
// return tag;
|
||
|
// }
|
||
|
//
|
||
|
// public static SpellEffect getEffectFromTag(NBTTagCompound tag)
|
||
|
// {
|
||
|
// try
|
||
|
// {
|
||
|
// Class clazz = Class.forName(tag.getString("Class"));
|
||
|
// if (clazz != null)
|
||
|
// {
|
||
|
// try
|
||
|
// {
|
||
|
// Object obj = clazz.newInstance();
|
||
|
// if (obj instanceof SpellEffect)
|
||
|
// {
|
||
|
// SpellEffect eff = (SpellEffect) obj;
|
||
|
//
|
||
|
// eff.modifierState = tag.getInteger("modifier");
|
||
|
// eff.powerEnhancement = tag.getInteger("power");
|
||
|
// eff.costEnhancement = tag.getInteger("cost");
|
||
|
// eff.potencyEnhancement = tag.getInteger("potency");
|
||
|
//
|
||
|
// return eff;
|
||
|
// }
|
||
|
// } catch (InstantiationException e)
|
||
|
// {
|
||
|
// e.printStackTrace();
|
||
|
// } catch (IllegalAccessException e)
|
||
|
// {
|
||
|
// e.printStackTrace();
|
||
|
// }
|
||
|
// }
|
||
|
// } catch (ClassNotFoundException e)
|
||
|
// {
|
||
|
// e.printStackTrace();
|
||
|
// }
|
||
|
// return null;
|
||
|
// }
|
||
|
//}
|