001package com.fs.starfarer.api.impl.campaign.rulecmd;
002
003import java.util.List;
004import java.util.Map;
005
006import com.fs.starfarer.api.Global;
007import com.fs.starfarer.api.campaign.InteractionDialogAPI;
008import com.fs.starfarer.api.campaign.SectorEntityToken;
009import com.fs.starfarer.api.campaign.econ.MarketAPI;
010import com.fs.starfarer.api.campaign.rules.MemoryAPI;
011import com.fs.starfarer.api.characters.ImportantPeopleAPI.PersonDataAPI;
012import com.fs.starfarer.api.characters.PersonAPI;
013import com.fs.starfarer.api.impl.campaign.ids.People;
014import com.fs.starfarer.api.util.Misc;
015import com.fs.starfarer.api.util.Misc.Token;
016
017/**
018 * Can pass in an invalid person ID to use the active person instead.
019 *  
020 * Method *should* handle the case when the person is a player contact.
021 *  
022 * MovePersonToMarket <person id> <optional market id>
023 */
024public class MovePersonToMarket extends BaseCommandPlugin {
025
026        public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
027                
028                String personId = params.get(0).getString(memoryMap);
029                String marketId = null;
030                if (params.size() > 1) {
031                        marketId = params.get(1).getString(memoryMap);
032                }
033                
034                SectorEntityToken entity = dialog.getInteractionTarget();
035                
036                MarketAPI market = null;
037                if (entity != null) market = entity.getMarket();
038                if (marketId != null) {
039                        market = Global.getSector().getEconomy().getMarket(marketId);
040                }
041                if (market == null && "ga_market".equals(marketId)) { // horrible hack time
042                        market = Global.getSector().getImportantPeople().getPerson(People.BAIRD).getMarket();
043                }
044                
045                if (market == null) return false;
046                
047                PersonAPI person = null;
048                PersonDataAPI data = Global.getSector().getImportantPeople().getData(personId);
049                if (data != null) person = data.getPerson();
050                
051                if (person == null && entity != null) {
052                        person = entity.getActivePerson();
053                }
054                if (person == null) return false;
055                
056                Misc.moveToMarket(person, market, false);
057                return true;
058        }
059
060}
061
062
063
064
065
066
067
068