Exemplo n.º 1
0
        public int Activate(Vector2Int player, Vector2Int target)
        {
            int maxLoopAmount;

            if (EffectValue == null)
            {
                maxLoopAmount = StaticValue;
            }
            else
            {
                maxLoopAmount = EffectValue.Activate(player, target);
            }

            if (MaxLoopCount > -1)
            {
                maxLoopAmount = Math.Min(MaxLoopCount, maxLoopAmount); // This acts as a ceiling.
            }
            int sum = 0;

            for (int i = 0; i < maxLoopAmount; i++)
            {
                sum += LoopedEffect.Activate(player, target);
            }
            return(sum);
        }
Exemplo n.º 2
0
 public SetEffect(WorldEntity Entity, EffectValue GState)
     : base(0x49)
 {
     SetCapacity(5);
     writer.Write(Entity.WorldId);
     writer.Write((byte)GState);
 }
Exemplo n.º 3
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (ItemType != 0)
            {
                hash ^= ItemType.GetHashCode();
            }
            if (ReourceId != 0)
            {
                hash ^= ReourceId.GetHashCode();
            }
            if (Reource != 0)
            {
                hash ^= Reource.GetHashCode();
            }
            if (EffectValue != 0)
            {
                hash ^= EffectValue.GetHashCode();
            }
            if (appearInfo_ != null)
            {
                hash ^= AppearInfo.GetHashCode();
            }
            if (Speed != 0)
            {
                hash ^= Speed.GetHashCode();
            }
            return(hash);
        }
Exemplo n.º 4
0
 private static async Task PlayEffect(EffectValue effect, string[] images)
 {
     if (effect == null || images.Length == 0)
     {
         return;
     }
     if (effect.Effect is StaticGraphicEffect)
     {
         string[] targets;
         if (_backgroundEffects.ContainsKey(effect))
         {
             targets = _backgroundEffects[effect];
             _backgroundEffects[effect] = targets.Concat(images).ToArray();
         }
         else
         {
             targets = images.ToArray();
             _backgroundEffects.Add(effect, targets);
         }
     }
     await MessageService.ProcessAsync(Message <ImageMessageIntegration.PlayEffectContent> .Create(ImageMessageIntegration.Mask,
                                                                                                   ImageMessageIntegration.PlayEffect, new ImageMessageIntegration.PlayEffectContent {
         Effect = effect.Effect,
         Names  = images
     }));
 }
Exemplo n.º 5
0
 public SetEffect(WorldEntity Entity, EffectValue GState)
     : base(0x49)
 {
     SetCapacity(5);
     writer.Write(Entity.WorldId);
     writer.Write((byte)GState);
 }
Exemplo n.º 6
0
        public async Task <SerializableValue> Execute(PluginExecuteContext context)
        {
            EffectValue effect = null;
            var         images = new List <string>();

            foreach (var(key, value) in context.Parameters)
            {
                switch (key)
                {
                case EffectValue effectValue:
                    effect = effectValue;
                    break;

                case IStringConverter stringConverter:
                    var target = stringConverter.ConvertToString(context.Language);
                    if (value != null && !(value is NullValue))
                    {
                        switch (target)
                        {
                        case "Image":
                            var name = StringValue.TryParse(value);
                            if (!images.Contains(name))
                            {
                                images.Add(name);
                            }
                            break;

                        case "Effect":
                            if (value is EffectValue effectValue)
                            {
                                effect = effectValue;
                            }
                            else
                            {
                                throw new ArgumentException($"Unable to set effect: {value} is not EffectValue", nameof(value));
                            }
                            break;
                        }
                    }
                    else
                    {
                        if (!images.Contains(target))
                        {
                            images.Add(target);
                        }
                    }
                    break;
                }
            }
            if (context.CommandName == "PlayEffect")
            {
                await PlayEffect(effect, images.ToArray());
            }
            else
            {
                await StopEffect(images.ToArray());
            }
            return(new NullValue());
        }
Exemplo n.º 7
0
        private (ImageBindMode Mode, int Layer, EffectValue Effect, ImageDisplayInformation[] Images) AnalyseParameters(PluginExecuteContext context)
        {
            EffectValue    effect           = null;
            var            bind             = ImageBindMode.None;
            int?           layer            = null;
            var            images           = new List <ImageDisplayInformation>();
            ImageValue     currentImage     = null;
            string         currentName      = null;
            TransformValue currentTransform = null;

            foreach (var(key, value) in context.Parameters)
            {
                switch (key)
                {
                case EffectValue effectValue:
                    effect = effectValue;
                    break;

                case ImageValue imageValue:
                    if (currentImage != null)
                    {
                        AddImage(ref currentImage, ref currentName, ref currentTransform, images, context);
                    }
                    currentImage     = imageValue;
                    currentTransform = new TransformValue();
                    break;

                case IStringConverter stringConverter:
                    var name = stringConverter.ConvertToString(context.Language);
                    switch (name)
                    {
                    case "Layer":
                        layer = IntegerValue.TryParse(value);
                        break;

                    case "Name":
                        currentName = StringValue.TryParse(value);
                        break;

                    case "Effect":
                        effect = value is EffectValue effectValue ? effectValue : throw new ArgumentException($"Unable to create show command: effect {value} is not EffectValue");
                        break;

                    case "Transform":
                        currentTransform = (TransformValue)currentTransform.AddWith(value);
                        break;

                    case "Bind":
                        if (value is NullValue)
                        {
                            bind = ImageBindMode.Canvas;
                        }
                        else
                        {
                            switch (StringValue.TryParse(value))
                            {
                            case "Canvas":
                            case "Maximal":
                            case "Max":
                                bind = ImageBindMode.Canvas;
                                break;

                            case "Minimal":
                            case "Min":
                                bind = ImageBindMode.Minimal;
                                break;
                            }
                        }
                        break;

                    case "DefaultTransform":
                        _defaultTransform = value is TransformValue transformValue ? transformValue : throw new ArgumentException($"Unable to set show command default transform: target {value} is not TransformValue");
                        break;

                    case "DefaultLayer":
                        _defaultLayer = IntegerValue.TryParse(value);
                        break;

                    default:
                        TransformPlugin.AnalyzePropertyTo(name, value, currentTransform, context.Language);
                        break;
                    }
                    break;
                }
            }
            if (currentImage != null)
            {
                AddImage(ref currentImage, ref currentName, ref currentTransform, images, context);
            }
            layer = layer ?? _defaultLayer;
            var list = images.ToArray();

            for (var i = -1; ++i < list.Length;)
            {
                list[i].layer  = layer.Value;
                list[i].status = ImageStatus.PrepareToShow;
            }
            return(bind, layer.Value, effect, list);
        }