コード例 #1
0
        new public void Update(DwarfTime gameTime, ChunkManager chunks, Camera camera)
        {
            CalculateCurrentOrientation(camera);

            //foreach (string orient in OrientationStrings)
            //{
            //    string animationName = currentMode + orient;

            //    if (!Animations.ContainsKey(animationName)) continue;

            //    Animation animation = Animations[animationName];
            //    animation.Update(gameTime);
            //}

            string s = currentMode + OrientationStrings[(int)CurrentOrientation];

            if (Animations.ContainsKey(s))
            {
                var previousAnimation = CurrentAnimation;
                CurrentAnimation = Animations[s];
                if (previousAnimation != null && previousAnimation.Name.StartsWith(currentMode))
                {
                    CurrentAnimation.Sychronize(previousAnimation);
                }
                SpriteSheet = CurrentAnimation.SpriteSheet;
            }

            base.Update(gameTime, chunks, camera);

            //if (CurrentAnimation != null && CurrentAnimation.LastFrame != CurrentAnimation.CurrentFrame)
            //{
            //    InvokeOnFrame(CurrentAnimation, CurrentOrientation, CurrentAnimation.CurrentFrame);
            //}
        }
コード例 #2
0
        new public void Update(DwarfTime gameTime, ChunkManager chunks, Camera camera)
        {
            CalculateCurrentOrientation(camera);

            foreach (string orient in OrientationStrings)
            {
                string animationName = currentMode + orient;

                if (!Animations.ContainsKey(animationName))
                {
                    continue;
                }

                Animation animation = Animations[animationName];

                // Update all the animations! Why? Because we trigger things based on the FORWARD animation frame,
                // not based on whatever is current.
                if (animation != CurrentAnimation)
                {
                    animation.Update(gameTime);
                }
            }

            string s = currentMode + OrientationStrings[(int)CurrentOrientation];

            if (Animations.ContainsKey(s))
            {
                var previousAnimation = CurrentAnimation;
                CurrentAnimation = Animations[s];
                if (previousAnimation != null && previousAnimation.Name.StartsWith(currentMode))
                {
                    CurrentAnimation.Sychronize(previousAnimation);
                }
                SpriteSheet = CurrentAnimation.SpriteSheet;
            }

            base.Update(gameTime, chunks, camera);
        }