diff --git a/html/force.js b/html/force.js
index daec041..c742780 100644
--- a/html/force.js
+++ b/html/force.js
@@ -176,12 +176,6 @@ vis.append("g").attr("class", "links")
vis.append("g").attr("class", "nodes")
-var pm = vis.append("path")
- .style("fill", "#ff0")
- .style("stroke", "#000")
- .style("stroke-width", 2.5)
- .style("stroke-linejoin", "round")
-
var linkedByIndex
var force = d3.layout.force()
@@ -208,9 +202,6 @@ var force = d3.layout.force()
var angle = d3.scale.linear()
.domain([0, 1, 2, 3])
.range([0.01, Math.PI/4, 0.01, Math.PI/4])
-var a = 0
-
-var p = {x: 0, y: 0}
force.on("tick", function() {
var size = force.size()
@@ -239,44 +230,6 @@ force.on("tick", function() {
vis.selectAll(".node").attr("transform", function(d) {
return "translate(" + d.x + "," + d.y + ")";
})
-
- a = (a + 0.10)%2
-
- pm.attr("d", d3.svg.arc().innerRadius(0)
- .outerRadius(24).endAngle(-angle(a) + Math.PI/2 + 2*Math.PI).startAngle(angle(a) + Math.PI/2))
-
- var closest = null
- var dd = Infinity;
- for (i = 0; i < n; i++) {
- var o = nodes[i]
- if (o.dead)
- continue
-
- var d = Math.pow((o.x - p.x),2) + Math.pow( o.y - p.y, 2)
- if (d < dd) {
- dd = d
- closest = o
- }
- }
-
- var dx = closest.x - p.x
- var dy = closest.y - p.y
-
- var d = Math.sqrt(Math.pow(dx,2) + Math.pow(dy,2))
-
- dx = dx/d
- dy = dy/d
-
- if (d>1) {
-
- p.x += dx
- p.y += dy
- } else {
- closest.dead = true
- }
-
- pm.attr("transform", "matrix(" + [dx, dy, -dy, dx, p.x, p.y].join(",") + ")")
-
})
var data
diff --git a/html/nodes2.html b/html/nodes2.html
new file mode 100644
index 0000000..9a17574
--- /dev/null
+++ b/html/nodes2.html
@@ -0,0 +1,27 @@
+
+
+
+
+ Freifunk Lübeck - Knotengraph
+
+
+
+
+
+
+
+
+
+
+
+ luebeck.freifunk.net
+
+
+
+
+
+
+
diff --git a/html/pacman.js b/html/pacman.js
new file mode 100644
index 0000000..fec907d
--- /dev/null
+++ b/html/pacman.js
@@ -0,0 +1,68 @@
+d3.timer(pacman)
+var a = 0
+
+var p = {x: 0, y: 0}
+var pm = vis.append("path")
+ .style("fill", "#ff0")
+ .style("stroke", "#000")
+ .style("stroke-width", 2.5)
+ .style("stroke-linejoin", "round")
+
+function pacman() {
+ var size = force.size()
+ var nodes = force.nodes()
+ var n = nodes.length
+ if (n == 0)
+ return
+
+ a = (a + 0.10)%2
+
+ pm.attr("d", d3.svg.arc().innerRadius(0)
+ .outerRadius(24).endAngle(-angle(a) + Math.PI/2 + 2*Math.PI).startAngle(angle(a) + Math.PI/2))
+
+ var closest = null
+ var dd = Infinity;
+ for (i = 0; i < n; i++) {
+ var o = nodes[i]
+
+ var d = Math.pow((o.x - p.x),2) + Math.pow( o.y - p.y, 2)
+ if (d < dd) {
+ dd = d
+ closest = o
+ }
+ }
+
+ var dx = closest.x - p.x
+ var dy = closest.y - p.y
+
+ var d = Math.sqrt(Math.pow(dx,2) + Math.pow(dy,2))
+
+ dx = dx/d
+ dy = dy/d
+
+ if (d>1) {
+
+ p.x += dx
+ p.y += dy
+ } else {
+ var snd;
+ if (closest.flags.client) {
+ snd = new Audio("pacman_eatfruit.wav")
+ } else {
+ snd = new Audio("pacman_eatghost.wav")
+ }
+ snd.play()
+
+ data.nodes = data.nodes.filter(function (d) {
+ return d.id != closest.id
+ })
+
+ data.links = data.links.filter(function (d) {
+ return d.target.id != closest.id && d.source.id != closest.id
+ })
+ update()
+ }
+
+ pm.attr("transform", "matrix(" + [dx, dy, -dy, dx, p.x, p.y].join(",") + ")")
+}
+
diff --git a/html/pacman_chomp.wav b/html/pacman_chomp.wav
new file mode 100644
index 0000000..993b08e
Binary files /dev/null and b/html/pacman_chomp.wav differ
diff --git a/html/pacman_eatfruit.wav b/html/pacman_eatfruit.wav
new file mode 100644
index 0000000..420c02b
Binary files /dev/null and b/html/pacman_eatfruit.wav differ
diff --git a/html/pacman_eatghost.wav b/html/pacman_eatghost.wav
new file mode 100644
index 0000000..7ba6b2d
Binary files /dev/null and b/html/pacman_eatghost.wav differ