TiledObject.parse constructor
TiledObject.parse(
- Parser parser
Implementation
factory TiledObject.parse(Parser parser) {
final x = parser.getDouble('x', defaults: 0);
final y = parser.getDouble('y', defaults: 0);
final height = parser.getDouble('height', defaults: 0);
final width = parser.getDouble('width', defaults: 0);
final rotation = parser.getDouble('rotation', defaults: 0);
final visible = parser.getBool('visible', defaults: true);
final id = parser.getInt('id');
final gid = parser.getIntOrNull('gid');
final name = parser.getString('name', defaults: '');
// Tiled 1.9 and above versions running in compatibilty mode set to
// "Tiled 1.8" will still write out "Class" property as "type". So try both
// before using default value.
final type = parser.getString(
'class',
defaults: parser.getString('type', defaults: ''),
);
final ellipse = parser.formatSpecificParsing(
(json) => json.getBool('ellipse'),
(xml) => xml.getChildren('ellipse').isNotEmpty,
);
final point = parser.formatSpecificParsing(
(json) => json.getBool('point'),
(xml) => xml.getChildren('point').isNotEmpty,
);
final text = parser.getSingleChildOrNullAs('text', Text.parse);
final template = parser.getSingleChildOrNullAs('template', Template.parse);
final properties = parser.getProperties();
final polygon = parsePointList(parser, 'polygon');
final polyline = parsePointList(parser, 'polyline');
final rectangle = polyline.isEmpty && polygon.isEmpty && !ellipse && !point;
return TiledObject(
id: id,
name: name,
type: type,
gid: gid,
x: x,
y: y,
width: width,
height: height,
rotation: rotation,
ellipse: ellipse,
point: point,
rectangle: rectangle,
template: template,
text: text,
visible: visible,
polygon: polygon,
polyline: polyline,
properties: properties,
);
}