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.Globals;
12 public class MapPaint extends Sprite {
15 public var minlayer:int;
16 public var maxlayer:int;
17 public var ruleset:RuleSet; // rules
18 public var wayuis:Object=new Object(); // sprites for ways and (POI/tagged) nodes
19 public var nodeuis:Object=new Object(); // |
23 // [layer][2][sublayer] - stroke
24 // [layer][1] - casing
27 public function MapPaint(map:Map,minlayer:int,maxlayer:int) {
29 this.minlayer=minlayer;
30 this.maxlayer=maxlayer;
32 for (var l:int=minlayer; l<=maxlayer; l++) { // each layer (10 is +5, 0 is -5)
33 var s:Sprite = getHitSprite(); // |
34 s.addChild(getPaintSprite()); // | 0 fill
35 s.addChild(getPaintSprite()); // | 1 casing
36 var t:Sprite = getPaintSprite(); // | 2 stroke
37 for (var j:int=0; j<11; j++) { // | | ten sublayers
38 t.addChild(getPaintSprite()); // | | |
41 s.addChild(getPaintSprite()); // | 3 names
42 s.addChild(getPaintSprite()); // | 4 nodes
43 s.addChild(getHitSprite()); // | 5 entity hit tests
46 addChild(getPaintSprite()); // name sprite
49 public function get ready():Boolean {
50 if (!ruleset) { return false; }
51 if (!ruleset.loaded) { return false; }
55 /* public function addToLayer(s:DisplayObject, layer:int, t:uint, sublayer:int=-1) {
56 var l:DisplayObject=getChildAt(layer-minlayer);
57 var o:DisplayObject=Sprite(l).getChildAt(t);
58 if (sublayer!=-1) { o=Sprite(o).getChildAt(sublayer); }
59 Sprite(o).addChild(s);
62 Sprite(s).mouseEnabled = false;
63 Sprite(s).mouseChildren = false;
68 public function createWayUI(way:Way):WayUI {
69 wayuis[way.id]=new WayUI(way,this,false);
70 return wayuis[way.id];
73 public function createNodeUI(node:Node):NodeUI {
74 nodeuis[node.id]=new NodeUI(node,this,0,false);
75 return nodeuis[node.id];
78 public function deleteWayUI(way:Way):void {
79 wayuis[way.id].removeSprites();
80 delete wayuis[way.id];
83 public function deleteNodeUI(node:Node):void {
84 nodeuis[node.id].removeSprites();
85 delete nodeuis[node.id];
88 public function renumberWayUI(way:Way,oldID:int):void {
89 if (!wayuis[oldID]) { return; }
90 wayuis[way.id]=wayuis[oldID];
94 public function renumberNodeUI(node:Node,oldID:int):void {
95 if (!nodeuis[oldID]) { return; }
96 nodeuis[node.id]=nodeuis[oldID];
97 delete nodeuis[oldID];
100 private function getPaintSprite():Sprite {
101 var s:Sprite = new Sprite();
102 s.mouseEnabled = false;
103 s.mouseChildren = false;
107 private function getHitSprite():Sprite {
108 var s:Sprite = new Sprite();
112 public function redraw():void {
113 for each (var w:WayUI in wayuis) { w.recalculate(); w.redraw(); }
114 for each (var p:NodeUI in nodeuis) { p.redraw(); }
117 public function redrawPOIs():void {
118 for each (var p:NodeUI in nodeuis) { p.redraw(); }