From aba93237a060680232f4364adad4fe58923cc052 Mon Sep 17 00:00:00 2001 From: Luan Nico Date: Mon, 14 Sep 2020 21:51:06 -0400 Subject: [PATCH] layers --- doc/examples/isometric/lib/main.dart | 24 +++++++++++++++---- .../isometric_tile_map_component.dart | 5 +++- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/doc/examples/isometric/lib/main.dart b/doc/examples/isometric/lib/main.dart index 961bafd89..5a54f770e 100644 --- a/doc/examples/isometric/lib/main.dart +++ b/doc/examples/isometric/lib/main.dart @@ -16,7 +16,7 @@ class MyGame extends BaseGame { } void init() async { final tileset = await IsometricTileset.load('tiles.png', 32); - final matrix = [ + final layer0 = [ [-1, 1, 1, 1, 0, 0], [-1, 1, 2, 1, 0, 0], [-1, 0, 1, 1, 0, 0], @@ -24,10 +24,26 @@ class MyGame extends BaseGame { [1, 1, 1, 1, 0, 2], [1, 3, 3, 3, 0, 2], ]; + final layer1 = [ + [-1, 0, 0, 1, -1, -1], + [-1, 0, -1, 1, -1, -1], + [-1, -1, 0, 1, -1, -1], + [-1, 0, 0, 1, -1, -1], + [0, 0, 0, 1, -1, -1], + [0, -1, -1, -1, -1, -1], + ]; + const x = 500.0; + const y = 500.0; + const s = 64; add( - IsometricTileMapComponent(tileset, matrix) - ..x = 100 - ..y = 100, + IsometricTileMapComponent(tileset, layer0, destTileSize: s) + ..x = x + ..y = y, + ); + add( + IsometricTileMapComponent(tileset, layer1, destTileSize: s) + ..x = x + ..y = y - s / 2, ); } } diff --git a/lib/components/isometric_tile_map_component.dart b/lib/components/isometric_tile_map_component.dart index 08f0d6888..7886f2cb0 100644 --- a/lib/components/isometric_tile_map_component.dart +++ b/lib/components/isometric_tile_map_component.dart @@ -1,3 +1,4 @@ +import 'dart:convert'; import 'dart:ui'; import 'package:flame/components/component.dart'; @@ -47,6 +48,7 @@ class IsometricTileMapComponent extends PositionComponent { prepareCanvas(c); final s = effectiveTileSize.toDouble() / 2; + final size = Position.fromInts(effectiveTileSize, effectiveTileSize); matrix.asMap().forEach((i, line) { line.asMap().forEach((j, element) { if (element == -1) { @@ -54,7 +56,8 @@ class IsometricTileMapComponent extends PositionComponent { } final sprite = tileset.getTile(element); - sprite.renderPosition(c, cartToIso(Position(j * s, i * s))); + final p = cartToIso(Position(j * s, i * s)); + sprite.renderRect(c, Position.rectFrom(p, size)); }); }); }