package data.scripts.world;

import java.util.List;
import java.util.ArrayList;
import com.fs.starfarer.api.campaign.CargoAPI;
import com.fs.starfarer.api.fleet.FleetMemberType;
import com.fs.starfarer.api.campaign.SectorAPI;


 public class SBGDatabase
 {
  public SBGDatabase() {init_weapons();init_hulls();} 


  public void add_hulls(CargoAPI cargo,int type_n)
   {
    for (int i=0;i<type_n;++i) add_random_hull(cargo);
   }

   private void add_random_hull(CargoAPI cargo)
   {
	for(;;)
		{
		 int idx = (int)(Math.random()*hulls_list.size());
		 String name=(String)hulls_list.get(idx);

		 boolean added=true;
		 try {cargo.addMothballedShip(FleetMemberType.SHIP, name, null);}
		 catch (Exception e) {added=false;}
		 if (added==true) return;
		 hulls_list.remove(idx);
		}	
   }

   public void add_wings(CargoAPI cargo,int type_n)
   {
    for (int i=0;i<type_n;++i) add_random_wing(cargo);
   }

   private void add_random_wing(CargoAPI cargo)
   {
	for(;;)
		{
		 int idx = (int)(Math.random()*wings_list.size());
		 String name=(String)wings_list.get(idx);

		 boolean added=true;
		 try {cargo.addMothballedShip(FleetMemberType.FIGHTER_WING, name, null);}
		 catch (Exception e) {added=false;}
		 if (added==true) return;
		 wings_list.remove(idx);
		}	
   }

   
   public void add_random_weapons(SectorAPI sector,CargoAPI cargo,int type_n)
   {
	List weaponIds = sector.getAllWeaponIds();
	for (int i = 0; i < type_n; i++) 
		{
		 String weaponId = (String) weaponIds.get((int) (weaponIds.size() * Math.random()));
		 int quantity = (int)(Math.random() * 4f + 1f);
		 cargo.addWeapons(weaponId, quantity);
		}
   }

   public void add_wp_weapons(CargoAPI cargo,int type_n)
   {add_wp_weapons(cargo,type_n,1000);}

   public void add_wp_weapons(CargoAPI cargo,int type_n,int max)
   {
	for (int i = 0; i < type_n; i++) 
		{
		 String weaponId = (String) wp_weapons.get((int) (wp_weapons.size() * Math.random()));
		 int quantity = (int)(Math.random() * 4f + 1f);
		 quantity=Math.min(quantity,max);
		 cargo.addWeapons(weaponId, quantity);
		}
   } 

   private ArrayList wp_weapons;

   private void init_weapons()
   {
	wp_weapons=new ArrayList();
	wp_weapons.add("triplehveld");
	wp_weapons.add("hvy_laser");
	wp_weapons.add("hvy_amblaster");
	wp_weapons.add("impalerburst");
	wp_weapons.add("guardian");
	wp_weapons.add("dualheavyblaster");
	wp_weapons.add("demolitionblaster");
	wp_weapons.add("lightblaster");
	wp_weapons.add("heavygravitonbeam");
	wp_weapons.add("atroposlauncher");
	wp_weapons.add("mirv_sabot_launcher");
	wp_weapons.add("light_flak");
	wp_weapons.add("heavy_flak");
	wp_weapons.add("swarmers_rack");
	wp_weapons.add("raptors_rack");
	wp_weapons.add("mirv_blizzard_launcher");
	wp_weapons.add("raptor");
	wp_weapons.add("raptor_pod");
	wp_weapons.add("swarmer_pod");
	wp_weapons.add("sabotsrmlauncher");
	wp_weapons.add("harpoonlauncher");
	wp_weapons.add("salamanderlauncher");
	wp_weapons.add("barricade_launcher");
	wp_weapons.add("heavy_taclaser");
	wp_weapons.add("artillery");
	wp_weapons.add("disintegrator");
	wp_weapons.add("gatling_gun");
	wp_weapons.add("pilum_large_launcher");
	wp_weapons.add("harpoon_large_launcher");
	wp_weapons.add("sabot_large_launcher");
	wp_weapons.add("annihilator_medium_launcher");	  
	wp_weapons.add("barricade_pod");
	wp_weapons.add("ultra_ac");	  
	wp_weapons.add("buckshot_cannon");
	wp_weapons.add("charger_rack");
	wp_weapons.add("charger_launcher");
	wp_weapons.add("armageddon_rack");
	wp_weapons.add("mercury_rack");
	wp_weapons.add("quad_heavy_mg");
	wp_weapons.add("light_graviton_beam");
   }


  private ArrayList hulls_list;
  private ArrayList wings_list;

  private void init_hulls()
  {
   hulls_list=new ArrayList();
   wings_list=new ArrayList();

   add_stock_hulls();
   add_wp_hulls();
   add_junk_pirates_hulls();
   add_gun_runners_hulls();
   add_mod_pack_hulls();
   add_sf_extended_hulls();
   add_nomads_hulls();
   add_scrappers_hulls();
   add_hoplites_hulls();
   add_timcorp_hulls();
   add_lotus_hulls();
   add_omega_hulls();
  }

  private void add_stock_hulls()
  {
   hulls_list.add("wolf_Hull");
   hulls_list.add("hound_Hull");
   hulls_list.add("hyperion_Hull");
   hulls_list.add("shuttle_Hull");
   hulls_list.add("lasher_Hull");
   hulls_list.add("omen_Hull");
   hulls_list.add("tempest_Hull");
   hulls_list.add("brawler_Hull");
   hulls_list.add("vigilance_Hull");
   hulls_list.add("dram_Hull");
   hulls_list.add("hammerhead_Hull");
   hulls_list.add("sunder_Hull");
   hulls_list.add("condor_Hull");
   hulls_list.add("enforcer_Hull");
   hulls_list.add("buffalo_Hull");
   hulls_list.add("gemini_Hull");	
   hulls_list.add("tarsus_Hull");
   hulls_list.add("valkyrie_Hull");
   hulls_list.add("buffalo2_Hull");
   hulls_list.add("medusa_Hull");
   hulls_list.add("falcon_Hull");
   hulls_list.add("eagle_Hull");
   hulls_list.add("venture_Hull");
   hulls_list.add("apogee_Hull");
   hulls_list.add("dominator_Hull");
   hulls_list.add("aurora_Hull");
   hulls_list.add("onslaught_Hull");
   hulls_list.add("astral_Hull");
   hulls_list.add("atlas_Hull");
   hulls_list.add("conquest_Hull");
   hulls_list.add("paragon_Hull");
   hulls_list.add("odyssey_Hull");
   hulls_list.add("omega_Hull");

   wings_list.add("talon_wing");
   wings_list.add("dagger_wing");
   wings_list.add("wasp_wing");
   wings_list.add("xyphos_wing");
   wings_list.add("broadsword_wing");
   wings_list.add("piranha_wing");
   wings_list.add("trident_wing");
   wings_list.add("longbow_wing");
   wings_list.add("mining_drone_wing");
   wings_list.add("gladius_wing");
   wings_list.add("warthog_wing");
   wings_list.add("thunder_wing");
  }

  private void add_wp_hulls()  //0.22
  {
   hulls_list.add("bolter_Hull");	
   hulls_list.add("flounder_Hull");
   hulls_list.add("subjugator_Hull");
   hulls_list.add("aurora2_Hull");
   hulls_list.add("devastator_Hull");
   hulls_list.add("imp_Hull");
   hulls_list.add("pillager_Hull");
   hulls_list.add("spearhead2_Hull");
   hulls_list.add("ghost_Hull");  
   hulls_list.add("redoubt_Hull");
   hulls_list.add("wraith_Hull");
   hulls_list.add("torment_Hull");
   hulls_list.add("barrage_Hull");
   hulls_list.add("specter_Hull");
   hulls_list.add("devil_Hull");
   //hulls_list.add("scorcher_Hull");
   
   wings_list.add("barracuda_wing");
   wings_list.add("crossbow_wing");
   wings_list.add("bayonet_wing");
   wings_list.add("scourge_wing");
  }

  private void add_junk_pirates_hulls()	  //1.15
  {
   hulls_list.add("junk_pirates_sickle_Hull");
   hulls_list.add("junk_pirates_hammer_Hull");
   hulls_list.add("junk_pirates_clam_Hull");
   hulls_list.add("junk_pirates_stoatA_Hull");
   hulls_list.add("junk_pirates_stoatB_Hull");
   hulls_list.add("junk_pirates_dugong_Hull");
   hulls_list.add("junk_pirates_orca_Hull");
   hulls_list.add("junk_pirates_langoustine_Hull");
   hulls_list.add("junk_pirates_boxenstein_Hull");
   hulls_list.add("junk_pirates_boxer_Hull");
   hulls_list.add("junk_pirates_octopus_Hull");
   hulls_list.add("junk_pirates_scythe_Hull");
   hulls_list.add("junk_pirates_goat_Hull");
   
   wings_list.add("junk_pirates_spike_wing");
   wings_list.add("junk_pirates_cleat_wing");
   wings_list.add("junk_pirates_shard_wing");
  }

  private void add_gun_runners_hulls()	//1.04
  {
   hulls_list.add("GR_Gorgon_Hull");
   hulls_list.add("GR_Hades_Hull");
   hulls_list.add("GR_Paria_Hull");
   hulls_list.add("GR_Helios_Hull");	   
  }

  private void add_hoplites_hulls()	//0.3
  {
   hulls_list.add("hc_marpesia_Hull");
   hulls_list.add("hc_machai_Hull");
   hulls_list.add("hc_cratus_Hull");
   hulls_list.add("hc_soteria_Hull");
   hulls_list.add("hc_heracles_Hull");

   wings_list.add("hc_dory_wing");
  }

  private void add_scrappers_hulls()  //1.25
  {
   hulls_list.add("hadd_exxon_Hull");
   hulls_list.add("hadd_stonehead_Hull");
   hulls_list.add("hadd_refuge_Hull");
   hulls_list.add("hadd_vice_Hull");			 
   hulls_list.add("hadd_bite_Hull");			 
   hulls_list.add("hadd_manta_Hull");
   hulls_list.add("hadd_turtle_Hull");
   hulls_list.add("hadd_beast_Hull");			 
   hulls_list.add("hadd_menace_Hull");			 
   hulls_list.add("hadd_striker_Hull");	
   hulls_list.add("hadd_terra_Hull");			 
   hulls_list.add("hadd_juggernaut_Hull");			 
   hulls_list.add("hadd_homeworld_Hull");	
   hulls_list.add("hadd_battleborn_Hull");	  
   hulls_list.add("hadd_array_Hull");
   hulls_list.add("hadd_halberd_Hull");	
   //hulls_list.add("hadd_elitestriker_Hull");			 	 
				 
   wings_list.add("hadd_fang_wing");
   wings_list.add("hadd_sparrow_wing");
   wings_list.add("hadd_bat_wing");
   wings_list.add("hadd_platypus_wing");
   wings_list.add("hadd_raptor_wing");
   wings_list.add("hadd_blade_wing");
  }

  private void add_nomads_hulls() //0.7
  {
   hulls_list.add("nom_gila_monster_Hull");
   hulls_list.add("nom_komodo_Hull");
   hulls_list.add("nom_wurm_Hull");
   hulls_list.add("nom_iguana_Hull");
   hulls_list.add("nom_scorpion_Hull");	  
   hulls_list.add("nom_sandstorm_Hull");

   wings_list.add("nom_scarab_wing");
  }

  private void add_lotus_hulls()  //1.05
  {
   hulls_list.add("argos_Hull");
   hulls_list.add("blizzard_Hull");
   hulls_list.add("jackal_Hull");
   hulls_list.add("hydra_Hull");
   hulls_list.add("eventide_Hull");
   hulls_list.add("vanquish_Hull");
   hulls_list.add("pointer_Hull");
   hulls_list.add("cerberus_Hull");
   hulls_list.add("arcadia_Hull");
   hulls_list.add("rive_Hull");
   hulls_list.add("ajax_Hull");
   hulls_list.add("stingray_Hull");
   hulls_list.add("aria_Hull");
									  
   wings_list.add("bolt_wing");
   wings_list.add("cutlass_wing");
   wings_list.add("stigma_wing");
   wings_list.add("javelin_wing"); 
   wings_list.add("sarissa_wing");
  }

  private void add_mod_pack_hulls()
  {
   hulls_list.add("riht_Hull");
   hulls_list.add("lyft_Hull");
   hulls_list.add("parrot_Hull");
   hulls_list.add("scythe_Hull");
   hulls_list.add("pelican_Hull");								
   hulls_list.add("saintbernard_Hull");
   hulls_list.add("rapier_Hull");
   hulls_list.add("dachsund_Hull");
   hulls_list.add("bloodhound_Hull");
   hulls_list.add("ballast_Hull");
   hulls_list.add("deco_Hull");
   hulls_list.add("cerebus_Hull");

   wings_list.add("longsword_wing");
  }


  private void add_sf_extended_hulls()	  //0.25
  {
   hulls_list.add("centipede_Hull");
   hulls_list.add("owl_Hull");
   hulls_list.add("dragoon_Hull");
   hulls_list.add("goose_Hull");
   hulls_list.add("goosemk2_Hull  ");
   hulls_list.add("gate_Hull");
   hulls_list.add("creeper_Hull ");
   hulls_list.add("aghast_Hull");
   hulls_list.add("mynar_Hull");
   hulls_list.add("sheperd_Hull");
   hulls_list.add("fireant_Hull");
   hulls_list.add("tipi_Hull");
   hulls_list.add("oort_Hull");
   hulls_list.add("scarab_Hull");
   hulls_list.add("assel_Hull");

   wings_list.add("sparrow_wing");
  }
  
  
  private void add_timcorp_hulls()	//1.4
  {
   hulls_list.add("omega_Hull");
   hulls_list.add("zeta_Hull");
   hulls_list.add("gamma_Hull");
   hulls_list.add("ksi_Hull");
   hulls_list.add("delta_Hull");
   hulls_list.add("rho_Hull");
   hulls_list.add("lictor_Hull");
   hulls_list.add("lictor2_Hull");
   hulls_list.add("dux_Hull");
   hulls_list.add("regulator_Hull");
   hulls_list.add("executor_Hull");
   hulls_list.add("dictator_Hull");
   hulls_list.add("beta_Hull");
   hulls_list.add("alpha_Hull");
   hulls_list.add("iota_Hull");
   hulls_list.add("eta_Hull");
   hulls_list.add("censor_Hull");
   hulls_list.add("consul_Hull");
 
   wings_list.add("mu_wing");
   wings_list.add("kappa_wing");
   wings_list.add("spatha_wing");
   wings_list.add("omicron_wing");
  } 
  
  private void add_omega_hulls()
  {
   hulls_list.add("dart_Hull");
   hulls_list.add("hobbler_Hull");
   hulls_list.add("mended_Hull");
   hulls_list.add("grizzly_Hull");
   hulls_list.add("templar_Hull");
   hulls_list.add("stilletto_Hull");
   hulls_list.add("boomer_Hull");
   hulls_list.add("barrister_Hull");
   hulls_list.add("boom_Hull");
   hulls_list.add("chiron_Hull");
   hulls_list.add("phalanx_Hull");
   hulls_list.add("snap_Hull");
   hulls_list.add("tourbus_Hull");
   hulls_list.add("vermin_Hull");
   hulls_list.add("brawler2_Hull");
   hulls_list.add("heavy_hyperion_Hull");
   hulls_list.add("moth_Hull");
   hulls_list.add("ursidae_Hull");
   hulls_list.add("axehead_Hull");
   hulls_list.add("spearhead_Hull");
   hulls_list.add("buckler_Hull");
   hulls_list.add("elite_boomer_Hull");
  }
}