RafaelBarbosatec / bonfire

(RPG maker) Create RPG-style or similar games more simply with Flame.
https://bonfire-engine.github.io
MIT License
1.22k stars 188 forks source link

[Bug]: Crash when initializing a layer with the `type=above` in WorldMap::onLoad. #532

Closed rosf73 closed 3 months ago

rosf73 commented 3 months ago

What happened?

Unable to read tileSize during initialization for layers with type set to 'above'.

screen shot

\

  void _confMap(Vector2 sizeScreen, {bool calculateSize = false}) {
    lastSizeScreen = sizeScreen;
    if (calculateSize) {
      lastCameraWindow = Vector2.zero();
      lastMinorZoom = gameRef.camera.zoom;
      _calculatePositionAndSize();
      // print layer count
      debugPrint("layer count = ${layersComponent.length}");

      int i = 1;
      for (var layer in layersComponent) {
        //  print tileSize
        debugPrint("layer ${i++} ${layer.name} = ${layer.tileSize}");

        layer.initLayer(size, sizeScreen);
      }
    }
    if (sizeToUpdate == 0) {
      sizeToUpdate = (tileSize * 4).ceilToDouble();
    }
    gameRef.camera.updateSpacingVisibleMap(sizeToUpdate * 1.5);
  }
layer count = 4
layer 1 town_map = 32.0
layer 2 decorations = 32.0
layer 3 decorations_top = 0.0 // <-- error here

I really appreciate all you do.

Steps to reproduce?

When creating a layer with the type=above and running, an error occurs and the map does not display.

What did you expect to happen?

Maps with layers of type=above should also be rendered.

Bonfire version

Release 3.9.5

Relevant log output

[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Unsupported operation: Infinity or NaN toInt
#0      double.ceil (dart:core-patch/double.dart)
#1      TileLayerComponent._createQuadTree (package:bonfire/map/base/tile_layer_component.dart:78:45)
#2      TileLayerComponent.initLayer (package:bonfire/map/base/tile_layer_component.dart:62:5)
#3      WorldMap._confMap (package:bonfire/map/world_map.dart:93:15)
#4      WorldMap.onLoad (package:bonfire/map/world_map.dart:141:5)
<asynchronous suspension>
#5      Component._startLoading.<anonymous closure> (package:flame/src/components/core/component.dart:858:32)
<asynchronous suspension>
RafaelBarbosatec commented 3 months ago

Hi @rosf73! Thanks so much for this report.

I will analyze this crash.

RafaelBarbosatec commented 3 months ago

Fix available in version 3.9.6