public CharacterMovement AddMovement(CharacterMovement characterMovement, Movement movement = null)
        {
            MovableCharacter defaultCharacter = this.Repository.CharacterByName[HeroVirtualTabletop.AnimatedAbility.DefaultAbilities.CHARACTERNAME] as MovableCharacter;

            if (movement == null)
            {
                movement = GetNewMovement();
            }
            CharacterMovement charMovement = new CharacterMovementImpl(movement);


            if (this != defaultCharacter || (this == defaultCharacter && characterMovement.Movement != null))
            {
                defaultCharacter.Movements.InsertAction(charMovement);

                if (this == defaultCharacter)
                {
                    characterMovement = charMovement;
                }
                else
                {
                    characterMovement.Movement = movement;
                }
            }
            else
            {
                characterMovement.Movement = movement;
            }

            return(characterMovement);
        }
        public override CharacterAction Clone()
        {
            var clonedCharacterMovemnt = new CharacterMovementImpl();

            clonedCharacterMovemnt.Name             = this.Name;
            clonedCharacterMovemnt.Movement         = this.Movement?.Clone();
            clonedCharacterMovemnt.Speed            = this.Speed;
            clonedCharacterMovemnt.KeyboardShortcut = this.KeyboardShortcut;

            return(clonedCharacterMovemnt);
        }
        public CharacterMovement AddMovement(Movement movement = null)
        {
            MovableCharacter defaultCharacter = this.Repository.CharacterByName[HeroVirtualTabletop.AnimatedAbility.DefaultAbilities.CHARACTERNAME] as MovableCharacter;

            if (movement == null)
            {
                movement = GetNewMovement();
            }
            CharacterMovement characterMovement = new CharacterMovementImpl(movement);

            defaultCharacter.Movements.InsertAction(characterMovement);
            this.Movements.InsertAction(characterMovement);

            return(characterMovement);
        }
        public void AddDefaultMovements()
        {
            MovableCharacter defaultCharacter = HeroVirtualTabletop.AnimatedAbility.DefaultAbilities.DefaultCharacter as MovableCharacter;

            if (defaultCharacter != null && this != defaultCharacter && defaultCharacter.Movements != null && defaultCharacter.Movements.Count() > 0)
            {
                foreach (CharacterMovement cm in defaultCharacter.Movements)
                {
                    if (defaultMovementNames.Contains(cm.Name) && !this.Movements.Any(m => m.Name == cm.Name))
                    {
                        CharacterMovement cmDefault = new CharacterMovementImpl(cm.Movement);
                        cmDefault.Name  = cm.Name;
                        cmDefault.Owner = this;
                        cmDefault.Speed = cm.Speed;
                        this.Movements.InsertAction(cmDefault);
                    }
                    if (this.Movements.Any(m => m.Name == cm.Name && m.ActivationKey == Key.None))
                    {
                        CharacterMovement characterMovement = this.Movements.First(m => m.Name == cm.Name);
                        switch (characterMovement.Name)
                        {
                        case "Walk":
                            characterMovement.ActivationKey = Key.K;
                            break;

                        case "Run":
                            characterMovement.ActivationKey = Key.U;
                            break;

                        case "Swim":
                            characterMovement.ActivationKey = Key.S;
                            break;

                        case "Fly":
                            characterMovement.ActivationKey = Key.F;
                            break;

                        case "Jump":
                            characterMovement.ActivationKey = Key.J;
                            break;

                        case "Steam Jump Jetpack":
                            characterMovement.ActivationKey = Key.P;
                            break;

                        case "Beast":
                            characterMovement.ActivationKey = Key.B;
                            break;

                        case "Ninja Jump":
                            characterMovement.ActivationKey = Key.M;
                            break;

                        case "Ice Slide":
                            characterMovement.ActivationKey = Key.I;
                            break;
                        }
                    }
                }
            }
        }