Change to only enable when starting session as host, Disable progress.

This commit is contained in:
DragonFire47
2024-10-17 22:08:48 -07:00
parent 34cd7b0479
commit 4cf0464aad
4 changed files with 38 additions and 18 deletions
+3 -7
View File
@@ -1,14 +1,10 @@
using CG.Game; using CG.Game;
using CG.Ship.Modules; using CG.Ship.Modules;
using Gameplay.Enhancements; using Gameplay.Enhancements;
using Gameplay.Ship;
using HarmonyLib; using HarmonyLib;
using Photon.Pun; using Photon.Pun;
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VoidManager.Utilities; using VoidManager.Utilities;
namespace AutomaticShipSystems namespace AutomaticShipSystems
@@ -26,7 +22,7 @@ namespace AutomaticShipSystems
[HarmonyPatch("SetState")] [HarmonyPatch("SetState")]
static void SetState(Enhancement __instance, EnhancementState newState) static void SetState(Enhancement __instance, EnhancementState newState)
{ {
if (!PhotonNetwork.IsMasterClient) return; if (!PhotonNetwork.IsMasterClient || !VoidManagerPlugin.ModEnabled) return;
if (Configs.TrimConfig.Value && if (Configs.TrimConfig.Value &&
ClientGame.Current?.PlayerShip?.GetModule<Helm>()?.Engine?.GetComponentsInChildren<Enhancement>()?.Contains(__instance) == true && ClientGame.Current?.PlayerShip?.GetModule<Helm>()?.Engine?.GetComponentsInChildren<Enhancement>()?.Contains(__instance) == true &&
@@ -38,7 +34,7 @@ namespace AutomaticShipSystems
private static void ResetTrim(Enhancement trim) private static void ResetTrim(Enhancement trim)
{ {
if (!PhotonNetwork.IsMasterClient || !Tools.PlayerShipExists) return; if (!PhotonNetwork.IsMasterClient || !VoidManagerPlugin.ModEnabled || !Game.PlayerShipExists) return;
if (trim.CurrentState.Value == EnhancementState.Inactive) if (trim.CurrentState.Value == EnhancementState.Inactive)
{ {
@@ -48,7 +44,7 @@ namespace AutomaticShipSystems
internal static void ToggleAutomaticTrims(object sender, EventArgs e) internal static void ToggleAutomaticTrims(object sender, EventArgs e)
{ {
if (!PhotonNetwork.IsMasterClient) return; if (!PhotonNetwork.IsMasterClient || !VoidManagerPlugin.ModEnabled) return;
Enhancement[] trims = ClientGame.Current?.PlayerShip?.GetModule<Helm>()?.Engine?.GetComponentsInChildren<Enhancement>(); Enhancement[] trims = ClientGame.Current?.PlayerShip?.GetModule<Helm>()?.Engine?.GetComponentsInChildren<Enhancement>();
if (trims == null || trims.Length == 0) return; if (trims == null || trims.Length == 0) return;
+4 -4
View File
@@ -1,5 +1,5 @@
using CG.Game; using CG.Game;
using Gameplay.PowerSystem; using Gameplay.Power;
using HarmonyLib; using HarmonyLib;
using Photon.Pun; using Photon.Pun;
using System; using System;
@@ -21,7 +21,7 @@ namespace AutomaticShipSystems
[HarmonyPatch("OnPowerStateChange")] [HarmonyPatch("OnPowerStateChange")]
static void OnPowerStateChange(PowerBreaker __instance, bool isOn) static void OnPowerStateChange(PowerBreaker __instance, bool isOn)
{ {
if (!PhotonNetwork.IsMasterClient) return; if (!PhotonNetwork.IsMasterClient || !VoidManagerPlugin.ModEnabled) return;
if (!isOn && Configs.CircuitBreakerConfig.Value) if (!isOn && Configs.CircuitBreakerConfig.Value)
{ {
@@ -31,14 +31,14 @@ namespace AutomaticShipSystems
private static void ResetCircuitBreakers(PowerBreaker breaker) private static void ResetCircuitBreakers(PowerBreaker breaker)
{ {
if (!PhotonNetwork.IsMasterClient || !Tools.PlayerShipExists) return; if (!PhotonNetwork.IsMasterClient || !VoidManagerPlugin.ModEnabled || !Game.PlayerShipExists) return;
breaker.IsOn.RequestChange(true); breaker.IsOn.RequestChange(true);
} }
internal static void ToggleAutomaticBreakers(object sender, EventArgs e) internal static void ToggleAutomaticBreakers(object sender, EventArgs e)
{ {
if (!PhotonNetwork.IsMasterClient) return; if (!PhotonNetwork.IsMasterClient || !VoidManagerPlugin.ModEnabled) return;
List<PowerBreaker> breakers = ClientGame.Current?.PlayerShip?.GetComponentInChildren<ProtectedPowerSystem>()?.Breakers; List<PowerBreaker> breakers = ClientGame.Current?.PlayerShip?.GetComponentInChildren<ProtectedPowerSystem>()?.Breakers;
if (breakers == null) return; if (breakers == null) return;
+5 -5
View File
@@ -25,7 +25,7 @@ namespace AutomaticShipSystems
[HarmonyPatch("ChangeState")] [HarmonyPatch("ChangeState")]
static void ChangeState(ThrusterBooster __instance, ThrusterBoosterState state) static void ChangeState(ThrusterBooster __instance, ThrusterBoosterState state)
{ {
if (!PhotonNetwork.IsMasterClient) return; if (!PhotonNetwork.IsMasterClient || !VoidManagerPlugin.ModEnabled) return;
if (state == ThrusterBoosterState.Off && Configs.ThrusterBoosterConfig.Value) if (state == ThrusterBoosterState.Off && Configs.ThrusterBoosterConfig.Value)
{ {
@@ -35,9 +35,9 @@ namespace AutomaticShipSystems
private static void ChargeThrusterBooster(ThrusterBooster booster) private static void ChargeThrusterBooster(ThrusterBooster booster)
{ {
if (!PhotonNetwork.IsMasterClient || !Tools.PlayerShipExists) return; if (!PhotonNetwork.IsMasterClient || !VoidManagerPlugin.ModEnabled || !Game.PlayerShipExists) return;
if (booster.state == ThrusterBoosterState.Off) if (booster.State == ThrusterBoosterState.Off)
{ {
SetLeverPositionMethod.Invoke(booster.ChargeLever, new object[] { 1f }); SetLeverPositionMethod.Invoke(booster.ChargeLever, new object[] { 1f });
} }
@@ -45,7 +45,7 @@ namespace AutomaticShipSystems
internal static void ToggleAutomaticThrusterBoosters(object sender, EventArgs e) internal static void ToggleAutomaticThrusterBoosters(object sender, EventArgs e)
{ {
if (!PhotonNetwork.IsMasterClient) return; if (!PhotonNetwork.IsMasterClient || !VoidManagerPlugin.ModEnabled) return;
List<ThrusterBooster> boosters = ClientGame.Current.PlayerShip?.Transform?.GetComponent<ThrusterBoosterController>()?.ThrusterBoosters; List<ThrusterBooster> boosters = ClientGame.Current.PlayerShip?.Transform?.GetComponent<ThrusterBoosterController>()?.ThrusterBoosters;
if (boosters == null) return; if (boosters == null) return;
@@ -54,7 +54,7 @@ namespace AutomaticShipSystems
{ {
foreach (ThrusterBooster booster in boosters) foreach (ThrusterBooster booster in boosters)
{ {
if (booster.state == ThrusterBoosterState.Off) if (booster.State == ThrusterBoosterState.Off)
{ {
Tools.DelayDoUnique(booster, () => ChargeThrusterBooster(booster), Configs.ThrusterBoosterDelay); Tools.DelayDoUnique(booster, () => ChargeThrusterBooster(booster), Configs.ThrusterBoosterDelay);
} }
+26 -2
View File
@@ -1,13 +1,14 @@
using Photon.Pun; using Photon.Pun;
using VoidManager;
using VoidManager.MPModChecks; using VoidManager.MPModChecks;
namespace AutomaticShipSystems namespace AutomaticShipSystems
{ {
public class VoidManagerPlugin : VoidManager.VoidPlugin public class VoidManagerPlugin : VoidPlugin
{ {
public VoidManagerPlugin() public VoidManagerPlugin()
{ {
VoidManager.Events.Instance.MasterClientSwitched += (_, _) => { Events.Instance.MasterClientSwitched += (_, _) => {
if (PhotonNetwork.IsMasterClient) if (PhotonNetwork.IsMasterClient)
{ {
PowerBreakerPatch.ToggleAutomaticBreakers(null, null); PowerBreakerPatch.ToggleAutomaticBreakers(null, null);
@@ -23,5 +24,28 @@ namespace AutomaticShipSystems
public override string Description => MyPluginInfo.PLUGIN_DESCRIPTION; public override string Description => MyPluginInfo.PLUGIN_DESCRIPTION;
public override string ThunderstoreID => MyPluginInfo.PLUGIN_THUNDERSTORE_ID; public override string ThunderstoreID => MyPluginInfo.PLUGIN_THUNDERSTORE_ID;
public static bool ModEnabled = false;
internal static void Enable()
{
ModEnabled = true;
VoidManager.Progression.ProgressionHandler.DisableProgression(MyPluginInfo.PLUGIN_GUID);
}
public override SessionChangedReturn OnSessionChange(SessionChangedInput input)
{
switch(input.CallType)
{
case CallType.Joining:
ModEnabled = false;
break;
case CallType.SessionEscalated:
case CallType.HostStartSession:
Enable();
return new SessionChangedReturn() { SetMod_Session = true};
}
return base.OnSessionChange(input);
}
} }
} }