Ejemplo n.º 1
0
        private void RunKeyframe(ScreenLayerKeyframe keyframe)
        {
            if (keyframe.Move != null)
            {
                var currentX = this._info.Tiles.BaseX + _locationOffsetX;
                var currentY = this._info.Tiles.BaseY + _locationOffsetY;

                _stopX      = keyframe.Move.X;
                _stopY      = keyframe.Move.Y;
                _stopFrame  = _updateFrame + keyframe.Move.Duration;
                _moveSpeedX = (_stopX - currentX) / keyframe.Move.Duration;
                _moveSpeedY = (_stopY - currentY) / keyframe.Move.Duration;
            }

            if (keyframe.Reset && _updateFrame > 0)
            {
                _updateFrame = 0;

                foreach (var resetframe in _info.Keyframes)
                {
                    if (resetframe.Frame == 0)
                    {
                        RunKeyframe(resetframe);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private void SaveKeyframe(ScreenLayerKeyframe frame, XmlTextWriter writer)
        {
            writer.WriteStartElement("Keyframe");

            writer.WriteAttributeString("frame", frame.Frame.ToString());

            if (frame.Move != null)
            {
                writer.WriteStartElement("Move");
                writer.WriteAttributeString("x", frame.Move.X.ToString());
                writer.WriteAttributeString("y", frame.Move.Y.ToString());
                writer.WriteAttributeString("duration", frame.Move.Duration.ToString());
                writer.WriteEndElement();
            }

            if (frame.Reset)
            {
                writer.WriteElementString("Reset", "");
            }

            writer.WriteEndElement();
        }
Ejemplo n.º 3
0
        private static ScreenLayerKeyframe LoadScreenLayerKeyFrame(XElement node)
        {
            var frameNumber = node.GetAttribute <int>("frame");

            var keyframe = new ScreenLayerKeyframe();

            keyframe.Frame = frameNumber;

            var moveNode = node.Element("Move");

            if (moveNode != null)
            {
                var moveInfo = new ScreenLayerMoveCommand();
                moveInfo.X        = moveNode.GetAttribute <int>("x");
                moveInfo.Y        = moveNode.GetAttribute <int>("y");
                moveInfo.Duration = moveNode.GetAttribute <int>("duration");

                keyframe.Move = moveInfo;
            }

            keyframe.Reset = node.Elements("Reset").Any();

            return(keyframe);
        }