Browse Source

amelioration affichage player

passage sur 8 instances fixes (pplus de dynamique)
création d'une valeur globale /game/players que chaque instance consulte
pour gérer son comportement (activation, positionnement...)
compensation des rotations pour le texte
Etienne Landon 9 years ago
parent
commit
b91a7d6aab
2 changed files with 229 additions and 275 deletions
  1. 55 45
      uki-video/UKI-VIDEO.pd
  2. 174 230
      uki-video/player.pd

+ 55 - 45
uki-video/UKI-VIDEO.pd

@@ -159,79 +159,89 @@ uses scene "0" of "ev_example_panoramic_preset.txt".;
 #X connect 24 0 22 0;
 #X restore 43 373 pd mapping;
 #N canvas 134 712 761 274 src_GAME 1;
-#N canvas 477 309 744 745 players 1;
+#N canvas 102 451 744 558 players 1;
 #X obj 422 216 gemhead;
-#X obj 422 310 pix_texture;
-#X obj 485 329 s /player/circle/texid;
+#X obj 422 290 pix_texture;
+#X obj 496 310 s /player/circle/texid;
 #X obj 43 144 gemhead;
 #X obj 43 401 s /player/framebuffer;
 #X obj 43 380 t b;
-#X floatatom 171 240 5 0 0 0 - - -, f 5;
+#X floatatom 171 250 5 0 0 0 - - -, f 5;
 #X obj 46 119 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
 1;
 #X obj 43 165 alpha;
-#X obj 413 101 r /game/players;
-#X msg 476 236 open ./media/circle_\$1.png;
 #X obj 422 241 alpha;
-#X floatatom 215 244 5 0 0 0 - - -, f 5;
+#X floatatom 215 254 5 0 0 0 - - -, f 5;
 #X floatatom 116 365 5 0 0 0 - - -, f 5;
 #X obj 32 46 inlet;
 #X obj 32 67 t b b;
 #X text 490 215 choix image cercle / nbre players;
-#X floatatom 189 185 5 0 0 0 - - -, f 5;
-#X obj 43 232 translateXYZ 0 1 -5;
-#X floatatom 279 246 5 0 0 0 - - -, f 5;
-#X floatatom 426 134 5 0 0 0 - - -, f 5;
-#X obj 43 360 scale 1.06;
-#X obj 43 268 rotateXYZ -20.8 0 0;
+#X floatatom 189 155 5 0 0 0 - - -, f 5;
+#X floatatom 279 256 5 0 0 0 - - -, f 5;
+#X floatatom 454 128 5 0 0 0 - - -, f 5;
 #X obj 422 266 pix_image ./media/xy.png;
 #X obj 563 75 hradio 15 1 0 8 empty empty empty 0 -8 0 10 -262144 -1
--1 2;
-#X obj 474 520 player 8 8;
+-1 3;
 #X text 243 5 ne plus utiliser patch dynamique \, 8 instances de player
 actives par number_of_players;
-#X obj 566 125 s /game/players;
 #X text 248 39 agit comme un "patch" automatique entre 8 sensors (maximum)
 et 8 affichage joueur;
-#X obj 474 380 player 1 8;
-#X obj 474 400 player 2 8;
-#X obj 474 420 player 3 8;
-#X obj 474 440 player 4 8;
-#X obj 474 460 player 5 8;
-#X obj 474 480 player 6 8;
-#X obj 474 500 player 7 8;
 #X obj 100 335 s /player/framebuffer/rot/x;
 #X obj 83 291 gemlist_info;
 #X obj 100 314 unpack f f f;
 #X obj 88 100 loadbang;
 #X msg 88 122 0;
 #X obj 563 95 + 2;
-#X connect 0 0 11 0;
+#X obj 566 125 v /game/players;
+#X msg 476 236 open ./media/circle_\$1_cent.png;
+#X obj 614 347 metro 2000;
+#X obj 614 369 random 3;
+#X obj 614 391 + 1;
+#X msg 617 412 \; /game/sleep \$1;
+#X obj 616 329 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 43 268 rotateXYZ 0 0 0;
+#X obj 43 360 scale 1;
+#X obj 43 202 translateXYZ 0 0 -3;
+#X obj 474 380 player 0;
+#X obj 474 420 player 2;
+#X obj 474 440 player 3;
+#X obj 474 460 player 4;
+#X obj 474 480 player 5;
+#X obj 474 500 player 6;
+#X obj 474 520 player 7;
+#X obj 474 400 player 1;
+#X connect 0 0 9 0;
 #X connect 1 1 2 0;
 #X connect 3 0 8 0;
 #X connect 5 0 4 0;
-#X connect 6 0 22 1;
+#X connect 6 0 35 1;
 #X connect 7 0 3 0;
-#X connect 8 0 18 0;
-#X connect 9 0 20 0;
-#X connect 9 0 10 0;
-#X connect 10 0 23 0;
-#X connect 11 0 23 0;
-#X connect 12 0 22 2;
-#X connect 13 0 21 1;
-#X connect 14 0 15 0;
-#X connect 17 0 18 2;
-#X connect 18 0 22 0;
-#X connect 19 0 22 3;
-#X connect 21 0 5 0;
-#X connect 22 0 21 0;
-#X connect 23 0 1 0;
-#X connect 24 0 41 0;
-#X connect 37 1 38 0;
-#X connect 38 0 36 0;
-#X connect 39 0 40 0;
-#X connect 40 0 3 0;
-#X connect 41 0 27 0;
+#X connect 8 0 37 0;
+#X connect 9 0 18 0;
+#X connect 10 0 35 2;
+#X connect 11 0 36 1;
+#X connect 12 0 13 0;
+#X connect 13 0 3 0;
+#X connect 15 0 37 2;
+#X connect 16 0 35 3;
+#X connect 18 0 1 0;
+#X connect 19 0 27 0;
+#X connect 23 1 24 0;
+#X connect 24 0 22 0;
+#X connect 25 0 26 0;
+#X connect 26 0 3 0;
+#X connect 27 0 28 0;
+#X connect 27 0 29 0;
+#X connect 27 0 17 0;
+#X connect 29 0 18 0;
+#X connect 30 0 31 0;
+#X connect 31 0 32 0;
+#X connect 32 0 33 0;
+#X connect 34 0 30 0;
+#X connect 35 0 36 0;
+#X connect 36 0 5 0;
+#X connect 37 0 35 0;
 #X restore 52 222 pd players;
 #N canvas 195 468 1722 537 game_events 0;
 #X obj -14 85 gemhead;

+ 174 - 230
uki-video/player.pd

@@ -1,45 +1,24 @@
-#N canvas 1072 389 730 637 10;
-#X text 504 38 reçoit données capteur;
-#X text 504 57 gère affichage joueur;
-#X obj 140 137 alpha;
-#X obj 344 365 t a a;
-#X obj 255 535 rotateXYZ;
-#X floatatom 306 462 5 0 0 0 - - -, f 5;
-#X floatatom 272 436 5 0 0 0 - - -, f 5;
-#X obj 344 302 loadbang;
-#X obj 344 455 *;
+#N canvas 729 355 730 680 10;
+#X text 504 68 reçoit données capteur;
+#X text 504 87 gère affichage joueur;
+#X obj 140 167 alpha;
 #X obj 140 0 r /player/framebuffer;
-#X obj 140 112 gemhead;
-#X msg 71 45 0;
-#X obj 71 25 loadbang;
-#X msg 371 388 360;
-#X obj 371 409 / \$2;
-#X obj 344 323 f \$1;
-#X obj 412 329 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
--1 -1;
-#X obj 255 251 separator;
-#X obj 344 495 - 0;
-#X obj 344 474 * -1;
-#X floatatom 351 522 5 0 0 0 - - -, f 5;
-#X floatatom 388 498 5 0 0 0 - - -, f 5;
-#X obj 257 276 translateXYZ 0 1 0;
-#X obj 324 520 + 15;
-#X obj 179 34 r /game/players;
-#X obj 179 56 < \$1;
-#X obj 140 85 spigot;
-#N canvas 1 52 802 447 tripleAnneau 0;
-#X obj 60 147 pix_texture;
-#X obj 123 123 r /player/circle/texid;
-#X obj 60 192 repeat 3;
-#X obj 60 227 t a b;
+#X obj 140 142 gemhead;
+#X msg 71 55 0;
+#X obj 71 35 loadbang;
+#X obj 140 115 spigot;
+#N canvas 1 52 802 447 tripleAnneau 1;
+#X obj 60 87 pix_texture;
+#X obj 134 63 r /player/circle/texid;
+#X obj 60 142 repeat 3;
+#X obj 60 177 t a b;
 #X obj 99 253 counter 3;
-#X obj 60 170 t a b;
+#X obj 60 120 t a b;
 #X obj 197 270 route 0 1 2;
 #X obj 60 411 color;
 #X obj 60 374 scale 1;
 #X obj 98 327 /;
 #X obj 99 277 + 1;
-#X floatatom 126 348 5 0 0 0 - - -, f 5;
 #X obj 60 435 square 5;
 #X obj 384 101 r /player/\$1;
 #X obj 384 127 unpack f f;
@@ -168,7 +147,7 @@
 #X floatatom 409 73 5 0 0 0 - - -, f 5;
 #X obj 362 9 r /player_level;
 #X obj 362 31 route \$1;
-#X obj 66 83 inlet;
+#X obj 60 53 inlet;
 #X connect 0 0 5 0;
 #X connect 1 0 0 1;
 #X connect 2 0 3 0;
@@ -178,100 +157,73 @@
 #X connect 4 0 10 0;
 #X connect 5 0 2 0;
 #X connect 5 1 4 2;
-#X connect 6 0 30 0;
-#X connect 6 1 32 0;
-#X connect 6 2 33 0;
-#X connect 7 0 12 0;
+#X connect 6 0 29 0;
+#X connect 6 1 31 0;
+#X connect 6 2 32 0;
+#X connect 7 0 11 0;
 #X connect 8 0 7 0;
-#X connect 9 0 28 0;
-#X connect 10 0 29 0;
-#X connect 11 0 28 1;
-#X connect 13 0 14 0;
-#X connect 13 0 43 0;
-#X connect 14 0 38 0;
-#X connect 15 0 25 0;
-#X connect 15 1 26 0;
-#X connect 15 2 27 0;
-#X connect 16 0 25 0;
-#X connect 17 0 18 0;
-#X connect 18 0 21 0;
-#X connect 18 1 15 0;
-#X connect 18 2 19 0;
-#X connect 19 0 38 1;
-#X connect 20 0 24 0;
-#X connect 21 0 20 0;
-#X connect 22 0 38 1;
-#X connect 23 0 15 0;
-#X connect 24 0 22 0;
-#X connect 24 1 23 0;
-#X connect 25 0 30 1;
+#X connect 9 0 27 0;
+#X connect 10 0 28 0;
+#X connect 12 0 13 0;
+#X connect 12 0 42 0;
+#X connect 13 0 37 0;
+#X connect 14 0 24 0;
+#X connect 14 1 25 0;
+#X connect 14 2 26 0;
+#X connect 15 0 24 0;
+#X connect 16 0 17 0;
+#X connect 17 0 20 0;
+#X connect 17 1 14 0;
+#X connect 17 2 18 0;
+#X connect 18 0 37 1;
+#X connect 19 0 23 0;
+#X connect 20 0 19 0;
+#X connect 21 0 37 1;
+#X connect 22 0 14 0;
+#X connect 23 0 21 0;
+#X connect 23 1 22 0;
+#X connect 24 0 29 1;
+#X connect 25 0 31 1;
 #X connect 26 0 32 1;
-#X connect 27 0 33 1;
-#X connect 28 0 8 1;
-#X connect 29 0 9 0;
-#X connect 30 0 31 0;
-#X connect 31 0 7 1;
+#X connect 27 0 8 1;
+#X connect 28 0 9 0;
+#X connect 29 0 30 0;
+#X connect 30 0 7 1;
+#X connect 31 0 38 0;
 #X connect 32 0 39 0;
-#X connect 33 0 40 0;
-#X connect 34 0 15 0;
+#X connect 33 0 14 0;
+#X connect 35 0 40 0;
 #X connect 36 0 41 0;
-#X connect 37 0 42 0;
-#X connect 38 0 15 0;
+#X connect 37 0 14 0;
+#X connect 38 0 7 1;
 #X connect 39 0 7 1;
-#X connect 40 0 7 1;
-#X connect 41 0 38 1;
-#X connect 42 0 38 1;
-#X connect 42 0 15 0;
-#X connect 44 0 45 0;
-#X connect 45 0 14 0;
-#X connect 46 0 0 0;
-#X restore 258 575 pd tripleAnneau;
-#N canvas 1 52 450 300 player#+sensor 0;
-#X floatatom 187 185 5 0 0 0 - - -, f 5;
-#X obj 115 388 loadbang;
-#X obj 73 178 separator;
-#X obj 115 408 f \$1;
-#X obj 174 369 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
--1 -1;
-#X obj 73 198 color 1 1 1 1;
+#X connect 40 0 37 1;
+#X connect 41 0 37 1;
+#X connect 41 0 14 0;
+#X connect 43 0 44 0;
+#X connect 44 0 13 0;
+#X connect 45 0 0 0;
+#X restore 256 504 pd tripleAnneau;
+#N canvas 403 137 662 840 player#+sensor 0;
+#X obj 200 318 loadbang;
+#X obj 200 343 f \$1;
+#X obj 73 28 color 1 1 1 1;
 #X obj 73 515 pix_separator;
 #X obj 73 608 separator;
 #X obj 73 750 rotateXYZ 0 0 90;
 #X obj 73 728 translateXYZ 0 0 0;
 #X obj 139 686 - 0.5;
 #X floatatom 176 515 5 0 0 0 - - -, f 5;
-#X floatatom 137 167 5 0 0 0 - - -, f 5;
-#X obj 73 126 rotateXYZ;
-#X floatatom 231 122 5 0 0 0 - - -, f 5;
 #X obj 73 574 rectangle 1 0.05;
 #X obj 73 774 rectangle 0.25 0.05;
 #X obj 139 705 * 2;
-#X obj 100 478 text3d;
-#X msg 133 453 30;
+#X obj 105 438 text3d;
+#X msg 208 410 30;
 #X obj 73 368 t a a;
-#X obj 131 279 * -1;
-#X msg 115 427 font media/FreeSansBold.ttf \, text \$1 \, justify center
+#X msg 200 387 font media/FreeSansBold.ttf \, text \$1 \, justify center
 base;
 #X obj 73 548 translateXYZ 0.1 -0.5 0;
-#X floatatom -5 277 5 0 0 0 - - -, f 5;
-#X obj 284 34 r /player/framebuffer/rot/x;
-#X floatatom 57 282 5 0 0 0 - - -, f 5;
-#X floatatom 102 274 5 0 0 0 - - -, f 5;
-#X obj 10 318 * -1;
-#X floatatom 178 54 5 0 0 0 - - -, f 5;
-#X obj 350 153 / -360;
 #X obj 74 493 color 0 1 0 1;
-#X obj 74 103 separator;
-#X obj 73 308 rotateXYZ;
-#X obj 378 96 * 2;
-#X obj 419 232;
-#X msg 451 211 360;
-#X obj 451 232 / \$2;
-#X obj 433 180 loadbang;
-#X obj 501 187 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
--1 -1;
-#X obj 427 277 -;
-#X obj 450 254 t b f;
 #X obj 82 647 spigot 0;
 #X obj 271 560 r /game/end;
 #X obj 311 580 r /game/start;
@@ -281,24 +233,8 @@ base;
 #X obj 263 691 delay;
 #X msg 263 668 5000;
 #X msg 265 714 1;
-#X floatatom 206 207 5 0 0 0 - - -, f 5;
-#X obj 350 175 + 6;
-#X obj 73 152 scale 0.5;
 #X msg 313 599 1;
 #X msg 268 590 0;
-#X obj 73 218 rotateXYZ;
-#X floatatom 11 162 5 0 0 0 - - -, f 5;
-#X floatatom 174 295 5 0 0 0 - - -, f 5;
-#X floatatom 414 323 5 0 0 0 - - -, f 5;
-#X msg 303 163 1 \$1;
-#X obj 303 187 -;
-#X floatatom 304 244 5 0 0 0 - - -, f 5;
-#X obj 255 79 * -1;
-#X obj 323 68 abs;
-#X obj 256 242 + 8;
-#X obj 300 215 * 4;
-#X obj 326 90 / 180;
-#X obj 73 249 translateXYZ 0 12 0;
 #X obj -57 522 r /player_sensor;
 #X floatatom 35 624 5 0 0 0 - - -, f 5;
 #X floatatom -56 584 5 0 0 0 - - -, f 5;
@@ -306,80 +242,69 @@ base;
 #X floatatom 1 592 5 0 0 0 - - -, f 5;
 #X obj -98 651 r /player/\$1;
 #X obj -98 690 unpack f f;
-#X obj 76 69 inlet;
-#X connect 0 0 68 2;
-#X connect 1 0 19 0;
-#X connect 1 0 3 0;
-#X connect 2 0 5 0;
-#X connect 3 0 22 0;
-#X connect 5 0 56 0;
-#X connect 6 0 23 0;
-#X connect 7 0 9 0;
-#X connect 8 0 16 0;
-#X connect 9 0 8 0;
-#X connect 10 0 17 0;
-#X connect 11 0 23 2;
-#X connect 12 0 68 1;
-#X connect 13 0 53 0;
-#X connect 14 0 13 3;
-#X connect 15 0 7 0;
-#X connect 17 0 9 1;
-#X connect 19 0 18 1;
-#X connect 20 0 31 0;
-#X connect 20 1 18 0;
-#X connect 21 0 33 3;
-#X connect 22 0 18 0;
-#X connect 23 0 15 0;
-#X connect 24 0 33 1;
-#X connect 25 0 63 0;
-#X connect 25 0 64 0;
-#X connect 26 0 33 2;
-#X connect 27 0 33 3;
-#X connect 29 0 13 1;
-#X connect 30 0 52 0;
-#X connect 31 0 6 0;
-#X connect 32 0 13 0;
-#X connect 33 0 20 0;
-#X connect 34 0 30 0;
-#X connect 36 0 37 0;
-#X connect 37 0 41 0;
-#X connect 38 0 36 0;
-#X connect 40 0 13 3;
-#X connect 40 0 21 0;
-#X connect 40 0 59 0;
-#X connect 41 0 40 0;
-#X connect 41 1 40 1;
-#X connect 42 0 10 0;
-#X connect 43 0 55 0;
-#X connect 44 0 54 0;
-#X connect 45 0 46 0;
-#X connect 46 0 49 0;
-#X connect 46 2 47 0;
-#X connect 47 0 42 1;
-#X connect 48 0 50 0;
-#X connect 49 0 48 0;
-#X connect 50 0 42 1;
-#X connect 51 0 68 3;
-#X connect 53 0 2 0;
-#X connect 54 0 42 1;
-#X connect 55 0 42 1;
-#X connect 56 0 68 0;
-#X connect 57 0 56 1;
-#X connect 58 0 33 3;
-#X connect 60 0 61 0;
-#X connect 61 0 66 0;
-#X connect 63 0 13 1;
-#X connect 64 0 67 0;
-#X connect 66 0 62 0;
-#X connect 66 0 65 0;
-#X connect 67 0 60 0;
-#X connect 68 0 33 0;
-#X connect 69 0 72 0;
-#X connect 72 0 71 0;
-#X connect 72 0 42 0;
-#X connect 76 0 32 0;
-#X restore 75 370 pd player#+sensor;
-#X obj 140 188 t a a a;
+#X obj 76 -51 inlet;
+#X obj 73 332 scale 0.5;
+#X obj 73 59 translateXYZ 0 6 0;
+#X obj 73 93 gemlist_info;
+#X obj 93 128 unpack f f f;
+#X text 103 112 orientation;
+#X obj 74 -17 separator;
+#X obj 174 163 * -1;
+#X text 215 163 compensate image rotation;
+#X obj 200 365 + 1;
+#X obj 73 301 rotateXYZ 0 0 0;
+#X floatatom 201 299 5 0 0 0 - - -, f 5;
+#X obj 73 248 rotateXYZ 0 0 0;
+#X obj 93 203 * -1;
+#X text 136 200 compensate global buffer rotation;
+#X connect 0 0 13 0;
+#X connect 0 0 1 0;
+#X connect 1 0 45 0;
+#X connect 2 0 38 0;
+#X connect 3 0 16 0;
+#X connect 4 0 6 0;
+#X connect 5 0 10 0;
+#X connect 6 0 5 0;
+#X connect 7 0 11 0;
+#X connect 8 0 16 2;
+#X connect 9 0 4 0;
+#X connect 11 0 6 1;
+#X connect 13 0 12 1;
+#X connect 14 0 17 0;
+#X connect 14 1 12 0;
+#X connect 15 0 12 0;
+#X connect 16 0 9 0;
+#X connect 17 0 3 0;
+#X connect 18 0 7 0;
+#X connect 19 0 28 0;
+#X connect 20 0 27 0;
+#X connect 21 0 22 0;
+#X connect 22 0 25 0;
+#X connect 22 2 23 0;
+#X connect 23 0 18 1;
+#X connect 24 0 26 0;
+#X connect 25 0 24 0;
+#X connect 26 0 18 1;
+#X connect 27 0 18 1;
+#X connect 28 0 18 1;
+#X connect 29 0 32 0;
+#X connect 32 0 31 0;
+#X connect 32 0 18 0;
+#X connect 36 0 42 0;
+#X connect 37 0 14 0;
+#X connect 38 0 39 0;
+#X connect 39 0 48 0;
+#X connect 39 1 40 0;
+#X connect 40 0 49 0;
+#X connect 40 2 43 0;
+#X connect 42 0 2 0;
+#X connect 43 0 48 3;
+#X connect 45 0 15 0;
+#X connect 46 0 37 0;
+#X connect 47 0 46 1;
+#X connect 48 0 46 0;
+#X connect 49 0 46 1;
+#X restore 133 535 pd player#+sensor;
 #N canvas 1 52 450 300 excludeLighting 0;
 #X obj 140 33 inlet;
 #X obj 140 128 t a a a;
@@ -396,31 +321,50 @@ base;
 #X connect 2 0 3 0;
 #X connect 3 0 4 1;
 #X connect 3 0 5 1;
-#X restore 140 159 pd excludeLighting;
-#X connect 2 0 30 0;
-#X connect 3 0 8 0;
-#X connect 3 1 13 0;
-#X connect 4 0 27 0;
-#X connect 5 0 4 3;
-#X connect 6 0 4 1;
-#X connect 7 0 15 0;
-#X connect 8 0 19 0;
-#X connect 9 0 26 0;
-#X connect 10 0 2 0;
-#X connect 11 0 10 0;
-#X connect 12 0 11 0;
-#X connect 13 0 14 0;
-#X connect 14 0 8 1;
-#X connect 14 0 18 1;
-#X connect 17 0 22 0;
-#X connect 18 0 20 0;
-#X connect 18 0 23 0;
-#X connect 19 0 18 0;
-#X connect 19 0 21 0;
-#X connect 22 0 4 0;
-#X connect 23 0 4 3;
-#X connect 24 0 25 0;
-#X connect 25 0 26 1;
-#X connect 26 0 10 0;
-#X connect 29 2 17 0;
-#X connect 30 0 29 0;
+#X restore 140 189 pd excludeLighting;
+#X obj 140 216 translateXYZ 0 0 0;
+#X obj 141 425 rotateXYZ;
+#X obj 339 121 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 179 86 > \$1;
+#X obj 179 44 v /game/players;
+#X obj 140 22 t b b;
+#X obj 179 66 change;
+#X obj 179 276 v /game/players;
+#X obj 179 298 change;
+#X msg 179 318 360 \$1;
+#X obj 179 340 /;
+#X obj 179 382 * \$1;
+#X obj 140 254 t a b;
+#X obj 179 362 * -1;
+#X text 219 362 turn clockwise;
+#X obj 256 481 separator;
+#X obj 141 448 t a a a;
+#X text 186 250 base rotation / player number;
+#X connect 2 0 10 0;
+#X connect 3 0 16 0;
+#X connect 4 0 2 0;
+#X connect 5 0 4 0;
+#X connect 6 0 5 0;
+#X connect 7 0 4 0;
+#X connect 10 0 11 0;
+#X connect 11 0 23 0;
+#X connect 12 0 27 0;
+#X connect 13 0 7 1;
+#X connect 14 0 13 0;
+#X connect 15 0 17 0;
+#X connect 16 0 7 0;
+#X connect 16 1 15 0;
+#X connect 17 0 14 0;
+#X connect 18 0 19 0;
+#X connect 19 0 20 0;
+#X connect 20 0 21 0;
+#X connect 21 0 24 0;
+#X connect 22 0 12 3;
+#X connect 23 0 12 0;
+#X connect 23 1 18 0;
+#X connect 24 0 22 0;
+#X connect 26 0 8 0;
+#X connect 27 0 9 0;
+#X connect 27 2 26 0;
+#X coords 0 -1 1 1 105 18 1 250 120;