Ejemplo n.º 1
0
        private void DrawAnimationGroup(Context contextParent, Sequence.AnimationGroup animationGroup)
        {
            var index   = animationGroup.AnimationIndex;
            var count   = animationGroup.Count;
            var context = contextParent.Clone();

            //if (animationGroup.Tick1 == 0)
            //    context.CurrentFrameIndex = 0;
            //else if (animationGroup.Tick2 == 0)
            //    context.CurrentFrameIndex = Math.Min(context.CurrentFrameIndex, animationGroup.Tick1);
            //else
            //    context.CurrentFrameIndex = (context.CurrentFrameIndex < animationGroup.Tick1) ? context.CurrentFrameIndex :
            //        (animationGroup.Tick1 + ((context.CurrentFrameIndex - animationGroup.Tick1) % (animationGroup.Tick2 - animationGroup.Tick1)));

            if (animationGroup.Tick2 != 0)
            {
                context.FrameIndex = (context.FrameIndex < animationGroup.Tick1) ? context.FrameIndex :
                                     (animationGroup.Tick1 + ((context.FrameIndex - animationGroup.Tick1) % (animationGroup.Tick2 - animationGroup.Tick1)));
            }

            for (var i = 0; i < count; i++)
            {
                DrawAnimation(context, sequence.Animations[index + i]);
            }
        }
Ejemplo n.º 2
0
        private bool DrawAnimationGroup(Context contextParent, Sequence.AnimationGroup animationGroup)
        {
            var context = contextParent.Clone();

            context.FrameIndex = GetActualFrame(animationGroup, context.FrameIndex);

            for (int i = 0; i < animationGroup.Animations.Count; i++)
            {
                DrawAnimation(context, animationGroup.Animations[i], i);
            }

            return(animationGroup.DoNotLoop == 0 ||
                   context.FrameIndex < animationGroup.Animations.Max(x => x.FrameEnd));
        }
Ejemplo n.º 3
0
        public int GetActualFrame(Sequence.AnimationGroup animationGroup, int frameIndex)
        {
            if (animationGroup.DoNotLoop != 0)
            {
                return(frameIndex);
            }

            var frameEnd = animationGroup.LoopEnd;

            if (frameEnd == 0 && animationGroup.Animations.Count > 0)
            {
                frameEnd = animationGroup.Animations.Max(x => x.FrameEnd);
            }

            return(Loop(animationGroup.LoopStart, frameEnd, frameIndex));
        }
Ejemplo n.º 4
0
        public int GetActualFrame(Sequence.AnimationGroup animationGroup, int frameIndex)
        {
            CurrentChildContext.TextPositionX = animationGroup.TextPositionX;
            CurrentChildContext.TextPositionY = animationGroup.TextPositionY;
            CurrentChildContext.TextScale     = animationGroup.TextScale;
            CurrentChildContext.UiSize        = animationGroup.LightPositionX;
            CurrentChildContext.UiPadding     = animationGroup.UiPadding;

            if (animationGroup.DoNotLoop != 0)
            {
                return(frameIndex);
            }

            var frameEnd = animationGroup.LoopEnd;

            if (frameEnd == 0 && animationGroup.Animations.Count > 0)
            {
                frameEnd = animationGroup.Animations.Max(x => x.FrameEnd);
            }

            return(Loop(animationGroup.LoopStart, frameEnd, frameIndex));
        }
Ejemplo n.º 5
0
 private static Sequence MockSequence(Sequence.AnimationGroup animationGroup) => new Sequence
 {
     AnimationGroups = new List <Sequence.AnimationGroup>()
     {
         animationGroup,
     },
     SpriteGroups = new List <List <Sequence.SpritePart> >()
     {
         new List <Sequence.SpritePart>()
         {
             new Sequence.SpritePart
             {
                 Left   = 0,
                 Top    = 0,
                 Right  = 512,
                 Bottom = 512,
             }
         }
     },
     Sprites = new List <Sequence.Sprite>()
     {
         new Sequence.Sprite
         {
             Left         = 0,
             Top          = 0,
             Right        = 512,
             Bottom       = 512,
             UTranslation = 0,
             VTranslation = 0,
             ColorLeft    = 0x80808080,
             ColorTop     = 0x80808080,
             ColorRight   = 0x80808080,
             ColorBottom  = 0x80808080,
         }
     }
 };
Ejemplo n.º 6
0
 public AnimationGroupEntryModel(int index, Sequence.AnimationGroup animationGroup)
 {
     Index          = index;
     AnimationGroup = animationGroup;
 }
Ejemplo n.º 7
0
 public static int GetFrameLength(this Sequence.AnimationGroup animGroup) =>
 animGroup.Animations.Aggregate(0, (length, anim) => Math.Max(length, anim.FrameEnd));
Ejemplo n.º 8
0
 public static Rectangle GetVisibilityRectangleFromAnimationGroup(
     this Sequence sequence, Sequence.AnimationGroup animGroup) =>
 animGroup.Animations.Aggregate(new Rectangle(), (rect, x) => rect.Union(sequence.GetVisibilityRectangleFromAnimation(x)));