public TiledMapTilesetAnimatedTile(int localTileIdentifier, TiledMapTilesetTileAnimationFrame[] frames, string type = null, TiledMapObject[] objects = null)
            : base(localTileIdentifier, type, objects)
        {
            if (frames.Length == 0)
            {
                throw new InvalidOperationException("There must be at least one tileset animation frame");
            }

            AnimationFrames       = new ReadOnlyCollection <TiledMapTilesetTileAnimationFrame>(frames);
            CurrentAnimationFrame = AnimationFrames[0];
        }
        public void Update(GameTime gameTime)
        {
            _timer += gameTime.ElapsedGameTime;

            if (_timer <= CurrentAnimationFrame.Duration)
            {
                return;
            }

            _timer               -= CurrentAnimationFrame.Duration;
            _frameIndex           = (_frameIndex + 1) % AnimationFrames.Count;
            CurrentAnimationFrame = AnimationFrames[_frameIndex];
        }
        private static TiledMapTilesetTileAnimationFrame[] ReadTiledMapTilesetAnimationFrames(ContentReader reader, TiledMapTileset tileset, int animationFramesCount)
        {
            var animationFrames = new TiledMapTilesetTileAnimationFrame[animationFramesCount];

            for (var i = 0; i < animationFramesCount; i++)
            {
                var localTileIdentifierForFrame = reader.ReadInt32();
                var frameDurationInMilliseconds = reader.ReadInt32();
                var tileSetTileFrame            = new TiledMapTilesetTileAnimationFrame(tileset, localTileIdentifierForFrame, frameDurationInMilliseconds);
                animationFrames[i] = tileSetTileFrame;
            }

            return(animationFrames);
        }
Exemplo n.º 4
0
        internal TiledMapTilesetAnimatedTile(TiledMapTileset tileset, ContentReader input, int localTileIdentifier, int animationFramesCount)
            : base(localTileIdentifier, input)
        {
            AnimationFrames = new ReadOnlyCollection <TiledMapTilesetTileAnimationFrame>(_animationFrames);
            _timer          = TimeSpan.Zero;

            for (var i = 0; i < animationFramesCount; i++)
            {
                var localTileIdentifierForFrame = input.ReadInt32();
                var frameDurationInMilliseconds = input.ReadInt32();
                var tileSetTileFrame            = new TiledMapTilesetTileAnimationFrame(tileset, localTileIdentifierForFrame, frameDurationInMilliseconds);
                _animationFrames.Add(tileSetTileFrame);
                CurrentAnimationFrame = AnimationFrames[0];
            }
        }