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