001package com.fs.starfarer.api.impl.campaign; 002 003import java.awt.Color; 004import java.util.HashSet; 005import java.util.List; 006import java.util.Set; 007 008import org.lwjgl.input.Keyboard; 009 010import com.fs.starfarer.api.Global; 011import com.fs.starfarer.api.campaign.InteractionDialogAPI; 012import com.fs.starfarer.api.campaign.RepLevel; 013import com.fs.starfarer.api.campaign.SectorEntityToken; 014import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.CustomRepImpact; 015import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepActionEnvelope; 016import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepActions; 017import com.fs.starfarer.api.impl.campaign.ids.Factions; 018import com.fs.starfarer.api.impl.campaign.rulecmd.DumpMemory; 019import com.fs.starfarer.api.util.Misc; 020 021public class DevMenuOptions { 022 023 public static String TOP_MENU = "DMO_top"; 024 025 public static String REP_MENU = "DMO_rep"; 026 public static String MUSIC_MENU = "DMO_music"; 027 public static String BACK_TO_OPTIONS = "DMO_top_back"; 028 public static String BACK_TO_TOP = "DMO_rep_back"; 029 030 public static String INCREASE_REP = "DMO_increase_rep"; 031 public static String REDUCE_REP = "DMO_reduce_rep"; 032 public static String PRINT_REP = "DMO_print_rep"; 033 034 public static String MUSIC_PRINT = "DMO_print_current"; 035 public static String MUSIC_RESTART = "DMO_music_restart"; 036 037 public static Set<String> options = new HashSet<String>(); 038 039 static { 040 options.add(TOP_MENU); 041 options.add(REP_MENU); 042 options.add(MUSIC_MENU); 043 options.add(BACK_TO_OPTIONS); 044 options.add(BACK_TO_TOP); 045 046 options.add(INCREASE_REP); 047 options.add(REDUCE_REP); 048 options.add(PRINT_REP); 049 050 options.add(MUSIC_PRINT); 051 options.add(MUSIC_RESTART); 052 } 053 054 public static boolean isDevOption(Object optionData) { 055 return options.contains(optionData); 056 } 057 058 public static void addOptions(InteractionDialogAPI dialog) { 059 DumpMemory.addOption(dialog); 060 dialog.getOptionPanel().addOption(">> (dev) options", TOP_MENU, Misc.getGrayColor(), null); 061 062 savedOptions = dialog.getOptionPanel().getSavedOptionList(); 063 } 064 065 066 public static List savedOptions = null; 067 068 public static void execute(InteractionDialogAPI dialog, String option) { 069 SectorEntityToken entity = dialog.getInteractionTarget(); 070 Color g = Misc.getGrayColor(); 071 if (option == TOP_MENU) { 072 dialog.getOptionPanel().clearOptions(); 073 dialog.getOptionPanel().addOption(">>> (dev) reputation", REP_MENU, g, null); 074 dialog.getOptionPanel().addOption(">>> (dev) music", MUSIC_MENU, g, null); 075 dialog.getOptionPanel().addOption(">>> (dev) back", BACK_TO_OPTIONS, g, null); 076 dialog.getOptionPanel().setShortcut(BACK_TO_OPTIONS, Keyboard.KEY_ESCAPE, false, false, false, true); 077 } else if (option == REP_MENU) { 078 079 //System.out.println("Go dark active: " +dialog.getInteractionTarget().getAbility(Abilities.GO_DARK).isActive()); 080 081 dialog.getOptionPanel().clearOptions(); 082 dialog.getOptionPanel().addOption(">>>> (dev) print", PRINT_REP, g, null); 083 dialog.getOptionPanel().addOption(">>>> (dev) increase", INCREASE_REP, g, null); 084 dialog.getOptionPanel().addOption(">>>> (dev) decrease", REDUCE_REP, g, null); 085 dialog.getOptionPanel().addOption(">>>> (dev) back", BACK_TO_TOP, g, null); 086 dialog.getOptionPanel().setShortcut(BACK_TO_TOP, Keyboard.KEY_ESCAPE, false, false, false, true); 087 } else if (option == MUSIC_MENU) { 088 dialog.getOptionPanel().clearOptions(); 089 dialog.getOptionPanel().addOption(">>>> (dev) print current music", MUSIC_PRINT, g, null); 090 dialog.getOptionPanel().addOption(">>>> (dev) restart music", MUSIC_RESTART, g, null); 091 dialog.getOptionPanel().addOption(">>>> (dev) back", BACK_TO_TOP, g, null); 092 dialog.getOptionPanel().setShortcut(BACK_TO_TOP, Keyboard.KEY_ESCAPE, false, false, false, true); 093 } 094 095 if (entity != null && entity.getFaction() != null) { 096 if (option == PRINT_REP) { 097 if (entity.getActivePerson() != null) { 098 dialog.getTextPanel().addParagraph("Reputation with " + entity.getActivePerson().getNameString() + ": " + 099 entity.getActivePerson().getRelToPlayer().getRel()); 100 } else { 101 dialog.getTextPanel().addParagraph("Reputation with " + entity.getFaction().getDisplayName() + ": " + 102 entity.getFaction().getRelationship(Factions.PLAYER)); 103 } 104 } else if (option == INCREASE_REP) { 105 if (entity.getActivePerson() != null) { 106 CustomRepImpact impact = new CustomRepImpact(); 107 impact.limit = RepLevel.COOPERATIVE; 108 impact.delta = 0.1f; 109 Global.getSector().adjustPlayerReputation( 110 new RepActionEnvelope(RepActions.CUSTOM, impact, 111 null, null, false), entity.getActivePerson()); 112 dialog.getTextPanel().addParagraph("Reputation with " + entity.getActivePerson().getNameString() + ": " + 113 entity.getActivePerson().getRelToPlayer().getRel()); 114 } else { 115 entity.getFaction().adjustRelationship(Factions.PLAYER, 0.1f); 116 dialog.getTextPanel().addParagraph("Reputation with " + entity.getFaction().getDisplayName() + ": " + 117 entity.getFaction().getRelationship(Factions.PLAYER)); 118 } 119 } else if (option == REDUCE_REP) { 120 if (entity.getActivePerson() != null) { 121 CustomRepImpact impact = new CustomRepImpact(); 122 impact.limit = RepLevel.VENGEFUL; 123 impact.delta = -0.1f; 124 Global.getSector().adjustPlayerReputation( 125 new RepActionEnvelope(RepActions.CUSTOM, impact, 126 null, null, false), entity.getActivePerson()); 127 dialog.getTextPanel().addParagraph("Reputation with " + entity.getActivePerson().getNameString() + ": " + 128 entity.getActivePerson().getRelToPlayer().getRel()); 129 } else { 130 entity.getFaction().adjustRelationship(Factions.PLAYER, -0.1f); 131 dialog.getTextPanel().addParagraph("Reputation with " + entity.getFaction().getDisplayName() + ": " + 132 entity.getFaction().getRelationship(Factions.PLAYER)); 133 } 134 } 135 } 136 137 if (option == MUSIC_RESTART) { 138 Global.getSoundPlayer().restartCurrentMusic(); 139 } else if (option == MUSIC_PRINT) { 140 dialog.getTextPanel().addParagraph("Now playing: " + Global.getSoundPlayer().getCurrentMusicId()); 141 } 142 143 144 145 if (option == BACK_TO_OPTIONS) { 146 if (savedOptions != null) { 147 dialog.getOptionPanel().restoreSavedOptions(savedOptions); 148 return; 149 } 150 } 151 if (option == BACK_TO_TOP) { 152 execute(dialog, TOP_MENU); 153 } 154 } 155 156} 157 158 159 160 161