Remove .Owner from melee weapons (#14600)

This commit is contained in:
metalgearsloth
2023-03-12 15:56:05 +11:00
committed by GitHub
parent 5541edbadc
commit e93d5113ad
8 changed files with 96 additions and 89 deletions

View File

@@ -44,9 +44,7 @@ public sealed class MeleeWindupOverlay : Overlay
return;
}
var comp = _melee.GetWeapon(owner.Value);
if (comp == null)
if (!_melee.TryGetWeapon(owner.Value, out var meleeUid, out var comp))
return;
var handle = args.WorldHandle;
@@ -67,7 +65,7 @@ public sealed class MeleeWindupOverlay : Overlay
return;
}
if (!xformQuery.TryGetComponent(comp.Owner, out var xform) ||
if (!xformQuery.TryGetComponent(meleeUid, out var xform) ||
xform.MapID != args.MapId)
{
return;
@@ -84,7 +82,7 @@ public sealed class MeleeWindupOverlay : Overlay
// Use the sprite itself if we know its bounds. This means short or tall sprites don't get overlapped
// by the bar.
float yOffset;
if (spriteQuery.TryGetComponent(comp.Owner, out var sprite))
if (spriteQuery.TryGetComponent(meleeUid, out var sprite))
{
yOffset = -sprite.Bounds.Height / 2f - 0.05f;
}
@@ -106,11 +104,11 @@ public sealed class MeleeWindupOverlay : Overlay
const float endX = 22f;
// Area marking where to release
var ReleaseWidth = 2f * SharedMeleeWeaponSystem.GracePeriod / (float) comp.WindupTime.TotalSeconds * EyeManager.PixelsPerMeter;
var releaseMiddle = (endX - startX) / 2f + startX;
var releaseWidth = 2f * SharedMeleeWeaponSystem.GracePeriod / (float) comp.WindupTime.TotalSeconds * EyeManager.PixelsPerMeter;
const float releaseMiddle = (endX - startX) / 2f + startX;
var releaseBox = new Box2(new Vector2(releaseMiddle - ReleaseWidth / 2f, 3f) / EyeManager.PixelsPerMeter,
new Vector2(releaseMiddle + ReleaseWidth / 2f, 4f) / EyeManager.PixelsPerMeter);
var releaseBox = new Box2(new Vector2(releaseMiddle - releaseWidth / 2f, 3f) / EyeManager.PixelsPerMeter,
new Vector2(releaseMiddle + releaseWidth / 2f, 4f) / EyeManager.PixelsPerMeter);
releaseBox = releaseBox.Translated(position);
handle.DrawRect(releaseBox, Color.LimeGreen);
@@ -131,11 +129,11 @@ public sealed class MeleeWindupOverlay : Overlay
var xPos = (endX - startX) * fraction + startX;
// In pixels
const float Width = 2f;
const float width = 2f;
// If we hit the end we won't draw half the box so we need to subtract the end pos from it
var endPos = xPos + Width / 2f;
var endPos = xPos + width / 2f;
var box = new Box2(new Vector2(Math.Max(startX, endPos - Width), 3f) / EyeManager.PixelsPerMeter,
var box = new Box2(new Vector2(Math.Max(startX, endPos - width), 3f) / EyeManager.PixelsPerMeter,
new Vector2(Math.Min(endX, endPos), 4f) / EyeManager.PixelsPerMeter);
box = box.Translated(position);