32 lines
1.1 KiB
C#
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);
|
|
}
|
|
}
|
|
|