001package com.fs.starfarer.api.impl.campaign;
002
003import java.util.ArrayList;
004import java.util.List;
005
006import com.fs.starfarer.api.Global;
007import com.fs.starfarer.api.campaign.FactionAPI;
008import com.fs.starfarer.api.util.DelayedActionScript;
009
010public class DelayedBlueprintLearnScript extends DelayedActionScript {
011
012        public static float LEARNED_HULL_FREQUENCY = 0.1f;
013        
014        protected List<String> fighters = new ArrayList<String>();
015        protected List<String> weapons = new ArrayList<String>();
016        protected List<String> ships = new ArrayList<String>();
017        protected List<String> industries = new ArrayList<String>();
018        
019        protected String factionId;
020        
021        public DelayedBlueprintLearnScript(String factionId) {
022                this(factionId, 30f);
023        }
024
025        public DelayedBlueprintLearnScript(String factionId, float daysLeft) {
026                super(daysLeft);
027                this.factionId = factionId;
028        }
029
030        @Override
031        public void doAction() {
032                FactionAPI faction = Global.getSector().getFaction(factionId);
033                if (faction != null) {
034                        if (!ships.isEmpty()) {
035                                faction.clearShipRoleCache();
036                        }
037                        
038                        for (String id : ships) {
039                                if (faction.knowsShip(id)) continue;
040                                faction.addKnownShip(id, true);
041                                faction.addUseWhenImportingShip(id);
042                                faction.getHullFrequency().put(id, LEARNED_HULL_FREQUENCY);
043                        }
044                        for (String id : fighters) {
045                                if (faction.knowsFighter(id)) continue;
046                                faction.addKnownFighter(id, true);
047                        }
048                        for (String id : weapons) {
049                                if (faction.knowsWeapon(id)) continue;
050                                faction.addKnownWeapon(id, true);
051                        }
052                        for (String id : industries) {
053                                if (faction.knowsIndustry(id)) continue;
054                                faction.addKnownIndustry(id);
055                        }
056                }
057        }
058
059        public List<String> getFighters() {
060                return fighters;
061        }
062
063        public List<String> getWeapons() {
064                return weapons;
065        }
066
067        public List<String> getShips() {
068                return ships;
069        }
070
071        public List<String> getIndustries() {
072                return industries;
073        }
074
075}
076
077
078