Files
LuaCsForBarotraumaEP/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Ladder.cs
2026-04-30 21:59:54 +08:00

39 lines
1.2 KiB
C#

using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Xml.Linq;
namespace Barotrauma.Items.Components
{
partial class Ladder : ItemComponent
{
private static readonly ConcurrentDictionary<Ladder, byte> _ladderDict = new ConcurrentDictionary<Ladder, byte>();
public static IEnumerable<Ladder> List => _ladderDict.Keys;
public Ladder(Item item, ContentXElement element)
: base(item, element)
{
InitProjSpecific(element);
_ladderDict.TryAdd(this, 0);
}
partial void InitProjSpecific(ContentXElement element);
public override bool Select(Character character)
{
if (character == null || character.LockHands || character.Removed ) { return false; }
if (!character.CanClimb) { return false; }
character.AnimController.StartClimbing();
return true;
}
protected override void RemoveComponentSpecific()
{
base.RemoveComponentSpecific();
RemoveProjSpecific();
_ladderDict.TryRemove(this, out _);
}
partial void RemoveProjSpecific();
}
}