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); }
public SetEffect(WorldEntity Entity, EffectValue GState) : base(0x49) { SetCapacity(5); writer.Write(Entity.WorldId); writer.Write((byte)GState); }
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); }
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 })); }
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()); }
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); }