001package com.fs.starfarer.api.impl.campaign.intel.bar.events.historian; 002 003import com.fs.starfarer.api.Global; 004import com.fs.starfarer.api.campaign.CargoAPI; 005import com.fs.starfarer.api.campaign.InteractionDialogAPI; 006import com.fs.starfarer.api.campaign.RepLevel; 007import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.CustomRepImpact; 008import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepActionEnvelope; 009import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepActions; 010import com.fs.starfarer.api.impl.campaign.rulecmd.AddRemoveCommodity; 011import com.fs.starfarer.api.util.Misc; 012 013public class DonationOffer extends BaseHistorianOffer { 014 015 public static enum OptionId { 016 DONATE, 017 NEVER_MIND, 018 } 019 020 protected int credits; 021 022 public DonationOffer() { 023 HistorianData hd = HistorianData.getInstance(); 024 int tier = hd.getTier(); 025 if (tier == 0) { 026 credits = 20000; 027 } else if (tier == 1) { 028 credits = 50000; 029 } else if (tier >= 2) { 030 credits = 250000; 031 } 032 } 033 034 035 036 @Override 037 public void addPromptAndOption(InteractionDialogAPI dialog) { 038 HistorianData hd = HistorianData.getInstance(); 039 040 dialog.getOptionPanel().addOption("... some promising leads that a " + Misc.getDGSCredits(credits) + 041 " donation would let " + hd.getHimOrHer() + " pursue", 042 this); 043// dialog.getOptionPanel().addOption("... that a donation would let " + hd.getHimOrHer() + " pursue some promising leads", 044// this); 045 } 046 047 @Override 048 public void init(InteractionDialogAPI dialog) { 049 super.init(dialog); 050 051 setEndConversationOnReturning(false); 052 053 options.clearOptions(); 054 //options.addOption("Make a donation of " + Misc.getDGSCredits(credits) + "", OptionId.DONATE); 055 options.addOption("Make the donation", OptionId.DONATE); 056 options.addOption("Steer the conversation to other topics", OptionId.NEVER_MIND); 057 058 CargoAPI cargo = Global.getSector().getPlayerFleet().getCargo(); 059 String c = "" + Misc.getDGSCredits(cargo.getCredits().get()); 060 String d = "" + Misc.getDGSCredits(credits); 061 if (cargo.getCredits().get() < credits) { 062 text.addPara("The asked-for donation amount is %s. You only have %s available.", Misc.getHighlightColor(), d, c); 063 options.setEnabled(OptionId.DONATE, false); 064 options.setTooltip(OptionId.DONATE, "You don't have enough credits."); 065 } else { 066 text.addPara("The asked-for donation amount is %s. You have %s available.", Misc.getHighlightColor(), d, c); 067 } 068 } 069 070 @Override 071 public void optionSelected(String optionText, Object optionData) { 072 073 HistorianData hd = HistorianData.getInstance(); 074 075 if (optionData == OptionId.DONATE) { 076 setDone(true); 077 setRemove(true); 078 079 hd.incrTier(); 080 hd.setRecentlyDonated(); 081 082 Global.getSector().getPlayerFleet().getCargo().getCredits().subtract(credits); 083 AddRemoveCommodity.addCreditsLossText(credits, text); 084 085 CustomRepImpact impact = new CustomRepImpact(); 086 impact.limit = RepLevel.COOPERATIVE; 087 impact.delta = 0.1f; 088 Global.getSector().adjustPlayerReputation( 089 new RepActionEnvelope(RepActions.CUSTOM, impact, 090 null, dialog.getTextPanel(), true), hd.getPerson()); 091 092// CustomRepImpact impact = new CustomRepImpact(); 093// impact.delta = 0.1f; 094// 095// Global.getSector().adjustPlayerReputation( 096// new RepActionEnvelope(RepActions.CUSTOM, 097// impact, null, text, true, true), 098// hd.getPerson()); 099 100 dialog.getTextPanel().addPara("The historian thanks you for your help."); 101 return; 102 } 103 104 105 if (optionData == OptionId.NEVER_MIND) { 106 setDone(true); 107 108 dialog.getTextPanel().addPara("The historian cooperates in changing topics."); 109 return; 110 } 111 } 112 113 114 @Override 115 public int getSortOrder() { 116 return 1000; 117 } 118 119 120 121 122} 123 124 125 126 127 128 129 130 131 132