From 36bd984d23dbc7b48c2b1bdfbfe9fd6913cbd108 Mon Sep 17 00:00:00 2001 From: Jaghaimo <1764586+jaghaimo@users.noreply.github.com> Date: Mon, 12 Jun 2023 20:13:25 +0100 Subject: [PATCH 1/7] Update to 2.0.0 --- README.md | 12 ++++++++---- assets/mod_info.json | 4 ++-- assets/transpoffder.version | 9 +++++---- build.gradle | 28 +++++++++++++++++++++++++++- 4 files changed, 42 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 3b42f1b..ad89d46 100644 --- a/README.md +++ b/README.md @@ -3,20 +3,22 @@ A collection of QoL improvements to campaign layer of Starsector. Named after first QoL addition - Transponder Off, or just `transpoffder`. Safe to install and uninstall mid-game. -Also changes some vanilla settings. + +Comes in two flavours: basic mod (`transpoffder-x.y.z.zip`) and mod that changes some settings (see below, `transpoffder-x.y.z-with-settings.zip`). ## Transponder Off in Hyperspace -Automatically turn off fleet transponder whenever transitioning to Hyperspace. +Automatically turn off fleet transponder when transitioning to Hyperspace. ## Better Active Sensor Burst -Do not disable Sustained Burn or Neutrino Detector when using Active Sensor Burst. -Fleet will move slowly for the cool-down duration (instead of doing full stop). +Do not disable Sustained Burn when using Active Sensor Burst or Neutrino Detector. +Fleet will move slowly for the cool-down duration (instead of doing full stop) and resume full burn afterwards. ## Scavenge as You Fly Use Scavenge ability as soon as it is usable. +Toggled via new ability (blue Scavenge icon). ## Partial Survey as You Fly @@ -25,6 +27,8 @@ Automatically provide partial survey for planets within your sensor range. ## Vanilla Settings Changed +List of settings changes in `transpoffder-x.y.z-with-settings.zip` version: + - `altMouseMoveToMassTransfer` (true instead of false), - `campaignSpeedupMult` (3 instead of 2), - `enableShipExplosionWhiteout` (false instead of true), diff --git a/assets/mod_info.json b/assets/mod_info.json index 43dc52b..a01e513 100644 --- a/assets/mod_info.json +++ b/assets/mod_info.json @@ -3,9 +3,9 @@ "name": "Transponder Off", "author": "Jaghaimo", "utility": true, - "version": "1.2.2", + "version": "2.0.0", "description": "QoL improvements to the campaign layer of Starsector", - "gameVersion": "0.95.1a-RC6", + "gameVersion": "0.96a-RC10", "modPlugin": "transpoffder.TranspoffderMod", "jars": ["transpoffder.jar"] } diff --git a/assets/transpoffder.version b/assets/transpoffder.version index a7c3d1c..e869f7a 100644 --- a/assets/transpoffder.version +++ b/assets/transpoffder.version @@ -3,9 +3,10 @@ "modName": "Transponder Off", "modThreadId": 23545, "modVersion": { - "major": 1, - "minor": 2, - "patch": 2 + "major": 2, + "minor": 0, + "patch": 0 }, - "directDownloadURL": "https://github.com/jaghaimo/transpoffder/releases/download/1.2.2/transpoffder-1.2.2.zip" + "directDownloadURL": "https://github.com/jaghaimo/transpoffder/releases/download/2.0.0/transpoffder-2.0.0.zip", + "changelogURL": "https://raw.githubusercontent.com/jaghaimo/transpoffder/2.0.0/changelog.txt" } diff --git a/build.gradle b/build.gradle index f1f9a44..ce6b5b3 100644 --- a/build.gradle +++ b/build.gradle @@ -10,12 +10,36 @@ repositories { url 'https://github.com/' patternLayout { artifact '/[organization]/[module]/releases/download/[revision]/[ext]' + artifact '/[organization]/[module]/raw/[revision]/jars/[ext]' } metadataSources { artifact() } } } + +// add zipped configuration +configurations { + zipped +} + +// install dependencies from zipped releases +task installDependencies(type: Sync) { + def extractDir = "${buildDir}/libs" + + ext.extractedJars = fileTree(extractDir) { + include "**/*.jar" + exclude "transpoffder.jar" + builtBy "installDependencies" + } + + dependsOn configurations.zipped + from { + configurations.zipped.collect { zipTree(it) } + } + into extractDir +} + // project level config java { sourceCompatibility = JavaVersion.VERSION_1_7 @@ -38,7 +62,9 @@ build { // compile time dependencies dependencies { - implementation "jaghaimo:starsector-api:0.95.1a-RC6@starfarer.api.jar" + implementation "jaghaimo:starsector-api:0.96a-RC10@starfarer.api.jar" + // zipped "Lukas22041:LunaLib:1.7.7@LunaLib.zip" + // implementation files({ tasks.installDependencies.extractedJars }) // game dependencies implementation group: 'com.thoughtworks.xstream', name: 'xstream', version: '1.4.10' From 08084ad9b1567e316e436dd24851f76d92ab320a Mon Sep 17 00:00:00 2001 From: Jaghaimo <1764586+jaghaimo@users.noreply.github.com> Date: Tue, 13 Jun 2023 09:23:00 +0100 Subject: [PATCH 2/7] Uncomment LunaLib --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index ce6b5b3..28d0603 100644 --- a/build.gradle +++ b/build.gradle @@ -63,8 +63,8 @@ build { // compile time dependencies dependencies { implementation "jaghaimo:starsector-api:0.96a-RC10@starfarer.api.jar" - // zipped "Lukas22041:LunaLib:1.7.7@LunaLib.zip" - // implementation files({ tasks.installDependencies.extractedJars }) + zipped "Lukas22041:LunaLib:1.7.7@LunaLib.zip" + implementation files({ tasks.installDependencies.extractedJars }) // game dependencies implementation group: 'com.thoughtworks.xstream', name: 'xstream', version: '1.4.10' From 0bf4b2a847b4ed0ef2a30c7632b259faf416c0ce Mon Sep 17 00:00:00 2001 From: Jaghaimo <1764586+jaghaimo@users.noreply.github.com> Date: Tue, 13 Jun 2023 11:04:24 +0100 Subject: [PATCH 3/7] Towards LunaLib --- src/transpoffder/TranspoffderMod.java | 78 +++------------------------ 1 file changed, 6 insertions(+), 72 deletions(-) diff --git a/src/transpoffder/TranspoffderMod.java b/src/transpoffder/TranspoffderMod.java index fcbc9a2..1422404 100644 --- a/src/transpoffder/TranspoffderMod.java +++ b/src/transpoffder/TranspoffderMod.java @@ -1,94 +1,28 @@ package transpoffder; import com.fs.starfarer.api.BaseModPlugin; -import com.fs.starfarer.api.EveryFrameScript; -import com.fs.starfarer.api.Global; -import com.fs.starfarer.api.util.Misc; -import lombok.extern.log4j.Log4j; -import org.json.JSONObject; +import transpoffder.settings.Settings; +import transpoffder.settings.SettingsListener; -@Log4j public class TranspoffderMod extends BaseModPlugin { - private JSONObject settings; - @Override public void afterGameSave() { - if (hasQol("ScavengeAsYouFly")) { - restoreAutoScavenge(); - } + Settings.SCAVENGE_AS_YOU_FLY.configure(); } @Override public void beforeGameSave() { - if (hasQol("ScavengeAsYouFly")) { - removeAutoScavenge(); - } + Settings.SCAVENGE_AS_YOU_FLY.disable(); } @Override public void onApplicationLoad() throws Exception { - settings = Global.getSettings().loadJSON("transpoffder.json"); - if (hasQol("BetterSensorBurst")) { - Global.getSettings().getAbilitySpec("sensor_burst").getTags().remove("burn-"); - Global.getSettings().getAbilitySpec("sensor_burst").getTags().remove("sensors+"); - log.info("Enabled better sensor burst"); - } + SettingsListener.register(); } @Override public void onGameLoad(boolean newGame) { - if (hasQol("PartialSurveyAsYouFly")) { - addTransientScript(new PartialSurveyScript()); - log.info("Enabled partial survey as you fly"); - } - if (hasQol("ScavengeAsYouFly")) { - restoreAutoScavenge(); - notifyAboutState(); - log.info("Enabled scavenge as you fly"); - } - if (hasQol("Transpoffder")) { - addTransientListener(new TranspoffderListener()); - log.info("Enabled transpoffder"); - } - } - - private void addTransientListener(Object listener) { - Global.getSector().getListenerManager().addListener(listener, true); - } - - private void addTransientScript(EveryFrameScript script) { - Global.getSector().addTransientScript(script); - } - - private boolean hasQol(String key) { - return settings.optBoolean(key, true); - } - - private void notifyAboutState() { - String state = AutoScavengeAbility.isOn() ? "enabled" : "disabled"; - Global - .getSector() - .getCampaignUI() - .addMessage( - "Automatic scavenging is %s.", - Misc.getTextColor(), - state, - state, - Misc.getHighlightColor(), - Misc.getHighlightColor() - ); - } - - private void removeAutoScavenge() { - boolean isOn = AutoScavengeAbility.isOn(); - Global.getSector().getMemoryWithoutUpdate().set("$transpoffderAutoScavenge", isOn); - Global.getSector().getCharacterData().removeAbility("auto_scavenge"); - } - - private void restoreAutoScavenge() { - Global.getSector().getCharacterData().addAbility("auto_scavenge"); - boolean isOn = Global.getSector().getMemoryWithoutUpdate().getBoolean("$transpoffderAutoScavenge"); - AutoScavengeAbility.setOn(isOn); + SettingsListener.configure(); } } From 07f00891b3eac1c0beb61802851f8e5a5c6ef4a9 Mon Sep 17 00:00:00 2001 From: Jaghaimo <1764586+jaghaimo@users.noreply.github.com> Date: Tue, 13 Jun 2023 11:04:42 +0100 Subject: [PATCH 4/7] Go go --- assets/transpoffder.json | 6 -- ...tener.java => TransponderOffListener.java} | 2 +- src/transpoffder/Utils.java | 60 +++++++++++++++++++ .../settings/BetterSensorBurst.java | 22 +++++++ .../settings/PartialSurveyToggler.java | 21 +++++++ .../settings/ScavengeAsYouFlyToggler.java | 21 +++++++ src/transpoffder/settings/Settings.java | 28 +++++++++ .../settings/SettingsListener.java | 37 ++++++++++++ src/transpoffder/settings/Toggler.java | 7 +++ .../settings/TransponderOffToggler.java | 21 +++++++ 10 files changed, 218 insertions(+), 7 deletions(-) delete mode 100644 assets/transpoffder.json rename src/transpoffder/{TranspoffderListener.java => TransponderOffListener.java} (90%) create mode 100644 src/transpoffder/Utils.java create mode 100644 src/transpoffder/settings/BetterSensorBurst.java create mode 100644 src/transpoffder/settings/PartialSurveyToggler.java create mode 100644 src/transpoffder/settings/ScavengeAsYouFlyToggler.java create mode 100644 src/transpoffder/settings/Settings.java create mode 100644 src/transpoffder/settings/SettingsListener.java create mode 100644 src/transpoffder/settings/Toggler.java create mode 100644 src/transpoffder/settings/TransponderOffToggler.java diff --git a/assets/transpoffder.json b/assets/transpoffder.json deleted file mode 100644 index bdc00cc..0000000 --- a/assets/transpoffder.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "BetterSensorBurst": true, - "PartialSurveyAsYouFly": true, - "ScavengeAsYouFly": true, - "Transpoffder": true -} diff --git a/src/transpoffder/TranspoffderListener.java b/src/transpoffder/TransponderOffListener.java similarity index 90% rename from src/transpoffder/TranspoffderListener.java rename to src/transpoffder/TransponderOffListener.java index 7e727cf..f2dd5fc 100644 --- a/src/transpoffder/TranspoffderListener.java +++ b/src/transpoffder/TransponderOffListener.java @@ -6,7 +6,7 @@ import com.fs.starfarer.api.campaign.listeners.CurrentLocationChangedListener; import com.fs.starfarer.api.impl.campaign.ids.Abilities; -public class TranspoffderListener implements CurrentLocationChangedListener { +public class TransponderOffListener implements CurrentLocationChangedListener { @Override public void reportCurrentLocationChanged(LocationAPI prev, LocationAPI curr) { diff --git a/src/transpoffder/Utils.java b/src/transpoffder/Utils.java new file mode 100644 index 0000000..51b6b7a --- /dev/null +++ b/src/transpoffder/Utils.java @@ -0,0 +1,60 @@ +package transpoffder; + +import com.fs.starfarer.api.EveryFrameScript; +import com.fs.starfarer.api.GameState; +import com.fs.starfarer.api.Global; +import com.fs.starfarer.api.util.Misc; + +public class Utils { + + public static void addTransientListener(Object listener) { + Global.getSector().getListenerManager().addListener(listener, true); + } + + public static void addTransientScript(EveryFrameScript script) { + Global.getSector().addTransientScript(script); + } + + public static boolean isInCampaign() { + return Global.getSettings().getCurrentState() == GameState.CAMPAIGN; + } + + public static void notifyAboutState() { + String state = AutoScavengeAbility.isOn() ? "enabled" : "disabled"; + Global + .getSector() + .getCampaignUI() + .addMessage( + "Automatic scavenging is %s.", + Misc.getTextColor(), + state, + state, + Misc.getHighlightColor(), + Misc.getHighlightColor() + ); + } + + public static void removeAutoScavenge() { + boolean isOn = AutoScavengeAbility.isOn(); + Global.getSector().getMemoryWithoutUpdate().set("$transpoffderAutoScavenge", isOn); + Global.getSector().getCharacterData().removeAbility("auto_scavenge"); + } + + public static void removeTransientListeners(Class clazz) { + Global.getSector().getListenerManager().removeListenerOfClass(clazz); + } + + public static void removeTransientScripts(Class clazz) { + for (EveryFrameScript script : Global.getSector().getTransientScripts()) { + if (clazz.isInstance(script)) { + Global.getSector().removeTransientScript(null); + } + } + } + + public static void restoreAutoScavenge() { + Global.getSector().getCharacterData().addAbility("auto_scavenge"); + boolean isOn = Global.getSector().getMemoryWithoutUpdate().getBoolean("$transpoffderAutoScavenge"); + AutoScavengeAbility.setOn(isOn); + } +} diff --git a/src/transpoffder/settings/BetterSensorBurst.java b/src/transpoffder/settings/BetterSensorBurst.java new file mode 100644 index 0000000..8484e60 --- /dev/null +++ b/src/transpoffder/settings/BetterSensorBurst.java @@ -0,0 +1,22 @@ +package transpoffder.settings; + +import com.fs.starfarer.api.Global; +import lombok.extern.log4j.Log4j; + +@Log4j +public class BetterSensorBurst implements Toggler { + + @Override + public void enable() { + Global.getSettings().getAbilitySpec("sensor_burst").getTags().remove("burn-"); + Global.getSettings().getAbilitySpec("sensor_burst").getTags().remove("sensors+"); + log.info("Enabled better sensor burst"); + } + + @Override + public void disable() { + Global.getSettings().getAbilitySpec("sensor_burst").getTags().add("burn-"); + Global.getSettings().getAbilitySpec("sensor_burst").getTags().add("sensors+"); + log.info("Disabled better sensor burst"); + } +} diff --git a/src/transpoffder/settings/PartialSurveyToggler.java b/src/transpoffder/settings/PartialSurveyToggler.java new file mode 100644 index 0000000..aabdb92 --- /dev/null +++ b/src/transpoffder/settings/PartialSurveyToggler.java @@ -0,0 +1,21 @@ +package transpoffder.settings; + +import lombok.extern.log4j.Log4j; +import transpoffder.PartialSurveyScript; +import transpoffder.Utils; + +@Log4j +public class PartialSurveyToggler implements Toggler { + + @Override + public void enable() { + Utils.addTransientScript(new PartialSurveyScript()); + log.info("Enabled partial survey as you fly"); + } + + @Override + public void disable() { + Utils.removeTransientScripts(PartialSurveyScript.class); + log.info("Disabled partial survey as you fly"); + } +} diff --git a/src/transpoffder/settings/ScavengeAsYouFlyToggler.java b/src/transpoffder/settings/ScavengeAsYouFlyToggler.java new file mode 100644 index 0000000..626b1b5 --- /dev/null +++ b/src/transpoffder/settings/ScavengeAsYouFlyToggler.java @@ -0,0 +1,21 @@ +package transpoffder.settings; + +import lombok.extern.log4j.Log4j; +import transpoffder.Utils; + +@Log4j +public class ScavengeAsYouFlyToggler implements Toggler { + + @Override + public void enable() { + Utils.restoreAutoScavenge(); + Utils.notifyAboutState(); + log.info("Enabled scavenge as you fly"); + } + + @Override + public void disable() { + Utils.removeAutoScavenge(); + log.info("Disabled scavenge as you fly"); + } +} diff --git a/src/transpoffder/settings/Settings.java b/src/transpoffder/settings/Settings.java new file mode 100644 index 0000000..44dd31b --- /dev/null +++ b/src/transpoffder/settings/Settings.java @@ -0,0 +1,28 @@ +package transpoffder.settings; + +import lombok.RequiredArgsConstructor; +import lunalib.lunaSettings.LunaSettings; + +@RequiredArgsConstructor +public enum Settings { + BETTER_ACTIVE_BURST("BetterActiveBurst", new BetterSensorBurst()), + PARTIAL_SURVEY_AS_YOU_FLY("PartialSurveyAsYouFly", new PartialSurveyToggler()), + SCAVENGE_AS_YOU_FLY("ScavengeAsYouFly", new ScavengeAsYouFlyToggler()), + TRANSPONDER_OFF("TransponderOff", new TransponderOffToggler()); + + private final String key; + private final Toggler toggler; + public static final String MOD_ID = "transpoffder"; + + public void configure() { + if (LunaSettings.getBoolean(MOD_ID, key)) { + toggler.enable(); + } else { + toggler.disable(); + } + } + + public void disable() { + toggler.disable(); + } +} diff --git a/src/transpoffder/settings/SettingsListener.java b/src/transpoffder/settings/SettingsListener.java new file mode 100644 index 0000000..1801f8a --- /dev/null +++ b/src/transpoffder/settings/SettingsListener.java @@ -0,0 +1,37 @@ +package transpoffder.settings; + +import lunalib.lunaSettings.LunaSettings; +import lunalib.lunaSettings.LunaSettingsListener; +import transpoffder.Utils; + +public class SettingsListener implements LunaSettingsListener { + + public static void configure() { + Settings.BETTER_ACTIVE_BURST.configure(); + Settings.PARTIAL_SURVEY_AS_YOU_FLY.configure(); + Settings.SCAVENGE_AS_YOU_FLY.configure(); + Settings.TRANSPONDER_OFF.configure(); + } + + public static void deactivate() { + Settings.BETTER_ACTIVE_BURST.disable(); + Settings.PARTIAL_SURVEY_AS_YOU_FLY.disable(); + Settings.SCAVENGE_AS_YOU_FLY.disable(); + Settings.TRANSPONDER_OFF.disable(); + } + + public static void register() { + LunaSettings.addSettingsListener(new SettingsListener()); + } + + @Override + public void settingsChanged(String modId) { + if (!modId.equals(Settings.MOD_ID)) { + return; + } + if (!Utils.isInCampaign()) { + return; + } + configure(); + } +} diff --git a/src/transpoffder/settings/Toggler.java b/src/transpoffder/settings/Toggler.java new file mode 100644 index 0000000..0b6ea34 --- /dev/null +++ b/src/transpoffder/settings/Toggler.java @@ -0,0 +1,7 @@ +package transpoffder.settings; + +public interface Toggler { + public void enable(); + + public void disable(); +} diff --git a/src/transpoffder/settings/TransponderOffToggler.java b/src/transpoffder/settings/TransponderOffToggler.java new file mode 100644 index 0000000..f47d683 --- /dev/null +++ b/src/transpoffder/settings/TransponderOffToggler.java @@ -0,0 +1,21 @@ +package transpoffder.settings; + +import lombok.extern.log4j.Log4j; +import transpoffder.TransponderOffListener; +import transpoffder.Utils; + +@Log4j +public class TransponderOffToggler implements Toggler { + + @Override + public void enable() { + Utils.addTransientListener(new TransponderOffListener()); + log.info("Enabled transponder off"); + } + + @Override + public void disable() { + Utils.removeTransientListeners(TransponderOffListener.class); + log.info("Disabled transponder off"); + } +} From 1df775cc6ef13babdede31023365e6ea6f24345d Mon Sep 17 00:00:00 2001 From: Jaghaimo <1764586+jaghaimo@users.noreply.github.com> Date: Tue, 13 Jun 2023 11:08:46 +0100 Subject: [PATCH 5/7] Fight with climate change --- .codeclimate.yml | 6 ++++++ README.md | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 .codeclimate.yml diff --git a/.codeclimate.yml b/.codeclimate.yml new file mode 100644 index 0000000..807e077 --- /dev/null +++ b/.codeclimate.yml @@ -0,0 +1,6 @@ +version: "2" +checks: + return-statements: + enabled: false + similar-code: + enabled: false diff --git a/README.md b/README.md index ad89d46..451d13f 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Automatically turn off fleet transponder when transitioning to Hyperspace. ## Better Active Sensor Burst -Do not disable Sustained Burn when using Active Sensor Burst or Neutrino Detector. +Do not disable Sustained Burn or Neutrino Detector when using Active Sensor Burst. Fleet will move slowly for the cool-down duration (instead of doing full stop) and resume full burn afterwards. ## Scavenge as You Fly From 494efdf0abe011d7c86b8d7518fcbae884d9d5a1 Mon Sep 17 00:00:00 2001 From: Jaghaimo <1764586+jaghaimo@users.noreply.github.com> Date: Tue, 13 Jun 2023 14:11:51 +0100 Subject: [PATCH 6/7] Add Luna settings --- README.md | 14 +++++++------- assets/data/config/LunaSettings.csv | 6 ++++++ 2 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 assets/data/config/LunaSettings.csv diff --git a/README.md b/README.md index 451d13f..e47c0ec 100644 --- a/README.md +++ b/README.md @@ -6,24 +6,24 @@ Safe to install and uninstall mid-game. Comes in two flavours: basic mod (`transpoffder-x.y.z.zip`) and mod that changes some settings (see below, `transpoffder-x.y.z-with-settings.zip`). -## Transponder Off in Hyperspace - -Automatically turn off fleet transponder when transitioning to Hyperspace. - ## Better Active Sensor Burst Do not disable Sustained Burn or Neutrino Detector when using Active Sensor Burst. Fleet will move slowly for the cool-down duration (instead of doing full stop) and resume full burn afterwards. +## Partial Survey as You Fly + +Automatically provide partial survey for planets within your sensor range. +No need to land on the planet any more. + ## Scavenge as You Fly Use Scavenge ability as soon as it is usable. Toggled via new ability (blue Scavenge icon). -## Partial Survey as You Fly +## Transponder Off in Hyperspace -No need to "touch" the planet any more. -Automatically provide partial survey for planets within your sensor range. +Automatically turn off fleet transponder when transitioning to Hyperspace. ## Vanilla Settings Changed diff --git a/assets/data/config/LunaSettings.csv b/assets/data/config/LunaSettings.csv new file mode 100644 index 0000000..f59d507 --- /dev/null +++ b/assets/data/config/LunaSettings.csv @@ -0,0 +1,6 @@ +fieldID,fieldName,fieldType,defaultValue,secondaryValue,fieldDescription,minValue,maxValue,tab +,,,,,,,, +BetterActiveBurst,Better Active Burst,Boolean,true,,"Slow down fleet movement (instead of full-stop) and resume Sustained Burn (if it was active) after the cooldown.",,, +PartialSurveyAsYouFly,Partial Survey As You Fly,Boolean,true,,"Automatically provide partial survey for planets within your sensor range. No need to land on the planet anymore.",,, +ScavengeAsYouFly,Scavenge As You Fly,Boolean,true,,"Use Scavenge ability as soon as it is usable. Toggled via new ability (blue Scavenge icon).",,, +TransponderOff,Transponder Off in Hyperspace,Boolean,true,,"Automatically turn off fleet transponder when transitioning to Hyperspace.",,, \ No newline at end of file From 405b974cc90820f7db03badb334ae6ff01654c6e Mon Sep 17 00:00:00 2001 From: Jaghaimo <1764586+jaghaimo@users.noreply.github.com> Date: Tue, 13 Jun 2023 14:51:54 +0100 Subject: [PATCH 7/7] Fixes and changes --- assets/data/config/LunaSettingsConfig.json | 5 +++++ assets/graphics/icons/transpoffder.png | Bin 0 -> 5327 bytes assets/mod_info.json | 2 +- src/transpoffder/AutoScavengeAbility.java | 4 ++++ src/transpoffder/Utils.java | 21 ++++-------------- .../settings/ScavengeAsYouFlyToggler.java | 15 ++++++++++--- .../settings/SettingsListener.java | 8 +++++++ 7 files changed, 34 insertions(+), 21 deletions(-) create mode 100644 assets/data/config/LunaSettingsConfig.json create mode 100644 assets/graphics/icons/transpoffder.png diff --git a/assets/data/config/LunaSettingsConfig.json b/assets/data/config/LunaSettingsConfig.json new file mode 100644 index 0000000..99deca9 --- /dev/null +++ b/assets/data/config/LunaSettingsConfig.json @@ -0,0 +1,5 @@ +{ + "transpoffder": { + "iconPath": "graphics/icons/transpoffder.png" + } +} diff --git a/assets/graphics/icons/transpoffder.png b/assets/graphics/icons/transpoffder.png new file mode 100644 index 0000000000000000000000000000000000000000..a1c5d2525bb15964ecdb7f9bf995816afb95f5b6 GIT binary patch literal 5327 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 literal 0 HcmV?d00001 diff --git a/assets/mod_info.json b/assets/mod_info.json index a01e513..c45bf1b 100644 --- a/assets/mod_info.json +++ b/assets/mod_info.json @@ -3,7 +3,7 @@ "name": "Transponder Off", "author": "Jaghaimo", "utility": true, - "version": "2.0.0", + "version": "2.0.0-rc2", "description": "QoL improvements to the campaign layer of Starsector", "gameVersion": "0.96a-RC10", "modPlugin": "transpoffder.TranspoffderMod", diff --git a/src/transpoffder/AutoScavengeAbility.java b/src/transpoffder/AutoScavengeAbility.java index 5708ed4..5c49a8d 100644 --- a/src/transpoffder/AutoScavengeAbility.java +++ b/src/transpoffder/AutoScavengeAbility.java @@ -11,6 +11,10 @@ public class AutoScavengeAbility extends BaseToggleAbility { + public static boolean has() { + return getInstance() != null; + } + public static boolean isOn() { return getInstance().isActive(); } diff --git a/src/transpoffder/Utils.java b/src/transpoffder/Utils.java index 51b6b7a..d82488d 100644 --- a/src/transpoffder/Utils.java +++ b/src/transpoffder/Utils.java @@ -19,27 +19,20 @@ public static boolean isInCampaign() { return Global.getSettings().getCurrentState() == GameState.CAMPAIGN; } - public static void notifyAboutState() { - String state = AutoScavengeAbility.isOn() ? "enabled" : "disabled"; + public static void quickNotify(String text, String highlight1, String highlight2) { Global .getSector() .getCampaignUI() .addMessage( - "Automatic scavenging is %s.", + text, Misc.getTextColor(), - state, - state, + highlight1, + highlight2, Misc.getHighlightColor(), Misc.getHighlightColor() ); } - public static void removeAutoScavenge() { - boolean isOn = AutoScavengeAbility.isOn(); - Global.getSector().getMemoryWithoutUpdate().set("$transpoffderAutoScavenge", isOn); - Global.getSector().getCharacterData().removeAbility("auto_scavenge"); - } - public static void removeTransientListeners(Class clazz) { Global.getSector().getListenerManager().removeListenerOfClass(clazz); } @@ -51,10 +44,4 @@ public static void removeTransientScripts(Class clazz) { } } } - - public static void restoreAutoScavenge() { - Global.getSector().getCharacterData().addAbility("auto_scavenge"); - boolean isOn = Global.getSector().getMemoryWithoutUpdate().getBoolean("$transpoffderAutoScavenge"); - AutoScavengeAbility.setOn(isOn); - } } diff --git a/src/transpoffder/settings/ScavengeAsYouFlyToggler.java b/src/transpoffder/settings/ScavengeAsYouFlyToggler.java index 626b1b5..d0157cd 100644 --- a/src/transpoffder/settings/ScavengeAsYouFlyToggler.java +++ b/src/transpoffder/settings/ScavengeAsYouFlyToggler.java @@ -1,6 +1,8 @@ package transpoffder.settings; +import com.fs.starfarer.api.Global; import lombok.extern.log4j.Log4j; +import transpoffder.AutoScavengeAbility; import transpoffder.Utils; @Log4j @@ -8,14 +10,21 @@ public class ScavengeAsYouFlyToggler implements Toggler { @Override public void enable() { - Utils.restoreAutoScavenge(); - Utils.notifyAboutState(); + boolean isOn = Global.getSector().getMemoryWithoutUpdate().getBoolean("$transpoffderAutoScavenge"); + Global.getSector().getCharacterData().addAbility("auto_scavenge"); + AutoScavengeAbility.setOn(isOn); + String state = isOn ? "enabled" : "disabled"; + Utils.quickNotify("Automatic scavenging is %s.", state, state); log.info("Enabled scavenge as you fly"); } @Override public void disable() { - Utils.removeAutoScavenge(); + if (AutoScavengeAbility.has()) { + boolean isOn = AutoScavengeAbility.isOn(); + Global.getSector().getMemoryWithoutUpdate().set("$transpoffderAutoScavenge", isOn); + Global.getSector().getCharacterData().removeAbility("auto_scavenge"); + } log.info("Disabled scavenge as you fly"); } } diff --git a/src/transpoffder/settings/SettingsListener.java b/src/transpoffder/settings/SettingsListener.java index 1801f8a..1c449a4 100644 --- a/src/transpoffder/settings/SettingsListener.java +++ b/src/transpoffder/settings/SettingsListener.java @@ -1,9 +1,12 @@ package transpoffder.settings; +import com.fs.starfarer.api.Global; +import lombok.extern.log4j.Log4j; import lunalib.lunaSettings.LunaSettings; import lunalib.lunaSettings.LunaSettingsListener; import transpoffder.Utils; +@Log4j public class SettingsListener implements LunaSettingsListener { public static void configure() { @@ -22,6 +25,11 @@ public static void deactivate() { public static void register() { LunaSettings.addSettingsListener(new SettingsListener()); + try { + Global.getSettings().loadTexture("graphics/icons/transpoffder.png"); + } catch (Exception exception) { + log.error("Failed to load tranpoffder icon!"); + } } @Override