Skip to content

Commit

Permalink
feat: Add TiledObjectHealpers extension on TiledObject (#3032)
Browse files Browse the repository at this point in the history
This PR adds an extension on `TiledObject` to allow getting the object's
`position` and `size` as `Vector2` objects.

---------

Co-authored-by: Lukas Klingsbo <me@lukas.fyi>
  • Loading branch information
ufrshubham and spydon committed Feb 11, 2024
1 parent d78f7f8 commit 78380b9
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 0 deletions.
1 change: 1 addition & 0 deletions packages/flame_tiled/lib/flame_tiled.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ library flame_tiled;

export 'package:tiled/tiled.dart';

export 'src/extensions.dart';
export 'src/flame_tsx_provider.dart';
export 'src/renderable_tile_map.dart';
export 'src/simple_flips.dart';
Expand Down
12 changes: 12 additions & 0 deletions packages/flame_tiled/lib/src/extensions.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import 'package:flame/components.dart';
import 'package:flame_tiled/flame_tiled.dart';

/// This extension adds some helpers for [TiledObject] that make it easier to
/// use it with Flame.
extension TiledObjectHelpers on TiledObject {
/// Returns the position of this tiled object as a Vector2.
Vector2 get position => Vector2(x, y);

/// Returns the size of this tiled object as a Vector2.
Vector2 get size => Vector2(width, height);
}
32 changes: 32 additions & 0 deletions packages/flame_tiled/test/extensions_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import 'package:flame_tiled/flame_tiled.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
group('TiledObjectHelpers', () {
test('position returns correct values', () {
final tiledObject = TiledObject(id: 0);

expect(tiledObject.position.x, 0);
expect(tiledObject.position.y, 0);

tiledObject.x = 26;
tiledObject.y = 83;

expect(tiledObject.position.x, 26);
expect(tiledObject.position.y, 83);
});

test('size returns correct values', () {
final tiledObject = TiledObject(id: 0);

expect(tiledObject.size.x, 0);
expect(tiledObject.size.y, 0);

tiledObject.width = 59;
tiledObject.height = 42;

expect(tiledObject.size.x, 59);
expect(tiledObject.size.y, 42);
});
});
}

0 comments on commit 78380b9

Please sign in to comment.