001package com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special; 002 003import com.fs.starfarer.api.Global; 004import com.fs.starfarer.api.campaign.CargoAPI; 005import com.fs.starfarer.api.campaign.InteractionDialogAPI; 006import com.fs.starfarer.api.campaign.PlanetAPI; 007import com.fs.starfarer.api.campaign.econ.CommoditySpecAPI; 008import com.fs.starfarer.api.impl.campaign.ids.Entities; 009import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.SalvageSpecialInteraction.SalvageSpecialData; 010import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.SalvageSpecialInteraction.SalvageSpecialPlugin; 011 012public class CargoManifestSpecial extends BaseSalvageSpecial { 013 014 015 public static class CargoManifestSpecialData implements SalvageSpecialData { 016 public String commodityId = null; 017 public float min; 018 public float max; 019 public CargoManifestSpecialData(String commodityId, float min, float max) { 020 this.commodityId = commodityId; 021 this.min = min; 022 this.max = max; 023 } 024 025 public SalvageSpecialPlugin createSpecialPlugin() { 026 return new CargoManifestSpecial(); 027 } 028 } 029 030 private CargoManifestSpecialData data; 031 032 public CargoManifestSpecial() { 033 } 034 035 036 @Override 037 public void init(InteractionDialogAPI dialog, Object specialData) { 038 super.init(dialog, specialData); 039 040 data = (CargoManifestSpecialData) specialData; 041 042 initManifest(); 043 } 044 045 private void initManifest() { 046 047 CommoditySpecAPI spec = Global.getSettings().getCommoditySpec(data.commodityId); 048 049 if (spec == null) { 050 initNothing(); 051 return; 052 } 053 054 boolean debris = Entities.DEBRIS_FIELD_SHARED.equals(entity.getCustomEntityType()); 055 String name = "sent to the $shortName"; 056 if (debris) name = "searching through the debris"; 057 if (entity instanceof PlanetAPI) { 058 name = "sent to the surface"; 059 } 060 061 String text1 = "A cargo manifest found by the salvage crews " + name + " indicates " + 062 "the presence of a quantity of " + spec.getName().toLowerCase() + ", " + 063 "likely to be found if proper salvage operations are conducted."; 064 addText(text1); 065 066 CargoAPI extra = Global.getFactory().createCargo(true); 067 float quantity = data.min + (data.max - data.min) * random.nextFloat(); 068 quantity = Math.round(quantity); 069 extra.addCommodity(data.commodityId, quantity); 070 addTempExtraSalvage(extra); 071 072 setDone(true); 073 setShowAgain(true); 074 } 075 076 077} 078 079 080