001package com.fs.starfarer.api.impl.campaign.rulecmd.salvage;
002
003import java.awt.Color;
004import java.util.LinkedHashMap;
005import java.util.List;
006import java.util.Map;
007
008import com.fs.starfarer.api.campaign.InteractionDialogAPI;
009import com.fs.starfarer.api.campaign.econ.MarketAPI;
010import com.fs.starfarer.api.campaign.rules.MemoryAPI;
011import com.fs.starfarer.api.impl.campaign.rulecmd.BaseCommandPlugin;
012import com.fs.starfarer.api.util.Misc.Token;
013
014/**
015 * AddBarEvent <option id> <option text> <blurb>
016 */
017public class AddBarEvent extends BaseCommandPlugin {
018
019        public static class BarEventData {
020                public String optionId;
021                public String option;
022                public String blurb;
023                public Color optionColor;
024                public BarEventData(String optionId, String option, String blurb) {
025                        this.optionId = optionId;
026                        this.option = option;
027                        this.blurb = blurb;
028                }
029        }
030        
031        public static class TempBarEvents {
032                public Map<String, BarEventData> events = new LinkedHashMap<String, BarEventData>();
033        }
034
035        public static String KEY = "$core_tempBarEvents";
036        public static TempBarEvents getTempEvents(MarketAPI market) {
037                MemoryAPI mem = market.getMemoryWithoutUpdate();
038                TempBarEvents events = (TempBarEvents)mem.get(KEY);
039                if (events == null) {
040                        events = new TempBarEvents();
041                        mem.set(KEY, events, 0f);
042                }
043                return events;
044        }
045
046        public static void removeTempEvent(MarketAPI market, String optionId) {
047                getTempEvents(market).events.remove(optionId);
048        }
049        
050        public static void clearTempEvents(MarketAPI market) {
051                MemoryAPI mem = market.getMemoryWithoutUpdate();
052                mem.unset(KEY);
053        }
054        
055        
056        public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
057                MarketAPI market = dialog.getInteractionTarget().getMarket();
058                if (market == null) return true;
059                
060                String optionId = params.get(0).getString(memoryMap);
061                String option = params.get(1).getStringWithTokenReplacement(ruleId, dialog, memoryMap);
062                String blurb = params.get(2).getStringWithTokenReplacement(ruleId, dialog, memoryMap);
063                
064                Color color = null;
065                if (params.size() >= 4) {
066                        color = params.get(3).getColor(memoryMap);
067                }
068                
069                TempBarEvents events = getTempEvents(market);
070                
071                BarEventData data = new BarEventData(optionId, option, blurb);
072                data.optionColor = color;
073                events.events.put(optionId, data);
074                return true;
075        }
076        
077}
078
079
080
081
082
083
084
085
086