drawBlockAndAlphaLayer method
绘制碰撞层和遮挡层
Implementation
void drawBlockAndAlphaLayer(Canvas canvas) {
if (blockLayer != null && this.cameraPosition != null) {
/// 可视区域
DFCircle visibleShape = DFCircle(this.cameraPosition!, 300);
/// print("visibleRect:" + visibleRect.toString());
int columnCount = tileMap!.width!;
double tileWidth = tileMap!.tileWidth!.toDouble() * this.scale;
double tileHeight = tileMap!.tileHeight!.toDouble() * this.scale;
for (int i = 0; i < blockLayer!.data!.length; i++) {
if (blockLayer!.data![i] != 0) {
var paint = new Paint()..color = Color(0x60f05b72);
int row = _getY(i, columnCount).toInt();
int column = _getX(i, columnCount).toInt();
DFRect tileRect = DFRect(column * tileWidth, row * tileHeight, tileWidth, tileHeight);
if (visibleShape.overlaps(tileRect)) {
/// 在可视区域的瓦片设置为显示
canvas.drawRect(tileRect.toRect(), paint);
}
} else if (alphaLayer!.data![i] != 0) {
var paint = new Paint()..color = Color(0x60426ab3);
int row = _getY(i, columnCount).toInt();
int column = _getX(i, columnCount).toInt();
DFRect tileRect = DFRect(column * tileWidth, row * tileHeight, tileWidth, tileHeight);
if (visibleShape.overlaps(tileRect)) {
/// 在可视区域的瓦片设置为显示
canvas.drawRect(tileRect.toRect(), paint);
}
}
}
}
}