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); }
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]; } }