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