drawBlockAndAlphaLayer method

void drawBlockAndAlphaLayer(
  1. Canvas canvas
)

绘制碰撞层和遮挡层

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