1 package net.systemeD.halcyon {
3 import flash.display.Sprite;
4 import flash.display.DisplayObject;
5 import net.systemeD.halcyon.NodeUI;
6 import net.systemeD.halcyon.WayUI;
7 import net.systemeD.halcyon.connection.Node;
8 import net.systemeD.halcyon.connection.Way;
9 import net.systemeD.halcyon.styleparser.RuleSet;
10 import net.systemeD.halcyon.vectorlayers.VectorLayer;
11 import net.systemeD.halcyon.Globals;
13 public class MapPaint extends Sprite {
16 public var minlayer:int;
17 public var maxlayer:int;
18 public var ruleset:RuleSet; // rules
19 public var wayuis:Object=new Object(); // sprites for ways and (POI/tagged) nodes
20 public var nodeuis:Object=new Object(); // |
21 public var isBackground:Boolean = true; // is it a background layer or the core paint object?
25 // [layer][2][sublayer] - stroke
26 // [layer][1] - casing
29 public function MapPaint(map:Map,minlayer:int,maxlayer:int) {
31 this.minlayer=minlayer;
32 this.maxlayer=maxlayer;
34 for (var l:int=minlayer; l<=maxlayer; l++) { // each layer (10 is +5, 0 is -5)
35 var s:Sprite = getHitSprite(); // |
36 s.addChild(getPaintSprite()); // | 0 fill
37 s.addChild(getPaintSprite()); // | 1 casing
38 var t:Sprite = getPaintSprite(); // | 2 stroke
39 for (var j:int=0; j<11; j++) { // | | ten sublayers
40 t.addChild(getPaintSprite()); // | | |
43 s.addChild(getPaintSprite()); // | 3 names
44 s.addChild(getPaintSprite()); // | 4 nodes
45 s.addChild(getHitSprite()); // | 5 entity hit tests
48 addChild(getPaintSprite()); // name sprite
51 public function get ready():Boolean {
52 if (!ruleset) { return false; }
53 if (!ruleset.loaded) { return false; }
57 /* public function addToLayer(s:DisplayObject, layer:int, t:uint, sublayer:int=-1) {
58 var l:DisplayObject=getChildAt(layer-minlayer);
59 var o:DisplayObject=Sprite(l).getChildAt(t);
60 if (sublayer!=-1) { o=Sprite(o).getChildAt(sublayer); }
61 Sprite(o).addChild(s);
64 Sprite(s).mouseEnabled = false;
65 Sprite(s).mouseChildren = false;
70 public function createWayUI(way:Way):WayUI {
71 wayuis[way.id]=new WayUI(way,this,false);
72 return wayuis[way.id];
75 public function createNodeUI(node:Node):NodeUI {
76 nodeuis[node.id]=new NodeUI(node,this,0,false);
77 return nodeuis[node.id];
80 public function deleteWayUI(way:Way):void {
81 wayuis[way.id].removeSprites();
82 delete wayuis[way.id];
85 public function deleteNodeUI(node:Node):void {
86 nodeuis[node.id].removeSprites();
87 delete nodeuis[node.id];
90 public function renumberWayUI(way:Way,oldID:int):void {
91 if (!wayuis[oldID]) { return; }
92 wayuis[way.id]=wayuis[oldID];
96 public function renumberNodeUI(node:Node,oldID:int):void {
97 if (!nodeuis[oldID]) { return; }
98 nodeuis[node.id]=nodeuis[oldID];
99 delete nodeuis[oldID];
102 private function getPaintSprite():Sprite {
103 var s:Sprite = new Sprite();
104 s.mouseEnabled = false;
105 s.mouseChildren = false;
109 private function getHitSprite():Sprite {
110 var s:Sprite = new Sprite();
114 public function redraw():void {
115 for each (var w:WayUI in wayuis) { w.recalculate(); w.redraw(); }
116 for each (var p:NodeUI in nodeuis) { p.redraw(); }
119 public function redrawPOIs():void {
120 for each (var p:NodeUI in nodeuis) { p.redraw(); }
123 public function findSource():VectorLayer {
125 for each (v in map.vectorlayers) {
126 if (v.paint==this) { return v; }