This commit is contained in:
Luan Nico
2020-09-14 21:51:06 -04:00
parent fd9d69e7d5
commit aba93237a0
2 changed files with 24 additions and 5 deletions

View File

@ -16,7 +16,7 @@ class MyGame extends BaseGame {
} }
void init() async { void init() async {
final tileset = await IsometricTileset.load('tiles.png', 32); final tileset = await IsometricTileset.load('tiles.png', 32);
final matrix = [ final layer0 = [
[-1, 1, 1, 1, 0, 0], [-1, 1, 1, 1, 0, 0],
[-1, 1, 2, 1, 0, 0], [-1, 1, 2, 1, 0, 0],
[-1, 0, 1, 1, 0, 0], [-1, 0, 1, 1, 0, 0],
@ -24,10 +24,26 @@ class MyGame extends BaseGame {
[1, 1, 1, 1, 0, 2], [1, 1, 1, 1, 0, 2],
[1, 3, 3, 3, 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( add(
IsometricTileMapComponent(tileset, matrix) IsometricTileMapComponent(tileset, layer0, destTileSize: s)
..x = 100 ..x = x
..y = 100, ..y = y,
);
add(
IsometricTileMapComponent(tileset, layer1, destTileSize: s)
..x = x
..y = y - s / 2,
); );
} }
} }

View File

@ -1,3 +1,4 @@
import 'dart:convert';
import 'dart:ui'; import 'dart:ui';
import 'package:flame/components/component.dart'; import 'package:flame/components/component.dart';
@ -47,6 +48,7 @@ class IsometricTileMapComponent extends PositionComponent {
prepareCanvas(c); prepareCanvas(c);
final s = effectiveTileSize.toDouble() / 2; final s = effectiveTileSize.toDouble() / 2;
final size = Position.fromInts(effectiveTileSize, effectiveTileSize);
matrix.asMap().forEach((i, line) { matrix.asMap().forEach((i, line) {
line.asMap().forEach((j, element) { line.asMap().forEach((j, element) {
if (element == -1) { if (element == -1) {
@ -54,7 +56,8 @@ class IsometricTileMapComponent extends PositionComponent {
} }
final sprite = tileset.getTile(element); 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));
}); });
}); });
} }