package com.lyeeedar.Roguelike3D.Game.Item;
import java.util.HashMap;
import com.badlogic.gdx.graphics.Camera;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.lyeeedar.Graphics.ParticleEffects.ParticleEffect;
import com.lyeeedar.Graphics.ParticleEffects.ParticleEmitter;
import com.lyeeedar.Roguelike3D.Game.GameData.Damage_Type;
import com.lyeeedar.Roguelike3D.Game.GameData.Element;
import com.lyeeedar.Roguelike3D.Game.Actor.GameActor;
import com.lyeeedar.Roguelike3D.Game.Spell.Spell;
import com.lyeeedar.Roguelike3D.Game.Spell.SpellBehaviourBolt;
import com.lyeeedar.Roguelike3D.Game.Spell.SpellBehaviourSingleDamage;
import com.lyeeedar.Roguelike3D.Graphics.Models.RiggedModels.RiggedModel;
import com.lyeeedar.Roguelike3D.Graphics.Models.RiggedModels.RiggedModelBehaviourCastSpell;
import com.lyeeedar.Roguelike3D.Graphics.Models.RiggedModels.RiggedModelNode;
import com.lyeeedar.Roguelike3D.Graphics.Models.RiggedModels.RiggedOneHandedSwing;
public class RangedWeapon extends Equipment_HAND {
private static final long serialVersionUID = -5163322429662568362L;
public enum Ranged_Weapon_Style {
ARROW,
FIREBALL
}
public static Ranged_Weapon_Style convertWeaponStyle(String style)
{
for (Ranged_Weapon_Style rws : Ranged_Weapon_Style.values())
{
if (style.equalsIgnoreCase(""+rws)) return rws;
}
return null;
}
public RangedWeapon(Ranged_Weapon_Style style,
float weight, int strength, HashMap<Element, Integer> ele_dam, HashMap<Damage_Type, Integer> dam_dam, float attack_speed,
boolean two_handed, int range, RiggedModel model) {
super(weight, strength, ele_dam, dam_dam, attack_speed, two_handed, range,
model);
if (style == Ranged_Weapon_Style.FIREBALL)
{
ParticleEffect effect = new ParticleEffect(5);
ParticleEmitter flame = new ParticleEmitter(1.5f, 1, 0.01f, 0.4f, 0.4f, 0.4f, 0, GL20.GL_SRC_ALPHA, GL20.GL_ONE, "f", "flame");
flame.createBasicEmitter(1, 1, Color.YELLOW, Color.RED, 0, 3, 0);
flame.addLight(false, 0.5f, 0.5f, Color.ORANGE, true, 0, 0, 0);
flame.calculateParticles();
effect.addEmitter(flame,
0, 0, 0);
Spell spell = new Spell("", effect, 0.5f);
spell.setDamage(dam_dam, ele_dam, strength);
spell.setBehaviour(new SpellBehaviourBolt(), new SpellBehaviourSingleDamage());
RiggedModelNode tip = model.getNode("Tip");
RiggedModelBehaviourCastSpell behaviour = new RiggedModelBehaviourCastSpell(tip, spell);
tip.setBehaviour(behaviour);
model.rootNode.setBehaviour(new RiggedOneHandedSwing(model.rootNode, weight, attack_speed));
}
}
@Override
protected void unequipped() {
}
@Override
protected void equipped(GameActor actor, int side) {
}
@Override
protected void drawed(Camera cam) {
}
@Override
protected void updated(float delta) {
}
@Override
protected void fixReferencesSuper() {
}
@Override
public Table getDescriptionWidget(Skin skin) {
return null;
}
@Override
public Table getComparisonWidget(Equippable other, Skin skin) {
return null;
}
}