001package com.fs.starfarer.api.impl.campaign.econ;
002
003import com.fs.starfarer.api.Global;
004import com.fs.starfarer.api.campaign.econ.MarketAPI;
005import com.fs.starfarer.api.campaign.econ.MarketConditionAPI;
006import com.fs.starfarer.api.campaign.econ.MarketImmigrationModifier;
007import com.fs.starfarer.api.impl.campaign.ids.Conditions;
008import com.fs.starfarer.api.impl.campaign.ids.Factions;
009import com.fs.starfarer.api.impl.campaign.population.PopulationComposition;
010import com.fs.starfarer.api.ui.TooltipMakerAPI;
011import com.fs.starfarer.api.util.Misc;
012
013
014
015public class RogueAICore extends BaseMarketConditionPlugin implements MarketImmigrationModifier {
016
017        public static final float STABILITY_PENALTY = 1f;
018        
019        public static RogueAICore get(MarketAPI market) {
020                MarketConditionAPI mc = market.getCondition(Conditions.ROGUE_AI_CORE);
021                if (mc != null && mc.getPlugin() instanceof RogueAICore) {
022                        return (RogueAICore) mc.getPlugin();
023                }
024                return null;
025        }
026        
027        private float daysActive = 0f;
028        @Override
029        public void advance(float amount) {
030                super.advance(amount);
031                float days = Global.getSector().getClock().convertToDays(amount);
032                daysActive += days;
033        }
034        
035        public float getDaysActive() {
036                return daysActive;
037        }
038        
039        public void setDaysActive(float daysActive) {
040                this.daysActive = daysActive;
041        }
042
043        public void apply(String id) {
044                market.addTransientImmigrationModifier(this);
045                
046                market.getStability().modifyFlat(id, -STABILITY_PENALTY, "Rogue AI core");
047        }
048        
049        @Override
050        public boolean isTransient() {
051                return false;
052        }
053
054        public void unapply(String id) {
055                market.removeTransientImmigrationModifier(this);
056                
057                market.getStability().unmodifyFlat(id);
058        }
059
060        public void modifyIncoming(MarketAPI market, PopulationComposition incoming) {
061                incoming.add(Factions.LUDDIC_PATH, 10f);
062        }
063        
064        protected void createTooltipAfterDescription(TooltipMakerAPI tooltip, boolean expanded) {
065                super.createTooltipAfterDescription(tooltip, expanded);
066                
067                tooltip.addPara("%s stability.", 
068                                                10f, Misc.getHighlightColor(),
069                                                "-" + (int)STABILITY_PENALTY);
070        }
071}
072
073
074
075
076