Exemplo n.º 1
0
        static void AddWeaponShortcutsFor(Character player, CarriedWeapon carriedWeapon)
        {
            List <PlayerActionShortcut> lastShortcuts = null;

            List <ItemEffect> weaponEffects = AllWeaponEffects.GetAll(carriedWeapon.Weapon.Name).OrderBy(x => x.index).ToList();;

            if (weaponEffects.Count == 0)
            {
                lastShortcuts = PlayerActionShortcut.FromWeapon(carriedWeapon, null, player);
            }
            else
            {
                for (int i = 0; i < weaponEffects.Count; i++)
                {
                    ItemEffect itemEffect = weaponEffects[i];
                    if (i == 0)
                    {
                        lastShortcuts = PlayerActionShortcut.FromWeapon(carriedWeapon, itemEffect, player);
                    }
                    else
                    {
                        foreach (PlayerActionShortcut playerActionShortcut in lastShortcuts)
                        {
                            playerActionShortcut.Windups.Add(WindupDto.FromItemEffect(itemEffect, PlayerActionShortcut.WeaponWindupPrefix + playerActionShortcut.Name));
                        }
                    }
                }
            }

            if (lastShortcuts != null)
            {
                AllShortcuts.AddRange(lastShortcuts);
            }
        }
Exemplo n.º 2
0
        public WindupDto Clone()
        {
            WindupDto result = new WindupDto();

            result.AutoRotation      = this.AutoRotation;
            result.Opacity           = this.Opacity;
            result.Brightness        = this.Brightness;
            result.DegreesOffset     = this.DegreesOffset;
            result.Effect            = this.Effect;
            result.FadeIn            = this.FadeIn;
            result.FadeOut           = this.FadeOut;
            result.FlipHorizontal    = this.FlipHorizontal;
            result.FlipVertical      = this.FlipVertical;
            result.PlayToEndOnExpire = this.PlayToEndOnExpire;
            result.Force             = this.Force;
            result.ForceAmount       = this.ForceAmount;
            result.Hue                 = this.Hue;
            result.HueStr              = this.HueStr;
            result.Lifespan            = this.Lifespan;
            result.Name                = this.Name;
            result.Offset              = this.Offset;
            result.Rotation            = this.Rotation;
            result.Saturation          = this.Saturation;
            result.Scale               = this.Scale;
            result.StartSound          = this.StartSound;
            result.EndSound            = this.EndSound;
            result.Description         = this.Description;
            result.Velocity            = this.Velocity;
            result.EffectAvailableWhen = this.EffectAvailableWhen;
            result.PrepareForSerialization();
            return(result);
        }
Exemplo n.º 3
0
        static void AddSpellShortcutsFor(Character player, KnownSpell knownSpell)
        {
            List <PlayerActionShortcut> lastShortcuts = null;
            List <ItemEffect>           spellEffects  = AllSpellEffects.GetAll(knownSpell.SpellName).OrderBy(x => x.index).ToList();

            if (spellEffects.Count == 0)
            {
                lastShortcuts = PlayerActionShortcut.FromItemSpellEffect(knownSpell.SpellName, null, player);
            }
            else
            {
                for (int i = 0; i < spellEffects.Count; i++)
                {
                    ItemEffect itemEffect = spellEffects[i];
                    if (i == 0)
                    {
                        lastShortcuts = PlayerActionShortcut.FromItemSpellEffect(knownSpell.SpellName, itemEffect, player);
                    }
                    else
                    {
                        foreach (PlayerActionShortcut playerActionShortcut in lastShortcuts)
                        {
                            playerActionShortcut.Windups.Add(WindupDto.FromItemEffect(itemEffect, playerActionShortcut.Name));
                        }
                    }
                }
            }
            if (lastShortcuts != null)
            {
                AllShortcuts.AddRange(lastShortcuts);
            }
        }
Exemplo n.º 4
0
 static void AddItemEffect(List <PlayerActionShortcut> shortcuts, ItemEffect itemEffect)
 {
     foreach (PlayerActionShortcut playerActionShortcut in shortcuts)
     {
         playerActionShortcut.Windups.Add(WindupDto.FromItemEffect(itemEffect, playerActionShortcut.Name));
     }
 }
Exemplo n.º 5
0
        public void SetHueFromStr(WindupDto item, Character player, string hueStr)
        {
            if (item.Effect.EndsWith(".Magic") && player.OverrideWeaponMagicHue != int.MinValue)
            {
                item.Hue = player.OverrideWeaponMagicHue;
                return;
            }
            if (hueStr == null)
            {
                hueStr = item.HueStr;
            }
            if (hueStr == null)
            {
                return;
            }
            string hueTrim = hueStr.Trim();

            if (hueTrim.ToLower() == "player")
            {
                item.Hue = player.hueShift;
            }

            if (int.TryParse(hueTrim, out int result))
            {
                item.Hue = result;
            }
        }
Exemplo n.º 6
0
        void SetHueFromStr(WindupDto item, Character player, string hueStr)
        {
            if (hueStr == null)
            {
                return;
            }
            string hueTrim = hueStr.Trim();

            if (hueTrim.ToLower() == "player")
            {
                item.Hue = player.hueShift;
            }

            if (int.TryParse(hueTrim, out int result))
            {
                item.Hue = result;
            }
        }
Exemplo n.º 7
0
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature player, Target target = null, CastedSpell spell = null, RollResults dice = null)
        {
            ExpectingArguments(args, 1, 18);
            if (player != null)
            {
                GetWindupParameters(args, player, target, spell, out string effectName, out int hue, out int saturation, out int brightness, out double scale,
                                    out double rotation, out double autoRotation, out double degreesOffset, out bool flipHorizontal, out int xOffset, out int yOffset,
                                    out double velocityX, out double velocityY, out double forceX, out double forceY, out int fadeIn, out int lifespan, out int fadeOut);

                WindupDto windupDto = new WindupDto(effectName, hue, saturation, brightness,
                                                    scale, rotation, autoRotation, degreesOffset, flipHorizontal,
                                                    xOffset, yOffset, velocityX, velocityY, forceX, forceY, fadeIn, lifespan, fadeOut);

                windupDto.Name = GetWindupName(player, spell);

                OnSendWindup(player, new WindupEventArgs(windupDto));
            }

            return(null);
        }
Exemplo n.º 8
0
        public List <WindupDto> GetAvailableWindups(Character player)
        {
            List <WindupDto> result = new List <WindupDto>();
            int index = 0;

            foreach (WindupDto windup in Windups)
            {
                if (windup != null)
                {
                    if (string.IsNullOrWhiteSpace(windup.EffectAvailableWhen) || Expressions.GetBool(windup.EffectAvailableWhen, player))
                    {
                        WindupDto item = windup.Clone();
                        if (CarriedWeapon != null)
                        {
                            switch (index)
                            {
                            case 0:
                                SetHueFromStr(item, player, CarriedWeapon.WeaponHue);
                                break;

                            case 1:
                                SetHueFromStr(item, player, CarriedWeapon.Hue1);
                                break;

                            case 2:
                                SetHueFromStr(item, player, CarriedWeapon.Hue2);
                                break;

                            case 3:
                                SetHueFromStr(item, player, CarriedWeapon.Hue3);
                                break;
                            }
                        }
                        result.Add(item);
                    }
                }
                index++;
            }
            return(result);
        }
Exemplo n.º 9
0
        //public static WindupDto From(PlayerActionShortcutDto shortcutDto, Character player)
        //{
        //	if (string.IsNullOrEmpty(shortcutDto.effect))
        //		return null;
        //	if (shortcutDto.effect.StartsWith("//"))
        //		return null;
        //	WindupDto windupDto = new WindupDto();
        //	windupDto.Effect = shortcutDto.effect;
        //	if (!string.IsNullOrEmpty(shortcutDto.hue))
        //		if (shortcutDto.hue == "player")
        //			windupDto.Hue = player.hueShift;
        //		else if (int.TryParse(shortcutDto.hue, out int hue))
        //			windupDto.Hue = hue;
        //	windupDto.Brightness = MathUtils.GetInt(shortcutDto.brightness, 100);
        //	windupDto.Saturation = MathUtils.GetInt(shortcutDto.saturation, 100);
        //	windupDto.Scale = MathUtils.GetDouble(shortcutDto.scale, 1);
        //	windupDto.Opacity = MathUtils.GetDouble(shortcutDto.opacity, 1);
        //	windupDto.Rotation = MathUtils.GetInt(shortcutDto.rotation);
        //	windupDto.DegreesOffset = MathUtils.GetInt(shortcutDto.degreesOffset);
        //	windupDto.FlipHorizontal = MathUtils.IsChecked(shortcutDto.flipHorizontal);
        //	if (MathUtils.IsChecked(shortcutDto.fade))
        //		windupDto.Fade();
        //	if (MathUtils.IsChecked(shortcutDto.playToEndOnExpire))
        //		windupDto.PlayToEndOnExpire = true;

        //	int deltaX = MathUtils.GetInt(shortcutDto.moveLeftRight);
        //	int deltaY = MathUtils.GetInt(shortcutDto.moveUpDown);
        //	windupDto.Offset = new Vector(deltaX, deltaY);

        //	windupDto.StartSound = shortcutDto.startSound;
        //	windupDto.EndSound = shortcutDto.endSound;
        //	windupDto.Description = shortcutDto.description;
        //	return windupDto;
        //}

        public static WindupDto FromItemEffect(ItemEffect itemEffect, string effectName)
        {
            if (itemEffect == null)
            {
                return(null);
            }

            WindupDto result = new WindupDto();

            result.Effect = itemEffect.effect;

            result.Scale   = itemEffect.scale;
            result.Opacity = itemEffect.opacity;
            if (itemEffect.fade)
            {
                result.FadeIn  = 500;
                result.FadeOut = 900;
            }
            else
            {
                result.FadeIn  = itemEffect.FadeIn;
                result.FadeOut = itemEffect.FadeOut;
            }

            switch (itemEffect.kind)
            {
            case ItemEffectKind.None:
                result.Name = effectName;
                break;

            case ItemEffectKind.Windup:
                result.Name = "Windup." + effectName;
                break;

            case ItemEffectKind.Spell:
                result.Name = PlayerActionShortcut.SpellWindupPrefix + effectName;
                break;

            case ItemEffectKind.Strike:
                result.Name = "Strike." + effectName;
                break;

            case ItemEffectKind.Target:
                result.Name = "Target." + effectName;
                break;
            }
            result.Lifespan = itemEffect.Lifespan;

            result.HueStr              = itemEffect.hue;
            result.Hue                 = MathUtils.GetInt(itemEffect.hue);
            result.Saturation          = itemEffect.saturation;
            result.Brightness          = itemEffect.brightness;
            result.StartSound          = itemEffect.startSound;
            result.EndSound            = itemEffect.endSound;
            result.Rotation            = itemEffect.rotation;
            result.DegreesOffset       = (int)Math.Round(itemEffect.degreesOffset);
            result.Offset              = new Vector(itemEffect.moveLeftRight, itemEffect.moveUpDown);
            result.PlayToEndOnExpire   = itemEffect.playToEndOnExpire;
            result.FlipHorizontal      = itemEffect.flipHorizontal;
            result.EffectAvailableWhen = itemEffect.effectAvailableWhen;
            return(result);
        }
Exemplo n.º 10
0
 public WindupEventArgs(WindupDto windupDto)
 {
     WindupDto = windupDto;
 }