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