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