mirror of
https://github.com/rmroc451/TweaksAndThings.git
synced 2025-12-18 02:09:37 -06:00
Merge remote-tracking branch 'origin/main' into 13-add-buttonconsole-command-to-initiate-a-console-message-logging-with-selected-engine
This commit is contained in:
@@ -3,5 +3,6 @@
|
|||||||
public enum MrocHelperType
|
public enum MrocHelperType
|
||||||
{
|
{
|
||||||
Handbrake,
|
Handbrake,
|
||||||
GladhandAndAnglecock
|
GladhandAndAnglecock,
|
||||||
|
BleedAirSystem
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,5 +37,7 @@ namespace RMROC451.TweaksAndThings.Extensions
|
|||||||
}
|
}
|
||||||
return car;
|
return car;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool NotMotivePower(this Car car) => car is not BaseLocomotive && car.Archetype != Model.Definition.CarArchetype.Tender;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
using Game.State;
|
using Game.State;
|
||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
using KeyValue.Runtime;
|
using KeyValue.Runtime;
|
||||||
|
using Model;
|
||||||
|
using Model.OpsNew;
|
||||||
using Railloader;
|
using Railloader;
|
||||||
using RMROC451.TweaksAndThings.Enums;
|
using RMROC451.TweaksAndThings.Enums;
|
||||||
using RMROC451.TweaksAndThings.Extensions;
|
using RMROC451.TweaksAndThings.Extensions;
|
||||||
@@ -11,6 +13,7 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using UI.Builder;
|
using UI.Builder;
|
||||||
using UI.CarInspector;
|
using UI.CarInspector;
|
||||||
|
using UI.Tags;
|
||||||
using static Model.Car;
|
using static Model.Car;
|
||||||
|
|
||||||
namespace RMROC451.TweaksAndThings.Patches;
|
namespace RMROC451.TweaksAndThings.Patches;
|
||||||
@@ -31,7 +34,7 @@ public class CarInspector_PopulateCarPanel_Patch
|
|||||||
private static bool Prefix(CarInspector __instance, UIPanelBuilder builder)
|
private static bool Prefix(CarInspector __instance, UIPanelBuilder builder)
|
||||||
{
|
{
|
||||||
|
|
||||||
TweaksAndThings tweaksAndThings = SingletonPluginBase<TweaksAndThings>.Shared;
|
TweaksAndThingsPlugin tweaksAndThings = SingletonPluginBase<TweaksAndThingsPlugin>.Shared;
|
||||||
if (!tweaksAndThings.IsEnabled) return true;
|
if (!tweaksAndThings.IsEnabled) return true;
|
||||||
|
|
||||||
var consist = __instance._car.EnumerateCoupled(LogicalEnd.A);
|
var consist = __instance._car.EnumerateCoupled(LogicalEnd.A);
|
||||||
@@ -48,12 +51,18 @@ public class CarInspector_PopulateCarPanel_Patch
|
|||||||
|
|
||||||
if (consist.Any(c => c.EndAirSystemIssue()))
|
if (consist.Any(c => c.EndAirSystemIssue()))
|
||||||
{
|
{
|
||||||
hstack.AddButtonCompact("Connect Air Lines", delegate
|
hstack.AddButtonCompact("Connect Air", delegate
|
||||||
{
|
{
|
||||||
MrocConsistHelper(__instance._car, MrocHelperType.GladhandAndAnglecock);
|
MrocConsistHelper(__instance._car, MrocHelperType.GladhandAndAnglecock);
|
||||||
hstack.Rebuild();
|
hstack.Rebuild();
|
||||||
}).Tooltip("Connect Consist Air Lines", "Iterates over each car in this consist and connects gladhands and opens anglecocks.");
|
}).Tooltip("Connect Consist Air", "Iterates over each car in this consist and connects gladhands and opens anglecocks.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hstack.AddButtonCompact("Bleed Consist", delegate
|
||||||
|
{
|
||||||
|
MrocConsistHelper(__instance._car, MrocHelperType.BleedAirSystem);
|
||||||
|
hstack.Rebuild();
|
||||||
|
}).Tooltip("Bleed Air Lines", "Iterates over each car in this consist and bleeds the air out of the lines.");
|
||||||
});
|
});
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -61,27 +70,29 @@ public class CarInspector_PopulateCarPanel_Patch
|
|||||||
|
|
||||||
private static UIPanelBuilder AddCarConsistRebuildObservers(UIPanelBuilder builder, IEnumerable<Model.Car> consist)
|
private static UIPanelBuilder AddCarConsistRebuildObservers(UIPanelBuilder builder, IEnumerable<Model.Car> consist)
|
||||||
{
|
{
|
||||||
|
TagController tagController = UnityEngine.Object.FindFirstObjectByType<TagController>();
|
||||||
foreach (Model.Car car in consist)
|
foreach (Model.Car car in consist)
|
||||||
{
|
{
|
||||||
builder = AddObserver(builder, car, PropertyChange.KeyForControl(PropertyChange.Control.Handbrake));
|
builder = AddObserver(builder, car, PropertyChange.KeyForControl(PropertyChange.Control.Handbrake), tagController);
|
||||||
foreach (LogicalEnd logicalEnd in ends)
|
foreach (LogicalEnd logicalEnd in ends)
|
||||||
{
|
{
|
||||||
builder = AddObserver(builder, car, KeyValueKeyFor(EndGearStateKey.IsCoupled, car.LogicalToEnd(logicalEnd)));
|
builder = AddObserver(builder, car, KeyValueKeyFor(EndGearStateKey.IsCoupled, car.LogicalToEnd(logicalEnd)), tagController);
|
||||||
builder = AddObserver(builder, car, KeyValueKeyFor(EndGearStateKey.IsAirConnected, car.LogicalToEnd(logicalEnd)));
|
builder = AddObserver(builder, car, KeyValueKeyFor(EndGearStateKey.IsAirConnected, car.LogicalToEnd(logicalEnd)), tagController);
|
||||||
builder = AddObserver(builder, car, KeyValueKeyFor(EndGearStateKey.Anglecock, car.LogicalToEnd(logicalEnd)));
|
builder = AddObserver(builder, car, KeyValueKeyFor(EndGearStateKey.Anglecock, car.LogicalToEnd(logicalEnd)), tagController);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static UIPanelBuilder AddObserver(UIPanelBuilder builder, Model.Car car, string key)
|
private static UIPanelBuilder AddObserver(UIPanelBuilder builder, Model.Car car, string key, TagController tagController)
|
||||||
{
|
{
|
||||||
builder.AddObserver(
|
builder.AddObserver(
|
||||||
car.KeyValueObject.Observe(
|
car.KeyValueObject.Observe(
|
||||||
key,
|
key,
|
||||||
delegate (Value value)
|
delegate (Value value)
|
||||||
{
|
{
|
||||||
|
tagController.UpdateTag(car, car.TagCallout, OpsController.Shared);
|
||||||
builder.Rebuild();
|
builder.Rebuild();
|
||||||
},
|
},
|
||||||
false
|
false
|
||||||
@@ -106,16 +117,17 @@ public class CarInspector_PopulateCarPanel_Patch
|
|||||||
IEnumerable<Model.Car> consist = car.EnumerateCoupled(LogicalEnd.A);
|
IEnumerable<Model.Car> consist = car.EnumerateCoupled(LogicalEnd.A);
|
||||||
|
|
||||||
Log.Information($"{car} => {mrocHelperType} => {string.Join("/", consist.Select(c => c.ToString()))}");
|
Log.Information($"{car} => {mrocHelperType} => {string.Join("/", consist.Select(c => c.ToString()))}");
|
||||||
|
TrainController tc = UnityEngine.Object.FindObjectOfType<TrainController>();
|
||||||
switch (mrocHelperType)
|
switch (mrocHelperType)
|
||||||
{
|
{
|
||||||
case MrocHelperType.Handbrake:
|
case MrocHelperType.Handbrake:
|
||||||
if (consist.Any(c => c.HandbrakeApplied()))
|
if (consist.Any(c => c.HandbrakeApplied()))
|
||||||
{
|
{
|
||||||
consist.Do(c => c.SetHandbrake(false));
|
consist.Do(c => c.SetHandbrake(false));
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
TrainController tc = UnityEngine.Object.FindObjectOfType<TrainController>();
|
consist = consist.Where(c => c is not BaseLocomotive && c.Archetype != Model.Definition.CarArchetype.Tender);
|
||||||
consist = consist.Where(c => c.DetermineFuelCar(true) != null);
|
|
||||||
Log.Information($"{car} => {mrocHelperType} => {string.Join("/", consist.Select(c => c.ToString()))}");
|
Log.Information($"{car} => {mrocHelperType} => {string.Join("/", consist.Select(c => c.ToString()))}");
|
||||||
//when ApplyHandbrakesAsNeeded is called, and the consist contains an engine, it stops applying brakes.
|
//when ApplyHandbrakesAsNeeded is called, and the consist contains an engine, it stops applying brakes.
|
||||||
tc.ApplyHandbrakesAsNeeded(consist.ToList(), PlaceTrainHandbrakes.Automatic);
|
tc.ApplyHandbrakesAsNeeded(consist.ToList(), PlaceTrainHandbrakes.Automatic);
|
||||||
@@ -144,6 +156,15 @@ public class CarInspector_PopulateCarPanel_Patch
|
|||||||
})
|
})
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MrocHelperType.BleedAirSystem:
|
||||||
|
consist = consist.Where(c => c.NotMotivePower());
|
||||||
|
Log.Information($"{car} => {mrocHelperType} => {string.Join("/", consist.Select(c => c.ToString()))}");
|
||||||
|
foreach (Model.Car bleed in consist)
|
||||||
|
{
|
||||||
|
StateManager.ApplyLocal(new PropertyChange(bleed.id, PropertyChange.Control.Bleed, 1));
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ public class EngineRosterRow_Refresh_Patch
|
|||||||
{
|
{
|
||||||
public static void Postfix(EngineRosterRow __instance)
|
public static void Postfix(EngineRosterRow __instance)
|
||||||
{
|
{
|
||||||
TweaksAndThings? tweaksAndThings = SingletonPluginBase<TweaksAndThings>.Shared;
|
TweaksAndThingsPlugin? tweaksAndThings = SingletonPluginBase<TweaksAndThingsPlugin>.Shared;
|
||||||
RosterFuelColumnSettings? rosterFuelColumnSettings = tweaksAndThings?.settings?.EngineRosterFuelColumnSettings;
|
RosterFuelColumnSettings? rosterFuelColumnSettings = tweaksAndThings?.settings?.EngineRosterFuelColumnSettings;
|
||||||
|
|
||||||
if (tweaksAndThings == null ||
|
if (tweaksAndThings == null ||
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ public class ExpandedConsole_Add_Patch
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
TweaksAndThings tweaksAndThings = SingletonPluginBase<TweaksAndThings>.Shared;
|
TweaksAndThingsPlugin tweaksAndThings = SingletonPluginBase<TweaksAndThingsPlugin>.Shared;
|
||||||
StateManager shared = StateManager.Shared;
|
StateManager shared = StateManager.Shared;
|
||||||
GameStorage gameStorage = shared.Storage;
|
GameStorage gameStorage = shared.Storage;
|
||||||
WebhookSettings settings = tweaksAndThings?.settings?.WebhookSettingsList?.FirstOrDefault(ws => ws.RailroadMark == gameStorage.RailroadMark);
|
WebhookSettings settings = tweaksAndThings?.settings?.WebhookSettingsList?.FirstOrDefault(ws => ws.RailroadMark == gameStorage.RailroadMark);
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
using Model;
|
using Model;
|
||||||
using Model.OpsNew;
|
using Model.OpsNew;
|
||||||
using Railloader;
|
using Railloader;
|
||||||
|
using RMROC451.TweaksAndThings;
|
||||||
using RMROC451.TweaksAndThings.Extensions;
|
using RMROC451.TweaksAndThings.Extensions;
|
||||||
using UI;
|
using UI;
|
||||||
using UI.Tags;
|
using UI.Tags;
|
||||||
@@ -20,7 +21,7 @@ public class TagController_UpdateTag_Patch
|
|||||||
private static void Postfix(Car car, TagCallout tagCallout)
|
private static void Postfix(Car car, TagCallout tagCallout)
|
||||||
{
|
{
|
||||||
TagController tagController = UnityEngine.Object.FindObjectOfType<TagController>();
|
TagController tagController = UnityEngine.Object.FindObjectOfType<TagController>();
|
||||||
TweaksAndThings tweaksAndThings = SingletonPluginBase<TweaksAndThings>.Shared;
|
TweaksAndThingsPlugin tweaksAndThings = SingletonPluginBase<TweaksAndThingsPlugin>.Shared;
|
||||||
|
|
||||||
if (!tweaksAndThings.IsEnabled || !tweaksAndThings.settings.HandBrakeAndAirTagModifiers)
|
if (!tweaksAndThings.IsEnabled || !tweaksAndThings.settings.HandBrakeAndAirTagModifiers)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ using RMROC451.TweaksAndThings.Commands;
|
|||||||
|
|
||||||
namespace RMROC451.TweaksAndThings;
|
namespace RMROC451.TweaksAndThings;
|
||||||
|
|
||||||
public class TweaksAndThings : SingletonPluginBase<TweaksAndThings>, IUpdateHandler, IModTabHandler
|
public class TweaksAndThingsPlugin : SingletonPluginBase<TweaksAndThingsPlugin>, IUpdateHandler, IModTabHandler
|
||||||
{
|
{
|
||||||
private HttpClient client;
|
private HttpClient client;
|
||||||
internal HttpClient Client
|
internal HttpClient Client
|
||||||
@@ -29,16 +29,16 @@ public class TweaksAndThings : SingletonPluginBase<TweaksAndThings>, IUpdateHand
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
internal Settings? settings { get; private set; } = null;
|
internal Settings? settings { get; private set; } = null;
|
||||||
readonly ILogger logger = Log.ForContext<TweaksAndThings>();
|
readonly ILogger logger = Log.ForContext<TweaksAndThingsPlugin>();
|
||||||
IModdingContext moddingContext { get; set; }
|
IModdingContext moddingContext { get; set; }
|
||||||
IModDefinition modDefinition { get; set; }
|
IModDefinition modDefinition { get; set; }
|
||||||
|
|
||||||
static TweaksAndThings()
|
static TweaksAndThingsPlugin()
|
||||||
{
|
{
|
||||||
Log.Information("Hello! Static Constructor was called!");
|
Log.Information("Hello! Static Constructor was called!");
|
||||||
}
|
}
|
||||||
|
|
||||||
public TweaksAndThings(IModdingContext moddingContext, IModDefinition self)
|
public TweaksAndThingsPlugin(IModdingContext moddingContext, IModDefinition self)
|
||||||
{
|
{
|
||||||
this.modDefinition = self;
|
this.modDefinition = self;
|
||||||
|
|
||||||
Reference in New Issue
Block a user