mirror of
https://github.com/rmroc451/TweaksAndThings.git
synced 2025-12-16 17:29: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
|
||||
{
|
||||
Handbrake,
|
||||
GladhandAndAnglecock
|
||||
GladhandAndAnglecock,
|
||||
BleedAirSystem
|
||||
}
|
||||
|
||||
@@ -37,5 +37,7 @@ namespace RMROC451.TweaksAndThings.Extensions
|
||||
}
|
||||
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 HarmonyLib;
|
||||
using KeyValue.Runtime;
|
||||
using Model;
|
||||
using Model.OpsNew;
|
||||
using Railloader;
|
||||
using RMROC451.TweaksAndThings.Enums;
|
||||
using RMROC451.TweaksAndThings.Extensions;
|
||||
@@ -11,6 +13,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UI.Builder;
|
||||
using UI.CarInspector;
|
||||
using UI.Tags;
|
||||
using static Model.Car;
|
||||
|
||||
namespace RMROC451.TweaksAndThings.Patches;
|
||||
@@ -31,7 +34,7 @@ public class CarInspector_PopulateCarPanel_Patch
|
||||
private static bool Prefix(CarInspector __instance, UIPanelBuilder builder)
|
||||
{
|
||||
|
||||
TweaksAndThings tweaksAndThings = SingletonPluginBase<TweaksAndThings>.Shared;
|
||||
TweaksAndThingsPlugin tweaksAndThings = SingletonPluginBase<TweaksAndThingsPlugin>.Shared;
|
||||
if (!tweaksAndThings.IsEnabled) return true;
|
||||
|
||||
var consist = __instance._car.EnumerateCoupled(LogicalEnd.A);
|
||||
@@ -48,12 +51,18 @@ public class CarInspector_PopulateCarPanel_Patch
|
||||
|
||||
if (consist.Any(c => c.EndAirSystemIssue()))
|
||||
{
|
||||
hstack.AddButtonCompact("Connect Air Lines", delegate
|
||||
hstack.AddButtonCompact("Connect Air", delegate
|
||||
{
|
||||
MrocConsistHelper(__instance._car, MrocHelperType.GladhandAndAnglecock);
|
||||
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;
|
||||
@@ -61,27 +70,29 @@ public class CarInspector_PopulateCarPanel_Patch
|
||||
|
||||
private static UIPanelBuilder AddCarConsistRebuildObservers(UIPanelBuilder builder, IEnumerable<Model.Car> consist)
|
||||
{
|
||||
TagController tagController = UnityEngine.Object.FindFirstObjectByType<TagController>();
|
||||
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)
|
||||
{
|
||||
builder = AddObserver(builder, car, KeyValueKeyFor(EndGearStateKey.IsCoupled, car.LogicalToEnd(logicalEnd)));
|
||||
builder = AddObserver(builder, car, KeyValueKeyFor(EndGearStateKey.IsAirConnected, car.LogicalToEnd(logicalEnd)));
|
||||
builder = AddObserver(builder, car, KeyValueKeyFor(EndGearStateKey.Anglecock, car.LogicalToEnd(logicalEnd)));
|
||||
builder = AddObserver(builder, car, KeyValueKeyFor(EndGearStateKey.IsCoupled, car.LogicalToEnd(logicalEnd)), tagController);
|
||||
builder = AddObserver(builder, car, KeyValueKeyFor(EndGearStateKey.IsAirConnected, car.LogicalToEnd(logicalEnd)), tagController);
|
||||
builder = AddObserver(builder, car, KeyValueKeyFor(EndGearStateKey.Anglecock, car.LogicalToEnd(logicalEnd)), tagController);
|
||||
}
|
||||
}
|
||||
|
||||
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(
|
||||
car.KeyValueObject.Observe(
|
||||
key,
|
||||
delegate (Value value)
|
||||
{
|
||||
tagController.UpdateTag(car, car.TagCallout, OpsController.Shared);
|
||||
builder.Rebuild();
|
||||
},
|
||||
false
|
||||
@@ -106,16 +117,17 @@ public class CarInspector_PopulateCarPanel_Patch
|
||||
IEnumerable<Model.Car> consist = car.EnumerateCoupled(LogicalEnd.A);
|
||||
|
||||
Log.Information($"{car} => {mrocHelperType} => {string.Join("/", consist.Select(c => c.ToString()))}");
|
||||
TrainController tc = UnityEngine.Object.FindObjectOfType<TrainController>();
|
||||
switch (mrocHelperType)
|
||||
{
|
||||
case MrocHelperType.Handbrake:
|
||||
if (consist.Any(c => c.HandbrakeApplied()))
|
||||
{
|
||||
consist.Do(c => c.SetHandbrake(false));
|
||||
} else
|
||||
}
|
||||
else
|
||||
{
|
||||
TrainController tc = UnityEngine.Object.FindObjectOfType<TrainController>();
|
||||
consist = consist.Where(c => c.DetermineFuelCar(true) != null);
|
||||
consist = consist.Where(c => c is not BaseLocomotive && c.Archetype != Model.Definition.CarArchetype.Tender);
|
||||
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.
|
||||
tc.ApplyHandbrakesAsNeeded(consist.ToList(), PlaceTrainHandbrakes.Automatic);
|
||||
@@ -130,7 +142,7 @@ public class CarInspector_PopulateCarPanel_Patch
|
||||
|
||||
StateManager.ApplyLocal(
|
||||
new PropertyChange(
|
||||
c.id,
|
||||
c.id,
|
||||
KeyValueKeyFor(EndGearStateKey.Anglecock, c.LogicalToEnd(end)),
|
||||
new FloatPropertyValue(endGear.IsCoupled ? 1f : 0f)
|
||||
)
|
||||
@@ -144,6 +156,15 @@ public class CarInspector_PopulateCarPanel_Patch
|
||||
})
|
||||
);
|
||||
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)
|
||||
{
|
||||
TweaksAndThings? tweaksAndThings = SingletonPluginBase<TweaksAndThings>.Shared;
|
||||
TweaksAndThingsPlugin? tweaksAndThings = SingletonPluginBase<TweaksAndThingsPlugin>.Shared;
|
||||
RosterFuelColumnSettings? rosterFuelColumnSettings = tweaksAndThings?.settings?.EngineRosterFuelColumnSettings;
|
||||
|
||||
if (tweaksAndThings == null ||
|
||||
|
||||
@@ -32,7 +32,7 @@ public class ExpandedConsole_Add_Patch
|
||||
{
|
||||
try
|
||||
{
|
||||
TweaksAndThings tweaksAndThings = SingletonPluginBase<TweaksAndThings>.Shared;
|
||||
TweaksAndThingsPlugin tweaksAndThings = SingletonPluginBase<TweaksAndThingsPlugin>.Shared;
|
||||
StateManager shared = StateManager.Shared;
|
||||
GameStorage gameStorage = shared.Storage;
|
||||
WebhookSettings settings = tweaksAndThings?.settings?.WebhookSettingsList?.FirstOrDefault(ws => ws.RailroadMark == gameStorage.RailroadMark);
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
using Model;
|
||||
using Model.OpsNew;
|
||||
using Railloader;
|
||||
using RMROC451.TweaksAndThings;
|
||||
using RMROC451.TweaksAndThings.Extensions;
|
||||
using UI;
|
||||
using UI.Tags;
|
||||
@@ -20,7 +21,7 @@ public class TagController_UpdateTag_Patch
|
||||
private static void Postfix(Car car, TagCallout tagCallout)
|
||||
{
|
||||
TagController tagController = UnityEngine.Object.FindObjectOfType<TagController>();
|
||||
TweaksAndThings tweaksAndThings = SingletonPluginBase<TweaksAndThings>.Shared;
|
||||
TweaksAndThingsPlugin tweaksAndThings = SingletonPluginBase<TweaksAndThingsPlugin>.Shared;
|
||||
|
||||
if (!tweaksAndThings.IsEnabled || !tweaksAndThings.settings.HandBrakeAndAirTagModifiers)
|
||||
{
|
||||
|
||||
@@ -15,7 +15,7 @@ using RMROC451.TweaksAndThings.Commands;
|
||||
|
||||
namespace RMROC451.TweaksAndThings;
|
||||
|
||||
public class TweaksAndThings : SingletonPluginBase<TweaksAndThings>, IUpdateHandler, IModTabHandler
|
||||
public class TweaksAndThingsPlugin : SingletonPluginBase<TweaksAndThingsPlugin>, IUpdateHandler, IModTabHandler
|
||||
{
|
||||
private HttpClient client;
|
||||
internal HttpClient Client
|
||||
@@ -29,16 +29,16 @@ public class TweaksAndThings : SingletonPluginBase<TweaksAndThings>, IUpdateHand
|
||||
}
|
||||
}
|
||||
internal Settings? settings { get; private set; } = null;
|
||||
readonly ILogger logger = Log.ForContext<TweaksAndThings>();
|
||||
readonly ILogger logger = Log.ForContext<TweaksAndThingsPlugin>();
|
||||
IModdingContext moddingContext { get; set; }
|
||||
IModDefinition modDefinition { get; set; }
|
||||
|
||||
static TweaksAndThings()
|
||||
static TweaksAndThingsPlugin()
|
||||
{
|
||||
Log.Information("Hello! Static Constructor was called!");
|
||||
}
|
||||
|
||||
public TweaksAndThings(IModdingContext moddingContext, IModDefinition self)
|
||||
public TweaksAndThingsPlugin(IModdingContext moddingContext, IModDefinition self)
|
||||
{
|
||||
this.modDefinition = self;
|
||||
|
||||
Reference in New Issue
Block a user