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