# See: http://wiki.flightgear.org/MapStructure
# Direct TO line.  Displays line from current position to a given Lat/Lon

# Class things:
var name = 'DTO';
var parents = [SymbolLayer.Controller];
var __self__ = caller(0)[0];
SymbolLayer.Controller.add(name, __self__);
SymbolLayer.add(name, {
	parents: [MultiSymbolLayer],
	type: name, # Symbol type
	df_controller: __self__, # controller to use by default -- this one
	df_options: { # default configuration options
	}
});
var new = func(layer) {
	var m = {
		parents: [__self__],
		layer: layer,
		map: layer.map,
		listeners: [],
		target_lat: -999,
		target_lon: -999,
		target_alt: -999,
		last_result: [],
	};
	layer.searcher._equals = func(l,r) 0; # TODO: create model objects instead?

	m.addVisibilityListener();
	return m;
};
var del = func() {
	foreach (var l; me.listeners)
		removelistener(l);
};
var setTarget = func(lat, lon, alt=0) {
	me.target_lat = lat;
	me.target_lon = lon;
	me.target_alt = alt;
	me.layer.update();
};

var searchCmd = func() {
	var coords = [];
	append(coords, {lon: me.target_lon, lat: me.target_lat, alt: me.target_alt});

	var lines = [];

	append(lines, {
		id: me.target_lat ~ " " ~ me.target_lon,
		type: "lon",
		path: coords,
		equals: func(o){
			return (me.path == o.path and me.type == o.type);
		}
	});

	return lines;
};