Initial import of IC.Rebuild

This commit is contained in:
2026-10-13 22:55:05 +08:00
commit 16d61f7a5e
87 changed files with 17054 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
namespace ICRebuild.Core;
public readonly struct ActionRangeCheckScope : IDisposable
{
[ThreadStatic] private static bool active;
private readonly bool previous;
private ActionRangeCheckScope(bool allowed) { previous=active; active=allowed; }
public static ActionRangeCheckScope Enter(bool allowed) => new(allowed);
public static bool Active => active;
public void Dispose() => active=previous;
}
public static class TargetRadiusPolicy
{
// One target radius is used consistently by native drawing, attack checks and gap-closer placement.
// Never add the bonus to the player's own radius (which would double the landing displacement).
public static float Adjust(GameFrame frame,nint actor,uint entityId,float original,float extra) =>
frame.Ready && actor!=0 && actor!=frame.LocalAddress && actor==frame.TargetAddress && entityId==frame.TargetEntityId && float.IsFinite(original) && original>=0
? original+Policies.FiniteClamp(extra,0,5) : original;
}
public sealed record TargetRadiusObservation(uint EntityId,float Original,float Effective);
public readonly struct NativeTargetRingScope : IDisposable
{
[ThreadStatic] private static bool active;
private readonly bool previous;
private NativeTargetRingScope(bool allowed) { previous=active; active=allowed; }
public static NativeTargetRingScope Enter(bool allowed) => new(allowed);
public static bool Active => active;
public void Dispose() => active=previous;
}