Files
0A-KFCommonUtilityLib/Scripts/MinEventActions/MinEventActionRemoteHoldingBase.cs
2025-06-04 16:13:32 +09:30

32 lines
1.1 KiB
C#

//workaround for inventory sync
//full toolbelt data is sent when holding item value changed or whatever, after a certain delay
//causing remote players to update current holding item constantly
//thus we need to handle some holding event for remote players on local player side
using System.Xml.Linq;
public class MinEventActionRemoteHoldingBase : MinEventActionBase
{
protected bool isRemoteHolding = false;
protected bool localOnly = true;
public override bool ParseXmlAttribute(XAttribute _attribute)
{
if (base.ParseXmlAttribute(_attribute))
return true;
if (_attribute.Name == "local_only")
{
localOnly = bool.Parse(_attribute.Value);
return true;
}
return false;
}
public override bool CanExecute(MinEventTypes _eventType, MinEventParams _params)
{
isRemoteHolding = (_eventType == MinEventTypes.onSelfEquipStart && _params.Self.isEntityRemote);
return (!localOnly || !_params.Self.isEntityRemote) && (!_params.Self.isEntityRemote || isRemoteHolding) && base.CanExecute(_eventType, _params);
}
}