package data.campaign.intel.events;
import java.awt.Color;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.fs.starfarer.api.Global;
import com.fs.starfarer.api.campaign.CampaignFleetAPI;
import com.fs.starfarer.api.campaign.CargoAPI;
import com.fs.starfarer.api.campaign.FactionAPI;
import com.fs.starfarer.api.campaign.InteractionDialogAPI;
import com.fs.starfarer.api.campaign.PlanetAPI;
import com.fs.starfarer.api.campaign.RepLevel;
import com.fs.starfarer.api.campaign.SectorEntityToken;
import com.fs.starfarer.api.campaign.TextPanelAPI;
import com.fs.starfarer.api.campaign.econ.MarketAPI;
import com.fs.starfarer.api.campaign.rules.MemoryAPI;
import com.fs.starfarer.api.characters.PersonAPI;
import com.fs.starfarer.api.impl.campaign.ids.Tags;
import com.fs.starfarer.api.impl.campaign.intel.BaseIntelPlugin;
import com.fs.starfarer.api.impl.campaign.rulecmd.AddRemoveCommodity;
import com.fs.starfarer.api.ui.SectorMapAPI;
import com.fs.starfarer.api.ui.TooltipMakerAPI;
import com.fs.starfarer.api.util.Misc;
import com.fs.starfarer.api.util.Misc.Token;
import org.apache.log4j.Logger;
public class MivitTheGreatIntel extends BaseIntelPlugin {
private Logger log = Global.getLogger(MivitTheGreatIntel.class);
public static enum MVTStage {
TALK_TO_RINA,
GO_TO_PLANET,
DONE,
;
}
public static int FINISHED_XP = 20000;
public static int QUEST_STAGE_1_XP_REWARD = 200;
protected PlanetAPI planet;
protected PersonAPI rina;
protected MVTStage stage;
protected int pilotCredits;
public MivitTheGreatIntel(PlanetAPI planet, PersonAPI pilot) {
this.planet = planet;
this.rina = pilot;
Misc.makeImportant(pilot, "mvt");
MarketAPI market = planet.getMarket();
// market.addPerson(pilot);
// market.getCommDirectory().addPerson(pilot);
pilotCredits = 10000 + 1000 * Misc.random.nextInt(10);
pilot.getRelToPlayer().getRel();
pilot.getMemoryWithoutUpdate().set("$mvt_isPilot", true);
pilot.getMemoryWithoutUpdate().set("$mvt_eventRef", this);
// pilot.getMemoryWithoutUpdate().set("$mvt_credits", Misc.getDGSCredits(pilotCredits));
//Misc.makeImportant(planet, "saci");
//cache.getMemoryWithoutUpdate().set("$saic_eventRef", this);
//Global.getSector().addScript(this);
stage = MVTStage.TALK_TO_RINA;
}
@Override
protected void notifyEnded() {
super.notifyEnded();
Global.getSector().removeScript(this);
MarketAPI market = planet.getMarket();
market.removePerson(rina);
market.getCommDirectory().removePerson(rina);
Misc.makeUnimportant(planet, "mvt");
}
@Override
public boolean callEvent(String ruleId, InteractionDialogAPI dialog,
List<Token> params, Map<String, MemoryAPI> memoryMap) {
String action = params.get(0).getString(memoryMap);
CampaignFleetAPI playerFleet = Global.getSector().getPlayerFleet();
CargoAPI cargo = playerFleet.getCargo();
TextPanelAPI text = dialog.getTextPanel();
//MemoryAPI memory = planet.getMemoryWithoutUpdate();
MarketAPI market = planet.getMarket();
if (action.equals("prepare")) {
// pilot.getMemoryWithoutUpdate().set("$mvt_credits", Misc.getDGSCredits(pilotCredits), 0);
// pilot.getMemoryWithoutUpdate().set("$mvt_playerCredits", Misc.getDGSCredits(cargo.getCredits().get()), 0);
}
else if (action.equals("isGoodRelation")) {
log.info("Relation with Rina - " + rina.getRelToPlayer().getLevel());
return (rina.getRelToPlayer().getLevel() == RepLevel.FAVORABLE ||
rina.getRelToPlayer().getLevel() == RepLevel.FRIENDLY ||
rina.getRelToPlayer().getLevel() == RepLevel.WELCOMING ||
rina.getRelToPlayer().getLevel() == RepLevel.COOPERATIVE);
} else if (action.equals("finishMivitQuestline1")) {
Global.getSector().getIntelManager().addIntel(this, false, text);
Global.getSector().getPlayerPerson().getStats().addXP(QUEST_STAGE_1_XP_REWARD, dialog.getTextPanel());
// Misc.makeImportant(planet, "mvt");
stage = MVTStage.GO_TO_PLANET;
sendUpdate(MVTStage.GO_TO_PLANET, dialog.getTextPanel());
}
return true;
}
@Override
public void endAfterDelay() {
stage = MVTStage.DONE;
Misc.makeUnimportant(planet, "mvt");
super.endAfterDelay();
}
@Override
protected void notifyEnding() {
super.notifyEnding();
}
protected void addBulletPoints(TooltipMakerAPI info, ListInfoMode mode) {
Color h = Misc.getHighlightColor();
Color g = Misc.getGrayColor();
float pad = 3f;
float opad = 10f;
float initPad = pad;
if (mode == ListInfoMode.IN_DESC) initPad = opad;
Color tc = getBulletColorForMode(mode);
bullet(info);
boolean isUpdate = getListInfoParam() != null;
MarketAPI market = planet.getMarket();
if (stage == MVTStage.TALK_TO_RINA) {
info.addPara("Talk to the the Commodities Trader at %s", initPad, market.getFaction().getBaseUIColor(), market.getName());
} else if (stage == MVTStage.GO_TO_PLANET) {
info.addPara("Find Rina's friend.", initPad);
}
initPad = 0f;
unindent(info);
}
@Override
public void createIntelInfo(TooltipMakerAPI info, ListInfoMode mode) {
Color c = getTitleColor(mode);
info.setParaSmallInsignia();
info.addPara(getName(), c, 0f);
info.setParaFontDefault();
addBulletPoints(info, mode);
}
@Override
public void createSmallDescription(TooltipMakerAPI info, float width, float height) {
Color h = Misc.getHighlightColor();
Color g = Misc.getGrayColor();
Color tc = Misc.getTextColor();
float pad = 3f;
float opad = 10f;
if (stage == MVTStage.TALK_TO_RINA) {
info.addPara("You met the CEO of Ririncanshiina AG, who asked you to go on an errand. " +
"She looked to be hiding something from you, but the money was good and so you accepted her offer.", opad);
} else if (stage == MVTStage.GO_TO_PLANET) {
info.addPara("You've talked to the old spacer's pilot comrade and convinced " +
"them to divulge the location of the planet.", opad);
} else {
info.addPara("You've found the planet and uncovered its secret.", opad);
}
addBulletPoints(info, ListInfoMode.IN_DESC);
}
@Override
public String getIcon() {
return Global.getSettings().getSpriteName("intel", "red_planet");
}
@Override
public Set<String> getIntelTags(SectorMapAPI map) {
Set<String> tags = super.getIntelTags(map);
tags.add(Tags.INTEL_STORY);
tags.add(Tags.INTEL_EXPLORATION);
return tags;
}
@Override
public IntelSortTier getSortTier() {
return IntelSortTier.TIER_2;
}
public String getSortString() {
return "Black Lily";
}
public String getName() {
if (isEnded() || isEnding()) {
return "Red Planet - Completed";
}
return "The Black Lily";
}
@Override
public FactionAPI getFactionForUIColors() {
return super.getFactionForUIColors();
}
public String getSmallDescriptionTitle() {
return getName();
}
@Override
public SectorEntityToken getMapLocation(SectorMapAPI map) {
if (stage == MVTStage.TALK_TO_RINA) {
return planet.getMarket().getPrimaryEntity();
}
return planet;
}
@Override
public boolean shouldRemoveIntel() {
return super.shouldRemoveIntel();
}
@Override
public String getCommMessageSound() {
return getSoundMajorPosting();
}
}