Esempio n. 1
0
            public bool set(string key, Type filter, AVal aval, MouseState.Flags ifType = MouseState.Flags.LMR)
            {
                if (!args[idx].Eq(key))
                {
                    return(false);
                }
                LSender.Send(this, $"Found '{key}' key in {idx} position.", Message.Level.Debug);

                MouseState.Flags type;
                if (ifType != MouseState.Flags.None)
                {
                    type = MouseState.Extract(args[++idx]);
                    LSender.Send(this, $"type = {type} by {idx}", Message.Level.Debug);
                }
                else
                {
                    type = MouseState.Flags.None;
                }

                string val;

                if (aval != null)
                {
                    val = args[++idx];
                    LSender.Send(this, $"value = {val} by {idx}", Message.Level.Debug);
                }
                else
                {
                    val = null;
                }

                Guid g = filter.GUID;

                if (Filters[g] == null)
                {
                    LSender.Send(this, $"Filter '{g}' is not registered.", Message.Level.Debug);
                    return(true);
                }
                Filters[g].Activated = true;

                aval?.Invoke(Filters[g], val);

                if (ifType == MouseState.Flags.None)
                {
                    return(true);
                }

                if ((ifType & type) == 0)
                {
                    throw new ArgumentException($"Incorrect Flags {type} -> {ifType}");
                }

                Filters[g].Handler = type;
                return(true);
            }