package data.scripts.plugins;
import com.fs.starfarer.api.AnimationAPI;
import com.fs.starfarer.api.Global;
import com.fs.starfarer.api.combat.BeamAPI;
import com.fs.starfarer.api.combat.BeamEffectPlugin;
import com.fs.starfarer.api.combat.CombatEngineAPI;
import com.fs.starfarer.api.combat.ShipAPI;
import com.fs.starfarer.api.combat.WeaponAPI;
import com.fs.starfarer.api.util.IntervalUtil;
import java.awt.Color;
public class TraderVariablePowerBlasterEffect implements BeamEffectPlugin
{
// weapon takes 7 seconds to fully charge
private IntervalUtil weaponcooldownlvl = new IntervalUtil(4.0f, 4.0f);
private static int currentCharge = 0;
private static boolean chargedlvl1 = true;
private static boolean chargedlvl2 = false;
private static boolean chargedlvl3 = false;
private static boolean chargedlvl4 = false;
@Override
public void advance(float amount, CombatEngineAPI engine, BeamAPI beam)
{
ShipAPI ship = beam.getSource();
if (ship == null)
{
return;
}
AnimationAPI animation = beam.getWeapon().getAnimation();
WeaponAPI weapon = beam.getWeapon();
if(ship.isHulk())
{
animation.setFrame(0);
animation.pause();
}
//Global.getSoundPlayer().playSound("trader_var_blaster_intro",0.5f, 0.5f, weapon.getLocation(), ship.getVelocity());
if(weapon.isFiring())
{
weaponcooldownlvl.advance(amount);
if(weaponcooldownlvl.intervalElapsed() && currentCharge == 1) {
chargedlvl2 = true;
}
if(weaponcooldownlvl.intervalElapsed() && currentCharge == 2) {
chargedlvl3 = true;
}
if(weaponcooldownlvl.intervalElapsed() && currentCharge == 3) {
chargedlvl4 = true;
}
if(chargedlvl1 && weapon.getCooldownRemaining() == 0)
{
Global.getSoundPlayer().playSound("trader_var_blaster_intro",0.5f, 0.5f, weapon.getLocation(), ship.getVelocity());
//engine.addFloatingText(ship.getLocation(), "Power Level 1",15f,Color.GREEN,weapon.getShip(),0f,0f);
chargedlvl1 = false;
currentCharge++;
animation.setFrame(1);
animation.play();
}
if (chargedlvl2)
{
chargedlvl2 = false;
Global.getSoundPlayer().playSound("trader_var_blaster_intro",0.5f, 0.5f, weapon.getLocation(), ship.getVelocity());
engine.addFloatingText(ship.getLocation(), "Power Level 2",20f,Color.BLUE,weapon.getShip(),0f,0f);
currentCharge++;
animation.setFrame(6);
animation.play();
}
if (chargedlvl3)
{
chargedlvl3 = false;
Global.getSoundPlayer().playSound("trader_var_blaster_intro",0.5f, 0.5f, weapon.getLocation(), ship.getVelocity());
engine.addFloatingText(ship.getLocation(), "Power Level 3",25f,Color.MAGENTA,weapon.getShip(),0f,0f);
currentCharge++;
animation.setFrame(11);
animation.play();
}
if(chargedlvl4)
{
chargedlvl4 = false;
Global.getSoundPlayer().playSound("trader_var_blaster_intro",0.5f, 0.5f, weapon.getLocation(), ship.getVelocity());
engine.addFloatingText(ship.getLocation(), "Max Power Level",30f,Color.RED,weapon.getShip(),0f,0f);
currentCharge++;
animation.setFrame(16);
animation.play();
}
switch (currentCharge)
{
case 0:
{
animation.setFrame(0);
animation.pause();
break;
}
case 1:
{
if(animation.getFrame() == 5)
{
animation.setFrame(1);
animation.play();
}
break;
}
case 2:
{
if(animation.getFrame() == 10)
{
animation.setFrame(6);
animation.play();
}
break;
}
case 3:
{
if(animation.getFrame() == 15)
{
animation.setFrame(11);
animation.play();
}
break;
}
case 4:
{
if(animation.getFrame() == 20)
{
animation.setFrame(16);
animation.play();
}
break;
}
}
}
if(weapon.getChargeLevel() <= 0.1f && currentCharge > 0)
{
switch (currentCharge)
{
case 1:
{
Global.getSoundPlayer().playSound("trader_var_blaster_s1_launch", 1f, 1f, weapon.getLocation(), ship.getVelocity());
engine.spawnProjectile(ship, weapon, "trader_variable_power_blaster_s1", weapon.getLocation(), weapon.getCurrAngle(), ship.getVelocity());
ship.getFluxTracker().increaseFlux(500, false);
weapon.setRemainingCooldownTo(0.5f);
animation.setFrame(0);
animation.pause();
weaponcooldownlvl.forceIntervalElapsed();
currentCharge = 0;
chargedlvl1 = true;
chargedlvl2 = false;
chargedlvl3 = false;
chargedlvl4 = false;
return;
}
case 2:
{
Global.getSoundPlayer().playSound("trader_var_blaster_s2_launch", 1f, 1f, weapon.getLocation(), ship.getVelocity());
engine.spawnProjectile(ship, weapon, "trader_variable_power_blaster_s2", weapon.getLocation(), weapon.getCurrAngle(), ship.getVelocity());
ship.getFluxTracker().increaseFlux(500, false);
weapon.setRemainingCooldownTo(0.5f);
animation.setFrame(0);
animation.pause();
weaponcooldownlvl.forceIntervalElapsed();
currentCharge = 0;
chargedlvl1 = true;
chargedlvl2 = false;
chargedlvl3 = false;
chargedlvl4 = false;
return;
}
case 3:
{
Global.getSoundPlayer().playSound("trader_var_blaster_s3_launch",1f, 1f, weapon.getLocation(), ship.getVelocity());
engine.spawnProjectile(ship, weapon,"trader_variable_power_blaster_s3", weapon.getLocation(), weapon.getCurrAngle(), ship.getVelocity());
ship.getFluxTracker().increaseFlux(500, false);
weapon.setRemainingCooldownTo(0.5f);
animation.setFrame(0);
animation.pause();
weaponcooldownlvl.forceIntervalElapsed();
currentCharge = 0;
chargedlvl1 = true;
chargedlvl2 = false;
chargedlvl3 = false;
chargedlvl4 = false;
return;
}
case 4:
{
Global.getSoundPlayer().playSound("trader_var_blaster_s4_launch",1f, 1f, weapon.getLocation(), ship.getVelocity());
engine.spawnProjectile(ship, weapon,"trader_variable_power_blaster", weapon.getLocation(), weapon.getCurrAngle(), ship.getVelocity());
ship.getFluxTracker().increaseFlux(500, false);
weapon.setRemainingCooldownTo(0.5f);
animation.setFrame(0);
animation.pause();
weaponcooldownlvl.forceIntervalElapsed();
currentCharge = 0;
chargedlvl1 = true;
chargedlvl2 = false;
chargedlvl3 = false;
chargedlvl4 = false;
return;
}
}
}
}//advance
}