Climbing changes (#2236)
Climbing now can't be done if you're already climbing. Rest of the changes are just formatting. I also removed the buckle messages as they were being duplicated for click-drag. Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
This commit is contained in:
@@ -191,8 +191,6 @@ namespace Content.Server.GameObjects.Components.Buckle
|
|||||||
|
|
||||||
if (!Owner.InRangeUnobstructed(strap, _range, predicate: Ignored, popup: true))
|
if (!Owner.InRangeUnobstructed(strap, _range, predicate: Ignored, popup: true))
|
||||||
{
|
{
|
||||||
strap.Owner.PopupMessage(user, Loc.GetString("You can't reach there!"));
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -203,8 +201,6 @@ namespace Content.Server.GameObjects.Components.Buckle
|
|||||||
if (!ContainerHelpers.TryGetContainer(strap.Owner, out var strapContainer) ||
|
if (!ContainerHelpers.TryGetContainer(strap.Owner, out var strapContainer) ||
|
||||||
ownerContainer != strapContainer)
|
ownerContainer != strapContainer)
|
||||||
{
|
{
|
||||||
strap.Owner.PopupMessage(user, Loc.GetString("You can't reach there!"));
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -210,6 +210,9 @@ namespace Content.Server.GameObjects.Components.Movement
|
|||||||
|
|
||||||
private async void TryClimb(IEntity user)
|
private async void TryClimb(IEntity user)
|
||||||
{
|
{
|
||||||
|
if (!user.TryGetComponent(out ClimbingComponent climbingComponent) || climbingComponent.IsClimbing)
|
||||||
|
return;
|
||||||
|
|
||||||
var doAfterEventArgs = new DoAfterEventArgs(user, _climbDelay, default, Owner)
|
var doAfterEventArgs = new DoAfterEventArgs(user, _climbDelay, default, Owner)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
BreakOnTargetMove = true,
|
||||||
|
|||||||
@@ -14,15 +14,15 @@ namespace Content.Server.GameObjects.Components.Movement
|
|||||||
|
|
||||||
public override bool IsClimbing
|
public override bool IsClimbing
|
||||||
{
|
{
|
||||||
get
|
get => _isClimbing;
|
||||||
{
|
|
||||||
return _isClimbing;
|
|
||||||
}
|
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (!value && Body != null)
|
if (_isClimbing == value)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!value)
|
||||||
{
|
{
|
||||||
Body.TryRemoveController<ClimbController>();
|
Body?.TryRemoveController<ClimbController>();
|
||||||
}
|
}
|
||||||
|
|
||||||
_isClimbing = value;
|
_isClimbing = value;
|
||||||
@@ -35,37 +35,33 @@ namespace Content.Server.GameObjects.Components.Movement
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public void TryMoveTo(Vector2 from, Vector2 to)
|
public void TryMoveTo(Vector2 from, Vector2 to)
|
||||||
{
|
{
|
||||||
if (Body != null)
|
if (Body == null)
|
||||||
{
|
return;
|
||||||
_climbController = Body.EnsureController<ClimbController>();
|
|
||||||
_climbController.TryMoveTo(from, to);
|
_climbController = Body.EnsureController<ClimbController>();
|
||||||
}
|
_climbController.TryMoveTo(from, to);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Update(float frameTime)
|
public void Update()
|
||||||
{
|
{
|
||||||
if (Body != null && IsClimbing)
|
if (!IsClimbing || Body == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (_climbController != null && (_climbController.IsBlocked || !_climbController.IsActive))
|
||||||
{
|
{
|
||||||
if (_climbController != null && (_climbController.IsBlocked || !_climbController.IsActive))
|
if (Body.TryRemoveController<ClimbController>())
|
||||||
{
|
{
|
||||||
if (Body.TryRemoveController<ClimbController>())
|
_climbController = null;
|
||||||
{
|
|
||||||
_climbController = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsClimbing)
|
|
||||||
{
|
|
||||||
Body.WakeBody();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!IsOnClimbableThisFrame && IsClimbing && _climbController == null)
|
|
||||||
{
|
|
||||||
IsClimbing = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
IsOnClimbableThisFrame = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (IsClimbing)
|
||||||
|
Body.WakeBody();
|
||||||
|
|
||||||
|
if (!IsOnClimbableThisFrame && IsClimbing && _climbController == null)
|
||||||
|
IsClimbing = false;
|
||||||
|
|
||||||
|
IsOnClimbableThisFrame = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override ComponentState GetComponentState()
|
public override ComponentState GetComponentState()
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ namespace Content.Server.GameObjects.EntitySystems
|
|||||||
{
|
{
|
||||||
foreach (var comp in ComponentManager.EntityQuery<ClimbingComponent>())
|
foreach (var comp in ComponentManager.EntityQuery<ClimbingComponent>())
|
||||||
{
|
{
|
||||||
comp.Update(frameTime);
|
comp.Update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user