Update
This commit is contained in:
102
Components/MyHudTimeTracker.cs
Normal file
102
Components/MyHudTimeTracker.cs
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
using EmptyKeys.UserInterface.Generated.StoreBlockView_Bindings;
|
||||||
|
using HarmonyLib;
|
||||||
|
using Sandbox.Game.Entities;
|
||||||
|
using Sandbox.Game.Entities.Cube;
|
||||||
|
using Sandbox.Game.GUI.HudViewers;
|
||||||
|
using Sandbox.Game.World;
|
||||||
|
using SeamlessClient.Utilities;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using VRageMath;
|
||||||
|
|
||||||
|
namespace SeamlessClient.Components
|
||||||
|
{
|
||||||
|
public class MyHudTimeTracker : ComponentBase
|
||||||
|
{
|
||||||
|
|
||||||
|
public override void Patch(Harmony patcher)
|
||||||
|
{
|
||||||
|
var AppendDistance = PatchUtils.GetMethod(typeof(MyHudMarkerRender), "AppendDistance");
|
||||||
|
|
||||||
|
patcher.Patch(AppendDistance, postfix: new HarmonyMethod(Get(typeof(MyHudTimeTracker), nameof(ApplyTimeToTarget))));
|
||||||
|
base.Patch(patcher);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ApplyTimeToTarget(MyHudMarkerRender __instance, StringBuilder stringBuilder, double distance)
|
||||||
|
{
|
||||||
|
if (distance < 500 || MySession.Static.LocalHumanPlayer == null || MySession.Static.LocalHumanPlayer.Character == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
|
Vector3 velocity = new Vector3(0, 0, 0);
|
||||||
|
if (MySession.Static.LocalHumanPlayer.Character.Parent is MyCockpit cockpit)
|
||||||
|
{
|
||||||
|
velocity = cockpit.CubeGrid.LinearVelocity;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
velocity = MySession.Static.LocalHumanPlayer.Character.Physics.LinearVelocity;
|
||||||
|
}
|
||||||
|
|
||||||
|
double v0 = velocity.Length();
|
||||||
|
if (v0 <= 2)
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
|
double t = Math.Round(CalculateTimeToTarget(v0, distance), 0);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if(t <= 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
stringBuilder.AppendLine($" [T-{FormatDuration(t)}]");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static string FormatDuration(double durationInSeconds)
|
||||||
|
{
|
||||||
|
if (durationInSeconds < 60)
|
||||||
|
{
|
||||||
|
return $"{durationInSeconds}s";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
double minutes = Math.Round(durationInSeconds / 60, 0);
|
||||||
|
double seconds = Math.Round(durationInSeconds % 60, 1);
|
||||||
|
|
||||||
|
if (seconds > 0)
|
||||||
|
{
|
||||||
|
return $"{minutes}m {seconds}s";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return $"{minutes}m";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static double CalculateTimeToTarget(double velocity, double distance)
|
||||||
|
{
|
||||||
|
// Check for zero velocity to avoid division by zero
|
||||||
|
if (Math.Abs(velocity) < double.Epsilon)
|
||||||
|
{
|
||||||
|
throw new ArgumentException("Velocity must be non-zero.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return distance / velocity;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@@ -33,5 +33,5 @@ using System.Runtime.InteropServices;
|
|||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
|
||||||
[assembly: AssemblyVersion("2.0.0.0")] //Set these both to the same
|
[assembly: AssemblyVersion("2.0.0.1")] //Set these both to the same
|
||||||
[assembly: AssemblyFileVersion("2.0.0.0")]
|
[assembly: AssemblyFileVersion("2.0.0.1")]
|
||||||
|
@@ -97,6 +97,7 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Components\EntityPerformanceImprovements.cs" />
|
<Compile Include="Components\EntityPerformanceImprovements.cs" />
|
||||||
<Compile Include="Components\LoadingScreenComponent.cs" />
|
<Compile Include="Components\LoadingScreenComponent.cs" />
|
||||||
|
<Compile Include="Components\MyHudTimeTracker.cs" />
|
||||||
<Compile Include="Messages\OnlinePlayerData.cs" />
|
<Compile Include="Messages\OnlinePlayerData.cs" />
|
||||||
<Compile Include="Utilities\UtilExtensions.cs" />
|
<Compile Include="Utilities\UtilExtensions.cs" />
|
||||||
<Compile Include="Utilities\PatchUtils.cs" />
|
<Compile Include="Utilities\PatchUtils.cs" />
|
||||||
|
Reference in New Issue
Block a user