Example #1
0
 public Task HandleMessageAsync(IrcPrivMessage message, CancellationToken cancellationToken)
 {
     return(Triggers.Any(trigger =>
                         message.Text.StartsWith(Configuration.TriggerPrefix + trigger, StringComparison.InvariantCultureIgnoreCase) && AccessAllowed(message.IdentityUser))
         ? HandleMessageAsyncInternal(message, cancellationToken)
         : Task.CompletedTask);
 }
Example #2
0
        private bool Matches(object state, List <Node> matches, Dictionary <Node, bool> matched)
        {
            if (!matched.TryGetValue(this, out var found))
            {
                found = false;
                foreach (var child in _specializations)
                {
                    if (child.Matches(state, matches, matched))
                    {
                        found = true;
                    }
                }

                // No child matched so we might
                if (!found)
                {
                    var(value, error) = Expression.TryEvaluate(state);
                    if (error == null && value is bool match && match && Triggers.Any())
                    {
                        matches.Add(this);
                        found = true;
                    }
                }

                matched.Add(this, found);
            }

            return(found);
        }
Example #3
0
 protected virtual void OnPropertyChanged(object sender, PropertyChangedEventArgs e)
 {
     if (e.PropertyName == StatePropertyName && State != PreviousState && Triggers?.Any() == true)
     {
         this.Publish(new WidgetStateChanged(this, PreviousState, State));
     }
 }
Example #4
0
        public PresetTrigger AddTrigger()
        {
            if (!Triggers.Any())
            {
                Triggers.Add(new PresetTrigger());
            }

            return(Triggers.First());
        }
Example #5
0
        public void AddTrigger(Trigger trigger)
        {
            if (Triggers.Any(t => t.GetType() == trigger.GetType()))
            {
                return;
            }

            Triggers.Add(trigger);
        }
Example #6
0
        public LevelObject(LevelObjectPrefab prefab, Vector3 position, float scale, float rotation = 0.0f)
        {
            ActivePrefab = Prefab = prefab;
            Position     = position;
            Scale        = scale;
            Rotation     = rotation;

            spriteIndex = ActivePrefab.Sprites.Any() ? Rand.Int(ActivePrefab.Sprites.Count, Rand.RandSync.Server) : -1;

            if (Sprite != null && prefab.SpriteSpecificPhysicsBodyElements.ContainsKey(Sprite))
            {
                PhysicsBody = new PhysicsBody(prefab.SpriteSpecificPhysicsBodyElements[Sprite], ConvertUnits.ToSimUnits(new Vector2(position.X, position.Y)), Scale);
            }
            else if (prefab.PhysicsBodyElement != null)
            {
                PhysicsBody = new PhysicsBody(prefab.PhysicsBodyElement, ConvertUnits.ToSimUnits(new Vector2(position.X, position.Y)), Scale);
            }

            if (PhysicsBody != null)
            {
                PhysicsBody.SetTransformIgnoreContacts(PhysicsBody.SimPosition, -Rotation);
                PhysicsBody.BodyType            = BodyType.Static;
                PhysicsBody.CollisionCategories = Physics.CollisionLevel;
                PhysicsBody.CollidesWith        = Physics.CollisionWall | Physics.CollisionCharacter;
            }

            foreach (XElement triggerElement in prefab.LevelTriggerElements)
            {
                Triggers ??= new List <LevelTrigger>();
                Vector2 triggerPosition = triggerElement.GetAttributeVector2("position", Vector2.Zero) * scale;

                if (rotation != 0.0f)
                {
                    var ca = (float)Math.Cos(rotation);
                    var sa = (float)Math.Sin(rotation);

                    triggerPosition = new Vector2(
                        ca * triggerPosition.X + sa * triggerPosition.Y,
                        -sa * triggerPosition.X + ca * triggerPosition.Y);
                }

                var newTrigger         = new LevelTrigger(triggerElement, new Vector2(position.X, position.Y) + triggerPosition, -rotation, scale, prefab.Name);
                int parentTriggerIndex = prefab.LevelTriggerElements.IndexOf(triggerElement.Parent);
                if (parentTriggerIndex > -1)
                {
                    newTrigger.ParentTrigger = Triggers[parentTriggerIndex];
                }
                Triggers.Add(newTrigger);
            }

            NeedsUpdate = NeedsNetworkSyncing || (Triggers != null && Triggers.Any()) || Prefab.PhysicsBodyTriggerIndex > -1;

            InitProjSpecific();
        }
Example #7
0
        public override List <string> GetDisplayValues(Config config = null)
        {
            var values = new List <string>();

            values.Add(name);

            var deviceString = "Global";

            if (!string.IsNullOrEmpty(DeviceMacAddress))
            {
                if (LgDevices != null)
                {
                    var device = LgDevices.FirstOrDefault(d => !string.IsNullOrEmpty(d.MacAddress) && d.MacAddress.Equals(DeviceMacAddress));
                    if (device != null)
                    {
                        deviceString = device.Name;
                    }
                    else
                    {
                        deviceString = "Unknown: device not found";
                    }
                }
                else
                {
                    deviceString = DeviceMacAddress;
                }
            }
            values.Add(deviceString);

            var app = appId;

            if (LgApps != null)
            {
                var item = LgApps.FirstOrDefault(x => x.appId.Equals(appId));
                if (item != null)
                {
                    app = item.title + " (" + appId + ")";
                }
            }
            values.Add(app);
            values.Add(GetStepsDisplay());
            values.Add(shortcut);

            if (Triggers.Any())
            {
                values.Add(Triggers.First().ToString());
            }

            return(values);
        }
        /// <summary>
        /// Evaluates all state change triggers.
        /// </summary>
        private void EvalTriggers()
        {
            if (!Triggers.Any())
            {
                return;
            }

            TState newState = DefaultState;

            ApplyCondition(VisualStateTriggerTypes.Focused, ref newState);
            ApplyCondition(VisualStateTriggerTypes.Hot, ref newState);
            ApplyCondition(VisualStateTriggerTypes.Pushed, ref newState);

            State = newState;
        }
Example #9
0
        private void WriteTriggers(CustomFileWriter writer)
        {
            if (!Triggers?.Any() ?? true)
            {
                return;
            }

            using (writer.WriteBlock("triggers"))
            {
                foreach (var trigger in Triggers)
                {
                    trigger.Write(writer);
                }
            }
        }
        public override void Write(CustomFileWriter writer)
        {
            using (writer.WriteBlock($"job({Name.DoubleQuote()})"))
            {
                if (VolumeSize != null)
                {
                    writer.WriteLine($"volumeSize = {VolumeSize}");
                    writer.WriteLine();
                }

                using (writer.WriteBlock("git"))
                {
                    writer.WriteLine("depth = UNLIMITED_DEPTH");

                    if (RefSpec != null)
                    {
                        using (writer.WriteBlock("refSpec"))
                        {
                            RefSpec.ForEach(x => writer.WriteLine($"+{x.DoubleQuote()}"));
                        }
                    }
                }

                writer.WriteLine();
                Container.Write(writer);

                if (Triggers.Any())
                {
                    writer.WriteLine();
                    using (writer.WriteBlock("startOn"))
                    {
                        Triggers.ForEach(x => x.Write(writer));
                    }
                }

                if (TimeoutInMinutes != null)
                {
                    writer.WriteLine();
                    using (writer.WriteBlock("failOn"))
                    {
                        writer.WriteLine($"timeOut {{ timeOutInMinutes = {TimeoutInMinutes} }}");
                    }
                }
            }
        }
Example #11
0
        public List <Tuple <Trigger, List <DtmfToneEnd> > > DidTriggerProcess(List <DtmfToneEnd> tones)
        {
            List <Tuple <Trigger, List <DtmfToneEnd> > > triggers = new List <Tuple <Trigger, List <DtmfToneEnd> > >();

            if (tones != null && tones.Any())
            {
                if (Triggers != null && Triggers.Any())
                {
                    foreach (var trigger in Triggers)
                    {
                        List <DtmfToneEnd> matchedTones = trigger.GetMatchingTones(tones);
                        if (matchedTones != null && matchedTones.Any())
                        {
                            triggers.Add(new Tuple <Trigger, List <DtmfToneEnd> >(trigger, matchedTones));
                        }
                    }
                }
            }

            return(triggers);
        }
Example #12
0
        public void UpdateTrigger(PresetTriggerType triggerType, PresetConditionType conditions, string includedProcesses, string excludedProcesses)
        {
            if (!Triggers.Any())
            {
                Triggers.Add(new PresetTrigger());
            }

            var trigger = Triggers.First();

            trigger.Trigger    = triggerType;
            trigger.Conditions = conditions;

            if (trigger.IncludedProcesses == null)
            {
                trigger.IncludedProcesses = new List <string>();
            }
            if (trigger.ExcludedProcesses == null)
            {
                trigger.ExcludedProcesses = new List <string>();
            }
            Utils.ParseWords(trigger.IncludedProcesses, includedProcesses);
            Utils.ParseWords(trigger.ExcludedProcesses, excludedProcesses);
        }
Example #13
0
 private bool DetectSingleSchema()
 {
     if (Tables.Any(o => o.Schema != DefaultSchema))
     {
         return(false);
     }
     if (Views.Any(o => o.Schema != DefaultSchema))
     {
         return(false);
     }
     if (StoredProcedures.Any(o => o.Schema != DefaultSchema))
     {
         return(false);
     }
     if (Functions.Any(o => o.Schema != DefaultSchema))
     {
         return(false);
     }
     if (Triggers.Any(o => o.Schema != DefaultSchema))
     {
         return(false);
     }
     return(true);
 }
Example #14
0
        partial void InitProjSpecific()
        {
            Sprite?.EnsureLazyLoaded();
            Prefab.DeformableSprite?.EnsureLazyLoaded();

            CurrentSwingAmount      = Prefab.SwingAmountRad;
            CurrentScaleOscillation = Prefab.ScaleOscillation;

            SwingTimer          = Rand.Range(0.0f, MathHelper.TwoPi);
            ScaleOscillateTimer = Rand.Range(0.0f, MathHelper.TwoPi);

            if (Prefab.ParticleEmitterPrefabs != null)
            {
                ParticleEmitters        = new ParticleEmitter[Prefab.ParticleEmitterPrefabs.Count];
                ParticleEmitterTriggers = new LevelTrigger[Prefab.ParticleEmitterPrefabs.Count];
                for (int i = 0; i < Prefab.ParticleEmitterPrefabs.Count; i++)
                {
                    ParticleEmitters[i]        = new ParticleEmitter(Prefab.ParticleEmitterPrefabs[i]);
                    ParticleEmitterTriggers[i] = Prefab.ParticleEmitterTriggerIndex[i] > -1 ?
                                                 Triggers[Prefab.ParticleEmitterTriggerIndex[i]] : null;
                }
            }

            if (Prefab.LightSourceParams != null && Prefab.LightSourceParams.Count > 0)
            {
                LightSources        = new LightSource[Prefab.LightSourceParams.Count];
                LightSourceTriggers = new LevelTrigger[Prefab.LightSourceParams.Count];
                for (int i = 0; i < Prefab.LightSourceParams.Count; i++)
                {
                    LightSources[i] = new LightSource(Prefab.LightSourceParams[i])
                    {
                        Position     = new Vector2(Position.X, Position.Y),
                        IsBackground = true
                    };
                    LightSourceTriggers[i] = Prefab.LightSourceTriggerIndex[i] > -1 ?
                                             Triggers[Prefab.LightSourceTriggerIndex[i]] : null;
                }
            }

            Sounds        = new RoundSound[Prefab.Sounds.Count];
            SoundChannels = new SoundChannel[Prefab.Sounds.Count];
            SoundTriggers = new LevelTrigger[Prefab.Sounds.Count];
            for (int i = 0; i < Prefab.Sounds.Count; i++)
            {
                Sounds[i]        = Submarine.LoadRoundSound(Prefab.Sounds[i].SoundElement, false);
                SoundTriggers[i] = Prefab.Sounds[i].TriggerIndex > -1 ? Triggers[Prefab.Sounds[i].TriggerIndex] : null;
            }

            int j = 0;

            foreach (XElement subElement in Prefab.Config.Elements())
            {
                if (!subElement.Name.ToString().Equals("deformablesprite", StringComparison.OrdinalIgnoreCase))
                {
                    continue;
                }
                foreach (XElement animationElement in subElement.Elements())
                {
                    var newDeformation = SpriteDeformation.Load(animationElement, Prefab.Name);
                    if (newDeformation != null)
                    {
                        newDeformation.Params = Prefab.SpriteDeformations[j].Params;
                        spriteDeformations.Add(newDeformation);
                        j++;
                    }
                }
            }

            VisibleOnSonar = Prefab.SonarDisruption > 0.0f || Prefab.OverrideProperties.Any(p => p != null && p.SonarDisruption > 0.0f) ||
                             (Triggers != null && Triggers.Any(t => !MathUtils.NearlyEqual(t.Force, Vector2.Zero) && t.ForceMode != LevelTrigger.TriggerForceMode.LimitVelocity || !string.IsNullOrWhiteSpace(t.InfectIdentifier)));
            if (VisibleOnSonar && Triggers.Any())
            {
                SonarRadius = Triggers.Select(t => t.ColliderRadius * 1.5f).Max();
            }
        }