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.PersistentUIDataAPI.AbilitySlotsAPI; 013import com.fs.starfarer.api.campaign.econ.MarketAPI; 014import com.fs.starfarer.api.campaign.rules.MemoryAPI; 015import com.fs.starfarer.api.combat.EngagementResultAPI; 016import com.fs.starfarer.api.impl.campaign.ids.Abilities; 017import com.fs.starfarer.api.impl.campaign.rulecmd.AddRemoveCommodity; 018import com.fs.starfarer.api.loading.AbilitySpecAPI; 019import com.fs.starfarer.api.util.Misc; 020 021public class TutorialSustainedBurnDialogPluginImpl implements InteractionDialogPlugin { 022 023 public static enum OptionId { 024 INIT, 025 CONT1, 026 CONT2, 027 CONT3, 028 ; 029 } 030 031 protected InteractionDialogAPI dialog; 032 protected TextPanelAPI textPanel; 033 protected OptionPanelAPI options; 034 protected VisualPanelAPI visual; 035 036 protected CampaignFleetAPI playerFleet; 037 038 protected MarketAPI ancyra; 039 040 public TutorialSustainedBurnDialogPluginImpl(MarketAPI ancyra) { 041 this.ancyra = ancyra; 042 } 043 044 public void init(InteractionDialogAPI dialog) { 045 this.dialog = dialog; 046 textPanel = dialog.getTextPanel(); 047 options = dialog.getOptionPanel(); 048 visual = dialog.getVisualPanel(); 049 050 playerFleet = Global.getSector().getPlayerFleet(); 051 052 //visual.showImagePortion("illustrations", "jump_point_hyper", 640, 400, 0, 0, 480, 300); 053 visual.showFleetInfo("Your fleet", playerFleet, null, null); 054 055 //dialog.setOptionOnEscape("Leave", OptionId.LEAVE); 056 057 optionSelected(null, OptionId.INIT); 058 } 059 060 public Map<String, MemoryAPI> getMemoryMap() { 061 return null; 062 } 063 064 public void backFromEngagement(EngagementResultAPI result) { 065 // no combat here, so this won't get called 066 } 067 068 public void optionSelected(String text, Object optionData) { 069 if (optionData == null) return; 070 071 OptionId option = (OptionId) optionData; 072 073 if (text != null) { 074 //textPanel.addParagraph(text, Global.getSettings().getColor("buttonText")); 075 dialog.addOptionSelectedText(option); 076 } 077 078 079 String name = ancyra.getName(); 080 081 switch (option) { 082 case INIT: 083 textPanel.addParagraph(name + " is pretty far away, and it'll take a while to get there at this rate."); 084 085 options.clearOptions(); 086 options.addOption("Continue", OptionId.CONT1, null); 087 break; 088 case CONT1: 089 AbilitySpecAPI ability = Global.getSettings().getAbilitySpec(Abilities.SUSTAINED_BURN); 090 textPanel.addPara("The %s ability is useful for long-distance travel. " + 091 "Activating it will briefly stop the fleet and reduce its acceleration to a minimum, " + 092 "but the maximum burn level will be much higher. A sustained burn can be interrupted " + 093 "by other fleets activating an interdiction pulse.", 094 Misc.getHighlightColor(), 095 "\"" + ability.getName() + "\""); 096 097 Global.getSector().getCharacterData().addAbility(ability.getId()); 098 AbilitySlotsAPI slots = Global.getSector().getUIData().getAbilitySlotsAPI(); 099 slots.setCurrBarIndex(0); 100 101 int slotIndex = 4; 102 slots.getCurrSlotsCopy().get(slotIndex).setAbilityId(ability.getId()); 103 AddRemoveCommodity.addAbilityGainText(ability.getId(), textPanel); 104 105 Global.getSector().getCharacterData().addAbility(Abilities.INTERDICTION_PULSE); 106 slots.getCurrSlotsCopy().get(6).setAbilityId(Abilities.INTERDICTION_PULSE); 107 AddRemoveCommodity.addAbilityGainText(Abilities.INTERDICTION_PULSE, textPanel); 108 109 options.clearOptions(); 110 options.addOption("Continue", OptionId.CONT2, null); 111 112 break; 113 case CONT2: 114 ability = Global.getSettings().getAbilitySpec(Abilities.SUSTAINED_BURN); 115 116 String control = Global.getSettings().getControlStringForEnumName("FAST_FORWARD"); 117 118 textPanel.addPara("Activate %s to get to " + name + " more quickly.", 119 Misc.getHighlightColor(), 120 "\"" + ability.getName() + "\""); 121 122 textPanel.addPara("You can also press and hold %s to speed up time.", 123 Misc.getHighlightColor(), 124 "\"" + control + "\""); 125 126 options.clearOptions(); 127 options.addOption("Finish", OptionId.CONT3, null); 128 break; 129 case CONT3: 130 Global.getSector().setPaused(false); 131 dialog.dismiss(); 132 break; 133 } 134 } 135 136 137 138 139 public void optionMousedOver(String optionText, Object optionData) { 140 141 } 142 143 public void advance(float amount) { 144 145 } 146 147 public Object getContext() { 148 return null; 149 } 150} 151 152 153