using System.Xml.Linq;

public class MinEventActionSetStringOnWeaponLabel : MinEventActionRemoteHoldingBase
{
    private int slot = 0;
    private string text;
    private bool isCvar = false;
    private bool isMetadata = false;

    public override bool ParseXmlAttribute(XAttribute _attribute)
    {
        bool flag = base.ParseXmlAttribute(_attribute);
        if (!flag)
        {
            flag = true;
            string name = _attribute.Name.LocalName;
            switch (name)
            {
                case "slot":
                    slot = int.Parse(_attribute.Value);
                    break;
                case "text":
                    text = _attribute.Value;
                    break;
                case "cvar":
                    text = _attribute.Value;
                    isCvar = true;
                    isMetadata = false;
                    break;
                case "metadata":
                    text = _attribute.Value;
                    isMetadata = true;
                    isCvar = false;
                    break;
                default:
                    flag = false;
                    break;
            }
        }

        return flag;
    }

    public override bool CanExecute(MinEventTypes _eventType, MinEventParams _params)
    {
        if (isMetadata && (_params.ItemValue == null || !_params.ItemValue.HasMetadata(text)))
            return false;
        return base.CanExecute(_eventType, _params);
    }

    public override void Execute(MinEventParams _params)
    {
        if (isRemoteHolding || localOnly)
            NetPackageSyncWeaponLabelText.SetWeaponLabelText(_params.Self, slot, isCvar ? _params.Self.GetCVar(text).ToString() : (isMetadata ? _params.ItemValue.GetMetadata(text).ToString() : text));
        else if (!_params.Self.isEntityRemote)
            NetPackageSyncWeaponLabelText.NetSyncSetWeaponLabelText(_params.Self, slot, isCvar ? _params.Self.GetCVar(text).ToString() : (isMetadata ? _params.ItemValue.GetMetadata(text).ToString() : text));
    }
}

