001package com.fs.starfarer.api.impl.campaign.tutorial;
002
003import java.util.Map;
004
005import com.fs.starfarer.api.Global;
006import com.fs.starfarer.api.campaign.CampaignFleetAPI;
007import com.fs.starfarer.api.campaign.InteractionDialogAPI;
008import com.fs.starfarer.api.campaign.InteractionDialogPlugin;
009import com.fs.starfarer.api.campaign.OptionPanelAPI;
010import com.fs.starfarer.api.campaign.TextPanelAPI;
011import com.fs.starfarer.api.campaign.VisualPanelAPI;
012import com.fs.starfarer.api.campaign.rules.MemoryAPI;
013import com.fs.starfarer.api.combat.EngagementResultAPI;
014import com.fs.starfarer.api.util.Misc;
015
016public class TutorialPirateApproachesDialogPluginImpl implements InteractionDialogPlugin {
017
018        public static enum OptionId {
019                INIT,
020                CONT1,
021                CONT2,
022                CONT3,
023                CONT4,
024                ;
025        }
026        
027        protected InteractionDialogAPI dialog;
028        protected TextPanelAPI textPanel;
029        protected OptionPanelAPI options;
030        protected VisualPanelAPI visual;
031        
032        protected CampaignFleetAPI playerFleet;
033        
034        public void init(InteractionDialogAPI dialog) {
035                this.dialog = dialog;
036                textPanel = dialog.getTextPanel();
037                options = dialog.getOptionPanel();
038                visual = dialog.getVisualPanel();
039
040                playerFleet = Global.getSector().getPlayerFleet();
041                
042                //visual.showImagePortion("illustrations", "jump_point_hyper", 640, 400, 0, 0, 480, 300);
043                visual.showFleetInfo("Your fleet", playerFleet, null, null);
044        
045                //dialog.setOptionOnEscape("Leave", OptionId.LEAVE);
046                
047                optionSelected(null, OptionId.INIT);
048        }
049        
050        public Map<String, MemoryAPI> getMemoryMap() {
051                return null;
052        }
053        
054        public void backFromEngagement(EngagementResultAPI result) {
055                // no combat here, so this won't get called
056        }
057        
058        public void optionSelected(String text, Object optionData) {
059                if (optionData == null) return;
060                
061                OptionId option = (OptionId) optionData;
062                
063                if (text != null) {
064                        //textPanel.addParagraph(text, Global.getSettings().getColor("buttonText"));
065                        dialog.addOptionSelectedText(option);
066                }
067                
068                
069                switch (option) {
070                case INIT:
071                        textPanel.addParagraph("A pirate fleet is approaching! First you'll spot it as a sensor contact, " +
072                                        "then as an unidentified fleet, and then - when it gets very close - you'll see its true colors.");
073                        
074                        options.clearOptions();
075                        options.addOption("Continue", OptionId.CONT1, null);
076                        break;
077                case CONT1:
078                        
079                        String load = Global.getSettings().getControlStringForEnumName("QUICK_LOAD");
080
081                        textPanel.addPara("Don't worry - the pirate ship is a shoddy rust bucket, " +
082                                        "and if you do lose, you can press %s to quick-load.",
083                                        Misc.getHighlightColor(), load);
084                        
085                        options.clearOptions();
086                        options.addOption("Continue", OptionId.CONT2, null);
087                        break;
088                case CONT2:
089                        textPanel.addParagraph("Even so, combat can be expensive, especially if there's no bounty on the enemy you fight. " +
090                                        "Deploying ships into battle reduces their combat readiness, and recovering CR consumes supplies. " +
091                                        "Battle damage can cost even more supplies to repair.");
092                        
093                        options.clearOptions();
094                        options.addOption("Continue", OptionId.CONT3, null);
095                        break;
096                case CONT3:
097                        textPanel.addParagraph("However, fighting is often necessary to survive. Wait for the pirate fleet to approach, then defeat them!");
098                        
099                        options.clearOptions();
100                        options.addOption("Finish", OptionId.CONT4, null);
101                        break;
102                case CONT4:
103                        Global.getSector().setPaused(false);
104                        dialog.dismiss();
105                        break;
106                }
107        }
108        
109
110        
111        
112        public void optionMousedOver(String optionText, Object optionData) {
113
114        }
115        
116        public void advance(float amount) {
117                
118        }
119        
120        public Object getContext() {
121                return null;
122        }
123}
124
125
126