Пример #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);
            }
        }
Пример #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);
        }
Пример #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);
            }
        }
Пример #4
0
 static void AddItemEffect(List <PlayerActionShortcut> shortcuts, ItemEffect itemEffect)
 {
     foreach (PlayerActionShortcut playerActionShortcut in shortcuts)
     {
         playerActionShortcut.Windups.Add(WindupDto.FromItemEffect(itemEffect, playerActionShortcut.Name));
     }
 }
Пример #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;
            }
        }
Пример #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;
            }
        }
Пример #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);
        }
Пример #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);
        }
Пример #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);
        }
Пример #10
0
 public WindupEventArgs(WindupDto windupDto)
 {
     WindupDto = windupDto;
 }