001package com.fs.starfarer.api.impl.campaign.tutorial;
002
003import com.fs.starfarer.api.EveryFrameScript;
004import com.fs.starfarer.api.Global;
005import com.fs.starfarer.api.campaign.FactionAPI;
006import com.fs.starfarer.api.campaign.econ.CommodityOnMarketAPI;
007import com.fs.starfarer.api.campaign.econ.MarketAPI;
008import com.fs.starfarer.api.campaign.econ.MarketDemandAPI;
009import com.fs.starfarer.api.impl.campaign.ids.Commodities;
010import com.fs.starfarer.api.util.IntervalUtil;
011
012public class GalatiaMarketScript implements EveryFrameScript {
013
014        protected MarketAPI market;
015        protected IntervalUtil interval = new IntervalUtil(15f, 25f);
016        
017        public GalatiaMarketScript(MarketAPI market) {
018                this.market = market;
019                
020                FactionAPI faction = market.getFaction(); 
021                market.getTariff().modifyFlat("default_tariff", faction.getTariffFraction());
022                
023                updateCommodities();
024        }
025
026        Object readResolve() {
027                market.updatePrices();
028                return this;
029        }
030        
031        public void advance(float amount) {
032                float days = Global.getSector().getClock().convertToDays(amount);
033                interval.advance(days);
034                if (!interval.intervalElapsed()) return;
035
036                updateCommodities();
037        }
038        
039        protected void updateCommodities() {
040                for (CommodityOnMarketAPI com : market.getAllCommodities()) {
041                        //com.setStockpile(com.getSupplyValue());
042                        com.setStockpile(200);
043                }
044                
045                for (MarketDemandAPI demand : market.getDemandData().getDemandList()) {
046                        CommodityOnMarketAPI com = market.getCommodityData(demand.getBaseCommodity().getId());
047                        com.addToStockpile(demand.getDemandValue());
048                }
049                
050                CommodityOnMarketAPI supplies = market.getCommodityData(Commodities.SUPPLIES);
051                supplies.addToStockpile(100f + 100f * (float) Math.random());
052                
053                CommodityOnMarketAPI fuel = market.getCommodityData(Commodities.FUEL);
054                fuel.addToStockpile(100f + 100f * (float) Math.random());
055                
056                //Global.getSector().getEconomy().updateStabilityAndPriceMult(market);
057                market.updatePrices();
058        }
059
060        public boolean isDone() {
061                return market.isInEconomy();
062        }
063
064        public boolean runWhilePaused() {
065                return false;
066        }
067
068}
069
070
071
072
073
074
075
076