diff --git a/beach.yml b/beach.yml
new file mode 100644
index 0000000..a8a8b7b
--- /dev/null
+++ b/beach.yml
@@ -0,0 +1,873 @@
+---
+- BeachBlock:
+ :x: 64.0
+ :y: 672.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 208.0
+ :y: 672.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 320.0
+ :y: 672.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 2272.0
+ :y: 672.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 208.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 64.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 320.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 400.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 2400.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 400.0
+ :y: 672.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 2368.0
+ :y: 672.0
+ :angle: 0
+ :zorder: 98
+ :factor_x: 0.586666666666666
+ :factor_y: 0.586666666666666
+ :color: 4294967295
+- BeachBlock:
+ :x: 2704.0
+ :y: 656.0
+ :angle: 0
+ :zorder: 99
+ :factor_x: 0.693333333333333
+ :factor_y: 0.693333333333333
+ :color: 4294967295
+- BeachBlock:
+ :x: 544.0
+ :y: 672.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 544.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 688.0
+ :y: 672.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 688.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 832.0
+ :y: 672.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 832.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 976.0
+ :y: 672.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 976.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 1120.0
+ :y: 672.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- Cloud:
+ :x: -1502.94849465445
+ :y: 160.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.003300330033
+ :factor_y: 1.10344827586207
+ :color: 2399141887
+- Cloud:
+ :x: 161.879160224283
+ :y: 176.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.21452145214521
+ :factor_y: 2.20689655172414
+ :color: 2399141887
+- Cloud:
+ :x: 1058.84091580199
+ :y: 256.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.95049504950495
+ :factor_y: 0.827586206896552
+ :color: 2399141887
+- Cloud:
+ :x: 602.867496120292
+ :y: 96.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.21452145214521
+ :factor_y: 2.20689655172414
+ :color: 2399141887
+- Cloud:
+ :x: 2977.73848694696
+ :y: 112.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.21452145214521
+ :factor_y: 2.20689655172414
+ :color: 2399141887
+- Cloud:
+ :x: 3635.94466529905
+ :y: 224.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.95049504950495
+ :factor_y: 0.827586206896552
+ :color: 2399141887
+- Cloud:
+ :x: 2762.43081416314
+ :y: 96.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.21452145214521
+ :factor_y: 2.20689655172414
+ :color: 2399141887
+- Cloud:
+ :x: 6731.42424164213
+ :y: 96.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.21452145214521
+ :factor_y: 2.20689655172414
+ :color: 2399141887
+- Cloud:
+ :x: 7242.6236064415
+ :y: 240.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.003300330033
+ :factor_y: 1.10344827586207
+ :color: 2399141887
+- Cloud:
+ :x: 5480.54746763176
+ :y: 160.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.003300330033
+ :factor_y: 1.10344827586207
+ :color: 2399141887
+- Cloud:
+ :x: 2685.38285619596
+ :y: 208.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.21452145214521
+ :factor_y: 2.20689655172414
+ :color: 2399141887
+- Cloud:
+ :x: 4629.58991565926
+ :y: 64.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.21452145214521
+ :factor_y: 2.20689655172414
+ :color: 2399141887
+- Cloud:
+ :x: 8729.70449248185
+ :y: 224.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.21452145214521
+ :factor_y: 2.20689655172414
+ :color: 2399141887
+- Cloud:
+ :x: 5536.56321965066
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.05610561056106
+ :factor_y: 1.37931034482759
+ :color: 2399141887
+- BeachBlock:
+ :x: 1072.0
+ :y: 576.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.16
+ :factor_y: 0.16
+ :color: 4294967295
+- BeachBlock:
+ :x: 1120.0
+ :y: 576.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.16
+ :factor_y: 0.16
+ :color: 4294967295
+- BeachBlock:
+ :x: 1120.0
+ :y: 528.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.16
+ :factor_y: 0.16
+ :color: 4294967295
+- BeachBlock:
+ :x: 1264.0
+ :y: 576.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.16
+ :factor_y: 0.16
+ :color: 4294967295
+- BeachBlock:
+ :x: 1216.0
+ :y: 528.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.16
+ :factor_y: 0.16
+ :color: 4294967295
+- BeachBlock:
+ :x: 1168.0
+ :y: 576.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.16
+ :factor_y: 0.16
+ :color: 4294967295
+- BeachBlock:
+ :x: 1264.0
+ :y: 672.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 1408.0
+ :y: 672.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 1216.0
+ :y: 576.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.16
+ :factor_y: 0.16
+ :color: 4294967295
+- BeachBlock:
+ :x: 1168.0
+ :y: 528.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.16
+ :factor_y: 0.16
+ :color: 4294967295
+- BeachBlock:
+ :x: 1216.0
+ :y: 480.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.16
+ :factor_y: 0.16
+ :color: 4294967295
+- BeachBlock:
+ :x: 1120.0
+ :y: 480.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.16
+ :factor_y: 0.16
+ :color: 4294967295
+- BeachBlock:
+ :x: 1120.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 1264.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 1408.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 1552.0
+ :y: 672.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 1552.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 1696.0
+ :y: 672.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 1696.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 1216.0
+ :y: 432.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.16
+ :factor_y: 0.16
+ :color: 4294967295
+- BeachBlock:
+ :x: 1216.0
+ :y: 384.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.16
+ :factor_y: 0.16
+ :color: 4294967295
+- BeachBlock:
+ :x: 1312.0
+ :y: 576.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.16
+ :factor_y: 0.16
+ :color: 4294967295
+- BeachBlock:
+ :x: 1312.0
+ :y: 528.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.16
+ :factor_y: 0.16
+ :color: 4294967295
+- BeachBlock:
+ :x: 1312.0
+ :y: 480.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.16
+ :factor_y: 0.16
+ :color: 4294967295
+- BeachBlock:
+ :x: 1840.0
+ :y: 672.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 1840.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 1984.0
+ :y: 672.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 1984.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 2128.0
+ :y: 672.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 2480.0
+ :y: 640.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.586666666666666
+ :factor_y: 0.586666666666666
+ :color: 4294967295
+- BeachBlock:
+ :x: 2560.0
+ :y: 624.0
+ :angle: 0
+ :zorder: 96
+ :factor_x: 0.586666666666666
+ :factor_y: 0.586666666666666
+ :color: 4294967295
+- BeachBlock:
+ :x: 2128.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 2256.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 2544.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 2512.0
+ :y: 752.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.853333333333333
+ :factor_y: 0.853333333333333
+ :color: 4294967295
+- BeachBlock:
+ :x: 2688.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 2848.0
+ :y: 672.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 2976.0
+ :y: 672.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 2832.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 2976.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 3120.0
+ :y: 672.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 3120.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 3264.0
+ :y: 672.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 3264.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 3408.0
+ :y: 672.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- BeachBlock:
+ :x: 3408.0
+ :y: 816.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.48
+ :factor_y: 0.48
+ :color: 4294967295
+- Battery:
+ :x: 512.0
+ :y: 384.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.00900900900901
+ :factor_y: 1.11304347826087
+ :color: 4294967295
+- Drink:
+ :x: 1072.0
+ :y: 528.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 9.6
+ :factor_y: 5.33333333333333
+ :color: 4294967295
+- Drink:
+ :x: 1872.0
+ :y: 512.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 9.6
+ :factor_y: 5.33333333333333
+ :color: 4294967295
+- BeachBlock:
+ :x: 2016.0
+ :y: 560.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.0533333333333333
+ :factor_y: 0.0533333333333333
+ :color: 4294967295
+- BeachBlock:
+ :x: 1872.0
+ :y: 592.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.0533333333333333
+ :factor_y: 0.0533333333333333
+ :color: 4294967295
+- BeachBlock:
+ :x: 1872.0
+ :y: 576.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.0533333333333333
+ :factor_y: 0.0533333333333333
+ :color: 4294967295
+- BeachBlock:
+ :x: 1872.0
+ :y: 560.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.0533333333333333
+ :factor_y: 0.0533333333333333
+ :color: 4294967295
+- BeachBlock:
+ :x: 2016.0
+ :y: 576.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.0533333333333333
+ :factor_y: 0.0533333333333333
+ :color: 4294967295
+- BeachBlock:
+ :x: 2016.0
+ :y: 592.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.0533333333333333
+ :factor_y: 0.0533333333333333
+ :color: 4294967295
+- BeachBlock:
+ :x: 1984.0
+ :y: 544.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.0533333333333333
+ :factor_y: 0.0533333333333333
+ :color: 4294967295
+- BeachBlock:
+ :x: 2000.0
+ :y: 544.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.0533333333333333
+ :factor_y: 0.0533333333333333
+ :color: 4294967295
+- BeachBlock:
+ :x: 2016.0
+ :y: 544.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.0533333333333333
+ :factor_y: 0.0533333333333333
+ :color: 4294967295
+- BeachBlock:
+ :x: 2032.0
+ :y: 544.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.0533333333333333
+ :factor_y: 0.0533333333333333
+ :color: 4294967295
+- BeachBlock:
+ :x: 2048.0
+ :y: 544.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.0533333333333333
+ :factor_y: 0.0533333333333333
+ :color: 4294967295
+- BeachBlock:
+ :x: 1856.0
+ :y: 544.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.0533333333333333
+ :factor_y: 0.0533333333333333
+ :color: 4294967295
+- BeachBlock:
+ :x: 1840.0
+ :y: 544.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.0533333333333333
+ :factor_y: 0.0533333333333333
+ :color: 4294967295
+- BeachBlock:
+ :x: 1840.0
+ :y: 544.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.0533333333333333
+ :factor_y: 0.0533333333333333
+ :color: 4294967295
+- BeachBlock:
+ :x: 1872.0
+ :y: 544.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.0533333333333333
+ :factor_y: 0.0533333333333333
+ :color: 4294967295
+- BeachBlock:
+ :x: 1872.0
+ :y: 544.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.0533333333333333
+ :factor_y: 0.0533333333333333
+ :color: 4294967295
+- BeachBlock:
+ :x: 1888.0
+ :y: 544.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.0533333333333333
+ :factor_y: 0.0533333333333333
+ :color: 4294967295
+- BeachBlock:
+ :x: 1904.0
+ :y: 544.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.0533333333333333
+ :factor_y: 0.0533333333333333
+ :color: 4294967295
+- Drink:
+ :x: 1984.0
+ :y: 512.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 9.6
+ :factor_y: 5.33333333333333
+ :color: 4294967295
+- Drink:
+ :x: 2048.0
+ :y: 512.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 9.6
+ :factor_y: 5.33333333333333
+ :color: 4294967295
+- BeachBlock:
+ :x: 2064.0
+ :y: 544.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.0533333333333333
+ :factor_y: 0.0533333333333333
+ :color: 4294967295
+- BeachBlock:
+ :x: 1968.0
+ :y: 544.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.0533333333333333
+ :factor_y: 0.0533333333333333
+ :color: 4294967295
+- BeachBlock:
+ :x: 1904.0
+ :y: 544.0
+ :angle: 0
+ :zorder: 97
+ :factor_x: 0.0533333333333333
+ :factor_y: 0.0533333333333333
+ :color: 4294967295
+- Ball:
+ :x: 1216.0
+ :y: 176.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 2.96296296296296
+ :factor_y: 3.07692307692308
+ :color: 4294967295
+- Ball:
+ :x: 2016.0
+ :y: 192.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 2.96296296296296
+ :factor_y: 3.07692307692308
+ :color: 4294967295
diff --git a/factory.yml b/factory.yml
new file mode 100644
index 0000000..ab6377c
--- /dev/null
+++ b/factory.yml
@@ -0,0 +1,2145 @@
+---
+- CogWheel:
+ :x: 1088.0
+ :y: 352.0
+ :angle: 261.503276348003
+ :zorder: 95
+ :factor_x: 1.68525252525252
+ :factor_y: 1.68525252525252
+ :color: 1459617791
+- CogWheel:
+ :x: 448.0
+ :y: 416.0
+ :angle: 213.943880498079
+ :zorder: 88
+ :factor_x: 1.68525252525252
+ :factor_y: 1.68525252525252
+ :color: 1644167167
+- Block:
+ :x: 64.0
+ :y: 480.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.286995515695065
+ :factor_y: 0.286995515695065
+ :color: 4294967295
+- Block:
+ :x: 576.0
+ :y: 480.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.286995515695065
+ :factor_y: 0.286995515695065
+ :color: 4294967295
+- Block:
+ :x: 1042.0
+ :y: 544.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.358744394618834
+ :factor_y: 0.358744394618834
+ :color: 4294967295
+- Block:
+ :x: 1042.0
+ :y: 704.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.358744394618834
+ :factor_y: 0.358744394618834
+ :color: 4294967295
+- Block:
+ :x: 1202.0
+ :y: 544.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.358744394618834
+ :factor_y: 0.358744394618834
+ :color: 4294967295
+- Block:
+ :x: 1202.0
+ :y: 704.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.358744394618834
+ :factor_y: 0.358744394618834
+ :color: 4294967295
+- Block:
+ :x: 1362.0
+ :y: 576.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.358744394618834
+ :factor_y: 0.358744394618834
+ :color: 4294967295
+- Block:
+ :x: 1010.0
+ :y: 416.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1472.0
+ :y: 448.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1152.0
+ :y: 448.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1248.0
+ :y: 448.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1266.0
+ :y: 416.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1266.0
+ :y: 384.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1266.0
+ :y: 352.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1170.0
+ :y: 416.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1074.0
+ :y: 448.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 128.0
+ :y: 384.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 160.0
+ :y: 384.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 192.0
+ :y: 384.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1664.0
+ :y: 448.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1952.0
+ :y: 448.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1760.0
+ :y: 448.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1856.0
+ :y: 448.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1568.0
+ :y: 448.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Tube:
+ :x: 1920.0
+ :y: 96.0
+ :angle: 5
+ :zorder: 99
+ :factor_x: 0.89261744966443
+ :factor_y: 0.89261744966443
+ :color: 4294967295
+- Tube:
+ :x: 2016.0
+ :y: 0.0
+ :angle: 355
+ :zorder: 98
+ :factor_x: 1.29409275046859
+ :factor_y: 1.29409275046859
+ :color: 4294967295
+- Block:
+ :x: 2048.0
+ :y: 480.0
+ :angle: 0
+ :zorder: 109
+ :factor_x: 0.210762331838565
+ :factor_y: 0.210762331838565
+ :color: 4294967295
+- Block:
+ :x: 2144.0
+ :y: 480.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2240.0
+ :y: 480.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2336.0
+ :y: 448.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2432.0
+ :y: 416.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2528.0
+ :y: 352.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2624.0
+ :y: 320.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2720.0
+ :y: 352.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2816.0
+ :y: 384.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2912.0
+ :y: 416.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2912.0
+ :y: 512.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2912.0
+ :y: 607.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 3232.0
+ :y: 416.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 3232.0
+ :y: 512.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 3232.0
+ :y: 608.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 3232.0
+ :y: 704.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 3136.0
+ :y: 704.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2912.0
+ :y: 704.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2912.0
+ :y: 800.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2912.0
+ :y: 896.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 3008.0
+ :y: 896.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2912.0
+ :y: 992.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 3232.0
+ :y: 800.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 3232.0
+ :y: 896.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 3232.0
+ :y: 960.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 3232.0
+ :y: 320.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 3232.0
+ :y: 224.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 3232.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 3232.0
+ :y: 32.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 3232.0
+ :y: 1056.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 3232.0
+ :y: 1152.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 3232.0
+ :y: 1248.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 3136.0
+ :y: 1248.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 3040.0
+ :y: 1248.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2944.0
+ :y: 1248.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2848.0
+ :y: 1312.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2752.0
+ :y: 1376.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2656.0
+ :y: 1440.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2560.0
+ :y: 1504.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2464.0
+ :y: 1568.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2368.0
+ :y: 1632.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2272.0
+ :y: 1632.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2176.0
+ :y: 1632.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2080.0
+ :y: 1632.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 32.0
+ :y: 384.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 32.0
+ :y: 352.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 32.0
+ :y: 288.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 32.0
+ :y: 320.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 32.0
+ :y: 256.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 32.0
+ :y: 224.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 32.0
+ :y: 192.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 32.0
+ :y: 160.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 32.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 1984.0
+ :y: 1632.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1888.0
+ :y: 1632.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1792.0
+ :y: 1632.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1696.0
+ :y: 1632.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1600.0
+ :y: 1632.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1504.0
+ :y: 1632.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Tube:
+ :x: 992.0
+ :y: 0.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.15315315315315
+ :factor_y: 1.0738255033557
+ :color: 4294967295
+- Tube:
+ :x: 1792.0
+ :y: 32.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.15315315315315
+ :factor_y: 1.0738255033557
+ :color: 4294967295
+- Block:
+ :x: 1408.0
+ :y: 1632.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1312.0
+ :y: 1632.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1216.0
+ :y: 1632.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1120.0
+ :y: 1632.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1024.0
+ :y: 1632.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 928.0
+ :y: 1632.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 832.0
+ :y: 1600.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 736.0
+ :y: 1568.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 640.0
+ :y: 1568.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 544.0
+ :y: 1536.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 448.0
+ :y: 1472.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 352.0
+ :y: 1440.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 256.0
+ :y: 1440.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 160.0
+ :y: 1440.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 64.0
+ :y: 1440.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 64.0
+ :y: 1344.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 64.0
+ :y: 1248.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 64.0
+ :y: 1152.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 256.0
+ :y: 1088.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 352.0
+ :y: 1120.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 160.0
+ :y: 1120.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 192.0
+ :y: 1376.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: -0.0717488789237673
+ :factor_y: -0.0717488789237673
+ :color: 4294967295
+- Block:
+ :x: 192.0
+ :y: 1344.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: -0.0717488789237673
+ :factor_y: -0.0717488789237673
+ :color: 4294967295
+- Block:
+ :x: 224.0
+ :y: 1344.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: -0.0717488789237673
+ :factor_y: -0.0717488789237673
+ :color: 4294967295
+- Block:
+ :x: 256.0
+ :y: 1344.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: -0.0717488789237673
+ :factor_y: -0.0717488789237673
+ :color: 4294967295
+- Block:
+ :x: 288.0
+ :y: 1344.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: -0.0717488789237673
+ :factor_y: -0.0717488789237673
+ :color: 4294967295
+- Block:
+ :x: 288.0
+ :y: 1376.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: -0.0717488789237673
+ :factor_y: -0.0717488789237673
+ :color: 4294967295
+- Tube:
+ :x: 672.0
+ :y: 64.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.15315315315315
+ :factor_y: 1.51496462905859
+ :color: 4294967295
+- CogWheel:
+ :x: 1792.0
+ :y: 320.0
+ :angle: 182.497282580259
+ :zorder: 95
+ :factor_x: 1.68525252525252
+ :factor_y: 1.68525252525252
+ :color: 1526726655
+- Battery:
+ :x: 240.0
+ :y: 1299.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.484848484848485
+ :factor_y: 0.484848484848485
+ :color: 4294967295
+- CogWheel:
+ :x: 2464.0
+ :y: 288.0
+ :angle: 14.156596894522
+ :zorder: 95
+ :factor_x: 1.68525252525252
+ :factor_y: 1.68525252525252
+ :color: 1526726655
+- CogWheel:
+ :x: 2460.0
+ :y: 960.0
+ :angle: 184.497282580259
+ :zorder: 95
+ :factor_x: 1.68525252525252
+ :factor_y: 1.68525252525252
+ :color: 1526726655
+- Tube:
+ :x: 2400.0
+ :y: 0.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.15315315315315
+ :factor_y: 1.0738255033557
+ :color: 4294967295
+- Tube:
+ :x: 2560.0
+ :y: 0.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.15315315315315
+ :factor_y: 1.0738255033557
+ :color: 4294967295
+- Tube:
+ :x: 2816.0
+ :y: 32.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.15315315315315
+ :factor_y: 1.0738255033557
+ :color: 4294967295
+- Tube:
+ :x: 2208.0
+ :y: 64.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.15315315315315
+ :factor_y: 1.0738255033557
+ :color: 4294967295
+- Block:
+ :x: 96.0
+ :y: 384.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 64.0
+ :y: 384.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 320.0
+ :y: 480.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.286995515695065
+ :factor_y: 0.286995515695065
+ :color: 4294967295
+- Block:
+ :x: 192.0
+ :y: 480.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.286995515695067
+ :factor_y: 0.286995515695067
+ :color: 4294967295
+- Block:
+ :x: 448.0
+ :y: 480.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.286995515695065
+ :factor_y: 0.286995515695065
+ :color: 4294967295
+- Block:
+ :x: 704.0
+ :y: 480.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.286995515695065
+ :factor_y: 0.286995515695065
+ :color: 4294967295
+- Block:
+ :x: 832.0
+ :y: 480.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.286995515695065
+ :factor_y: 0.286995515695065
+ :color: 4294967295
+- Block:
+ :x: 929.0
+ :y: 433.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.143497757847531
+ :factor_y: 0.143497757847531
+ :color: 4294967295
+- Block:
+ :x: 929.0
+ :y: 497.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.143497757847531
+ :factor_y: 0.143497757847531
+ :color: 4294967295
+- Saw:
+ :x: 2304.0
+ :y: 42973.9722397467
+ :angle: 148.973186119936
+ :zorder: 100
+ :factor_x: 0.317794486215539
+ :factor_y: 0.320401002506266
+ :color: 4294967295
+- Saw:
+ :x: 2016.0
+ :y: 32173.9806240522
+ :angle: 341.066180171485
+ :zorder: 100
+ :factor_x: 0.398395989974937
+ :factor_y: 0.401002506265664
+ :color: 4294967295
+- Saw:
+ :x: 1696.0
+ :y: 14500.9946086338
+ :angle: 51.8801650144799
+ :zorder: 100
+ :factor_x: 0.958395989974934
+ :factor_y: 0.961002506265664
+ :color: 4294967295
+- Saw:
+ :x: 1056.0
+ :y: 24036.9954416873
+ :angle: 324.855862936146
+ :zorder: 100
+ :factor_x: 0.637794486215539
+ :factor_y: 0.640401002506266
+ :color: 4294967295
+- Saw:
+ :x: 1344.0
+ :y: 24036.9954416873
+ :angle: 327.855862936147
+ :zorder: 100
+ :factor_x: 0.637794486215539
+ :factor_y: 0.640401002506266
+ :color: 4294967295
+- Block:
+ :x: 2048.0
+ :y: 1056.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2144.0
+ :y: 1056.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2240.0
+ :y: 1056.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2528.0
+ :y: 1056.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2336.0
+ :y: 1056.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2432.0
+ :y: 1056.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2624.0
+ :y: 1024.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2720.0
+ :y: 1024.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 2816.0
+ :y: 1024.0
+ :angle: 0
+ :zorder: 99
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1952.0
+ :y: 1056.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1856.0
+ :y: 1088.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1760.0
+ :y: 1088.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1664.0
+ :y: 1088.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1568.0
+ :y: 1088.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1472.0
+ :y: 1088.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1376.0
+ :y: 1088.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1280.0
+ :y: 1120.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1184.0
+ :y: 1120.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 832.0
+ :y: 1152.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 448.0
+ :y: 1152.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 544.0
+ :y: 1152.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 640.0
+ :y: 1152.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 736.0
+ :y: 1152.0
+ :angle: 0
+ :zorder: 99
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 928.0
+ :y: 1120.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1024.0
+ :y: 1120.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 1120.0
+ :y: 1120.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.2152466367713
+ :factor_y: 0.2152466367713
+ :color: 4294967295
+- Block:
+ :x: 896.0
+ :y: 1184.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237663
+ :factor_y: 0.0717488789237663
+ :color: 4294967295
+- Block:
+ :x: 1344.0
+ :y: 1152.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237663
+ :factor_y: 0.0717488789237663
+ :color: 4294967295
+- Block:
+ :x: 1920.0
+ :y: 1120.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237663
+ :factor_y: 0.0717488789237663
+ :color: 4294967295
+- Block:
+ :x: 2592.0
+ :y: 1088.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237663
+ :factor_y: 0.0717488789237663
+ :color: 4294967295
+- Block:
+ :x: 2880.0
+ :y: 1056.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237663
+ :factor_y: 0.0717488789237663
+ :color: 4294967295
+- Saw:
+ :x: 2176.0
+ :y: 42813.9722397467
+ :angle: 151.973186119936
+ :zorder: 100
+ :factor_x: 0.317794486215539
+ :factor_y: 0.320401002506266
+ :color: 4294967295
+- Saw:
+ :x: 1280.0
+ :y: 30824.098278027
+ :angle: 268.052196057188
+ :zorder: 100
+ :factor_x: 0.47739348370927
+ :factor_y: 0.48
+ :color: 4294967295
+- Saw:
+ :x: 1055.0
+ :y: 91481.6743590043
+ :angle: 19.6523317612529
+ :zorder: 100
+ :factor_x: 0.156390977443606
+ :factor_y: 0.158997493734336
+ :color: 4294967295
+- Saw:
+ :x: 960.0
+ :y: 91545.6743590044
+ :angle: 22.6523317612509
+ :zorder: 100
+ :factor_x: 0.156390977443606
+ :factor_y: 0.158997493734336
+ :color: 4294967295
+- Saw:
+ :x: 1120.0
+ :y: 91545.6743590044
+ :angle: 22.6523317612509
+ :zorder: 100
+ :factor_x: 0.156390977443606
+ :factor_y: 0.158997493734336
+ :color: 4294967295
+- Saw:
+ :x: 864.0
+ :y: 91481.6743590043
+ :angle: 25.6523317612509
+ :zorder: 100
+ :factor_x: 0.156390977443606
+ :factor_y: 0.158997493734336
+ :color: 4294967295
+- Saw:
+ :x: 1247.0
+ :y: 27755.9489495749
+ :angle: 283.946457785343
+ :zorder: 100
+ :factor_x: 0.477192982456137
+ :factor_y: 0.479799498746867
+ :color: 4294967295
+- Saw:
+ :x: 1088.0
+ :y: 54674.3885593251
+ :angle: 243.763506646168
+ :zorder: 100
+ :factor_x: 0.236591478696738
+ :factor_y: 0.239197994987469
+ :color: 4294967295
+- Saw:
+ :x: 960.0
+ :y: 54674.3885593251
+ :angle: 246.763506646169
+ :zorder: 100
+ :factor_x: 0.236591478696738
+ :factor_y: 0.239197994987469
+ :color: 4294967295
+- Block:
+ :x: 416.0
+ :y: 96.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 384.0
+ :y: 64.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 384.0
+ :y: 96.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 416.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 416.0
+ :y: 160.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 320.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 192.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 288.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 256.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 352.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 384.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 384.0
+ :y: 160.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 384.0
+ :y: 192.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 224.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Saw:
+ :x: 2272.0
+ :y: 1545.89456467036
+ :angle: 146.639909411433
+ :zorder: 100
+ :factor_x: 0.398395989974937
+ :factor_y: 0.401002506265664
+ :color: 4294967295
+- Saw:
+ :x: 1792.0
+ :y: 1492.18378106955
+ :angle: 352.539543057765
+ :zorder: 100
+ :factor_x: 0.79859649122807
+ :factor_y: 0.801203007518797
+ :color: 4294967295
+- Saw:
+ :x: 2112.0
+ :y: 1472.55311973017
+ :angle: 50.5639527921968
+ :zorder: 100
+ :factor_x: 0.237794486215539
+ :factor_y: 0.240401002506266
+ :color: 4294967295
+- Saw:
+ :x: 1504.0
+ :y: 1475.21132713439
+ :angle: 4.15384615445959
+ :zorder: 100
+ :factor_x: 0.23719298245614
+ :factor_y: 0.239799498746867
+ :color: 4294967295
+- Saw:
+ :x: 1344.0
+ :y: 1470.10650887575
+ :angle: 7.15384615446169
+ :zorder: 100
+ :factor_x: 0.23719298245614
+ :factor_y: 0.239799498746867
+ :color: 4294967295
+- Saw:
+ :x: 1152.0
+ :y: 1442.5380388842
+ :angle: 10.1538461544596
+ :zorder: 100
+ :factor_x: 0.23719298245614
+ :factor_y: 0.239799498746867
+ :color: 4294967295
+- Saw:
+ :x: 992.0
+ :y: 1484.67432950191
+ :angle: 30.4853091222945
+ :zorder: 100
+ :factor_x: 0.156992481203007
+ :factor_y: 0.159598997493734
+ :color: 4294967295
+- Saw:
+ :x: 800.0
+ :y: 1484.67432950191
+ :angle: 33.4853091222945
+ :zorder: 100
+ :factor_x: 0.156992481203007
+ :factor_y: 0.159598997493734
+ :color: 4294967295
+- Saw:
+ :x: 1248.0
+ :y: 1538.26656151419
+ :angle: 184.999590383916
+ :zorder: 100
+ :factor_x: 0.317794486215539
+ :factor_y: 0.320401002506266
+ :color: 4294967295
+- Saw:
+ :x: 928.0
+ :y: 1516.67432950192
+ :angle: 36.4853091222945
+ :zorder: 100
+ :factor_x: 0.156992481203007
+ :factor_y: 0.159598997493734
+ :color: 4294967295
+- Saw:
+ :x: 672.0
+ :y: 1454.14495530015
+ :angle: 33.4853091222945
+ :zorder: 100
+ :factor_x: 0.156992481203007
+ :factor_y: 0.159598997493734
+ :color: 4294967295
+- Block:
+ :x: 1120.0
+ :y: 64.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1120.0
+ :y: 96.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1120.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1120.0
+ :y: 160.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1120.0
+ :y: 192.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1152.0
+ :y: 192.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1184.0
+ :y: 192.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1216.0
+ :y: 192.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1440.0
+ :y: 192.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1152.0
+ :y: 64.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1216.0
+ :y: 160.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1184.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1216.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1280.0
+ :y: 192.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1280.0
+ :y: 160.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1312.0
+ :y: 192.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1344.0
+ :y: 192.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1376.0
+ :y: 192.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1376.0
+ :y: 160.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1376.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1376.0
+ :y: 96.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1280.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1280.0
+ :y: 64.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1280.0
+ :y: 96.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1312.0
+ :y: 64.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1344.0
+ :y: 64.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1376.0
+ :y: 64.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1472.0
+ :y: 192.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1472.0
+ :y: 64.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1504.0
+ :y: 64.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1440.0
+ :y: 64.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1440.0
+ :y: 96.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1440.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1472.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1504.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1504.0
+ :y: 192.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1504.0
+ :y: 160.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1184.0
+ :y: 64.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1216.0
+ :y: 64.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1568.0
+ :y: 192.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1600.0
+ :y: 192.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1632.0
+ :y: 192.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1664.0
+ :y: 192.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1664.0
+ :y: 160.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1664.0
+ :y: 64.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1664.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1568.0
+ :y: 64.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1568.0
+ :y: 96.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1568.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1568.0
+ :y: 160.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 1664.0
+ :y: 96.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 448.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 160.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 64.0
+ :y: 320.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 32.0
+ :y: 96.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 32.0
+ :y: 64.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 96.0
+ :y: 224.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 128.0
+ :y: 224.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.0717488789237668
+ :factor_y: 0.0717488789237668
+ :color: 4294967295
+- Block:
+ :x: 608.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 99
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 768.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 864.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 576.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 93
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 736.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 92
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
+- Block:
+ :x: 896.0
+ :y: 128.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.071748878923767
+ :factor_y: 0.071748878923767
+ :color: 4294967295
diff --git a/gfx.svg b/gfx.svg
new file mode 100644
index 0000000..46caaff
--- /dev/null
+++ b/gfx.svg
@@ -0,0 +1,1364 @@
+
+
+
+
diff --git a/intro.yml b/intro.yml
new file mode 100644
index 0000000..63b69c8
--- /dev/null
+++ b/intro.yml
@@ -0,0 +1,2 @@
+--- []
+
diff --git a/media/ball.bmp b/media/ball.bmp
new file mode 100644
index 0000000..471a16a
Binary files /dev/null and b/media/ball.bmp differ
diff --git a/media/battery.png b/media/battery.png
new file mode 100644
index 0000000..83957d1
Binary files /dev/null and b/media/battery.png differ
diff --git a/media/beach.bmp b/media/beach.bmp
new file mode 100644
index 0000000..b0b0260
Binary files /dev/null and b/media/beach.bmp differ
diff --git a/media/beach_block.png b/media/beach_block.png
new file mode 100644
index 0000000..8592458
Binary files /dev/null and b/media/beach_block.png differ
diff --git a/media/beach_droid.bmp b/media/beach_droid.bmp
new file mode 100644
index 0000000..7c40346
Binary files /dev/null and b/media/beach_droid.bmp differ
diff --git a/media/beach_droid.gal b/media/beach_droid.gal
new file mode 100644
index 0000000..03d8a73
Binary files /dev/null and b/media/beach_droid.gal differ
diff --git a/media/black_block.png b/media/black_block.png
new file mode 100644
index 0000000..c8853c5
Binary files /dev/null and b/media/black_block.png differ
diff --git a/media/bubble.png b/media/bubble.png
new file mode 100644
index 0000000..600428e
Binary files /dev/null and b/media/bubble.png differ
diff --git a/media/circle.png b/media/circle.png
new file mode 100644
index 0000000..4eb8ece
Binary files /dev/null and b/media/circle.png differ
diff --git a/media/cloud.png b/media/cloud.png
new file mode 100644
index 0000000..ef366d1
Binary files /dev/null and b/media/cloud.png differ
diff --git a/media/cog_wheel.png b/media/cog_wheel.png
new file mode 100644
index 0000000..c69d164
Binary files /dev/null and b/media/cog_wheel.png differ
diff --git a/media/dirt.png b/media/dirt.png
new file mode 100644
index 0000000..b448243
Binary files /dev/null and b/media/dirt.png differ
diff --git a/media/drink.bmp b/media/drink.bmp
new file mode 100644
index 0000000..de205c8
Binary files /dev/null and b/media/drink.bmp differ
diff --git a/media/drink.gal b/media/drink.gal
new file mode 100644
index 0000000..1eac23e
Binary files /dev/null and b/media/drink.gal differ
diff --git a/media/drink_droid.bmp b/media/drink_droid.bmp
new file mode 100644
index 0000000..ca3c818
Binary files /dev/null and b/media/drink_droid.bmp differ
diff --git a/media/drink_droid.gal b/media/drink_droid.gal
new file mode 100644
index 0000000..93cab03
Binary files /dev/null and b/media/drink_droid.gal differ
diff --git a/media/droid.gal b/media/droid.gal
new file mode 100644
index 0000000..f4a0c82
Binary files /dev/null and b/media/droid.gal differ
diff --git a/media/droid_11x15.bmp b/media/droid_11x15.bmp
new file mode 100644
index 0000000..9114a9b
Binary files /dev/null and b/media/droid_11x15.bmp differ
diff --git a/media/fireball.png b/media/fireball.png
new file mode 100644
index 0000000..72948f6
Binary files /dev/null and b/media/fireball.png differ
diff --git a/media/pause_droid.gal b/media/pause_droid.gal
new file mode 100644
index 0000000..5bec3a1
Binary files /dev/null and b/media/pause_droid.gal differ
diff --git a/media/saw.png b/media/saw.png
new file mode 100644
index 0000000..9b19d98
Binary files /dev/null and b/media/saw.png differ
diff --git a/media/star.png b/media/star.png
new file mode 100644
index 0000000..8d0a493
Binary files /dev/null and b/media/star.png differ
diff --git a/media/talk_bubble.png b/media/talk_bubble.png
new file mode 100644
index 0000000..5a623c0
Binary files /dev/null and b/media/talk_bubble.png differ
diff --git a/media/tube.png b/media/tube.png
new file mode 100644
index 0000000..4a34155
Binary files /dev/null and b/media/tube.png differ
diff --git a/outdoor.yml b/outdoor.yml
new file mode 100644
index 0000000..d9986fb
--- /dev/null
+++ b/outdoor.yml
@@ -0,0 +1,209 @@
+---
+- Cloud:
+ :x: 510.488207045311
+ :y: 304.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.05610561056105
+ :factor_y: 1.37931034482759
+ :color: 3506438143
+- Cloud:
+ :x: 874.473141318021
+ :y: 176.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.58415841584158
+ :factor_y: 1.68430636167065
+ :color: 2969567231
+- Cloud:
+ :x: 1123.49897643112
+ :y: 64.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.58415841584158
+ :factor_y: 1.68430636167065
+ :color: 2969567231
+- Cloud:
+ :x: 1427.70118298527
+ :y: 256.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.003300330033
+ :factor_y: 1.10344827586207
+ :color: 3506438143
+- Cloud:
+ :x: -994.714383187335
+ :y: 112.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.003300330033
+ :factor_y: 1.10344827586207
+ :color: 3506438143
+- Cloud:
+ :x: 264.98037562447
+ :y: 160.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.58415841584158
+ :factor_y: 1.68430636167065
+ :color: 2969567231
+- Cloud:
+ :x: 1439.42253863218
+ :y: 48.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.003300330033
+ :factor_y: 1.10344827586207
+ :color: 3506438143
+- Cloud:
+ :x: 1325.63449779569
+ :y: 272.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.58415841584158
+ :factor_y: 1.68430636167065
+ :color: 2969567231
+- Cloud:
+ :x: 1276.53433382172
+ :y: 112.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.003300330033
+ :factor_y: 1.10344827586207
+ :color: 3506438143
+- Cloud:
+ :x: 1756.33210777323
+ :y: 208.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.58415841584158
+ :factor_y: 1.68430636167065
+ :color: 2667577343
+- Cloud:
+ :x: 3253.69578022453
+ :y: 64.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.58415841584158
+ :factor_y: 1.68430636167065
+ :color: 2969567231
+- Cloud:
+ :x: 2634.65231360351
+ :y: 256.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.844884488448845
+ :factor_y: 0.856720154774098
+ :color: 3305111551
+- Cloud:
+ :x: 3454.73597261713
+ :y: 192.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.844884488448845
+ :factor_y: 0.856720154774098
+ :color: 3305111551
+- Cloud:
+ :x: 1777.14538918184
+ :y: 96.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.58415841584158
+ :factor_y: 1.68430636167065
+ :color: 2969567231
+- Cloud:
+ :x: 3693.67851595294
+ :y: 224.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.844884488448845
+ :factor_y: 0.856720154774098
+ :color: 3305111551
+- Cloud:
+ :x: 3179.26322010255
+ :y: 96.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.58415841584158
+ :factor_y: 1.68430636167065
+ :color: 2969567231
+- Cloud:
+ :x: 3074.74891165806
+ :y: 224.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.58415841584158
+ :factor_y: 1.68430636167065
+ :color: 2969567231
+- Dirt:
+ :x: 192.0
+ :y: 848.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.00502512562814
+ :factor_y: 1.02673796791444
+ :color: 4294967295
+- Dirt:
+ :x: 592.0
+ :y: 848.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.00502512562814
+ :factor_y: 1.02673796791444
+ :color: 4294967295
+- Battery:
+ :x: 832.0
+ :y: 384.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.00900900900901
+ :factor_y: 1.11304347826087
+ :color: 4294967295
+- Battery:
+ :x: 496.0
+ :y: 400.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.00900900900901
+ :factor_y: 1.11304347826087
+ :color: 4294967295
+- Dirt:
+ :x: 992.0
+ :y: 848.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 1.00502512562814
+ :factor_y: 1.02673796791444
+ :color: 4294967295
+- Dirt:
+ :x: 64.0
+ :y: 592.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.36180904522613
+ :factor_y: 0.342245989304813
+ :color: 4294967295
+- Dirt:
+ :x: 208.0
+ :y: 592.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.36180904522613
+ :factor_y: 0.342245989304813
+ :color: 4294967295
+- Dirt:
+ :x: 352.0
+ :y: 592.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.36180904522613
+ :factor_y: 0.342245989304813
+ :color: 4294967295
+- Dirt:
+ :x: 512.0
+ :y: 576.0
+ :angle: 0
+ :zorder: 100
+ :factor_x: 0.36180904522613
+ :factor_y: 0.342245989304813
+ :color: 4294967295
diff --git a/src/collectables.rb b/src/collectables.rb
new file mode 100644
index 0000000..43d6fa6
--- /dev/null
+++ b/src/collectables.rb
@@ -0,0 +1,45 @@
+class Collectable < GameObject
+ traits :timer, :effect, :velocity
+ trait :bounding_box, :debug => false
+
+ attr_reader :title, :score
+
+ def die
+ puff_effect
+ end
+
+ def puff_effect
+ self.collidable = false # Stops further collisiondetection
+ self.rotation_rate = 5
+ self.scale_rate = 0.02
+ self.fade_rate = -5
+ self.velocity_y = -2
+ after(1000) { destroy }
+ end
+end
+
+#
+# BATTERY
+#
+class Battery < Collectable
+ def setup
+ @image = Image["battery.png"]
+ @title = "sparkling fresh battery acid"
+ @score = 1000
+ cache_bounding_box
+ end
+end
+
+class Drink < Collectable
+ def setup
+ @animation = Animation.new(:file => "drink.bmp", :size => [5,9])
+ @image = @animation.first
+ @title = "frozen margarita"
+ @score = 100
+ cache_bounding_box
+ end
+
+ def update
+ @image = @animation.next
+ end
+end
\ No newline at end of file
diff --git a/src/decoration.rb b/src/decoration.rb
new file mode 100644
index 0000000..6180251
--- /dev/null
+++ b/src/decoration.rb
@@ -0,0 +1,20 @@
+class PuffText < Text
+ traits :timer, :effect, :velocity
+
+ def initialize(text, options = {})
+ super(text, :height => 40, :rotation_center => :center, :x => options[:from].x, :y => 400)
+ puff_effect
+ end
+
+ #def setup
+ # self.height = 40
+ # puff_effect
+ #end
+
+ def puff_effect
+ self.scale_rate = 0.005
+ self.fade_rate = -1
+ self.velocity_y = -1
+ after(2000) { destroy }
+ end
+end
diff --git a/src/effects.rb b/src/effects.rb
new file mode 100644
index 0000000..c72a000
--- /dev/null
+++ b/src/effects.rb
@@ -0,0 +1,30 @@
+class Effect < GameObject
+ traits :effect, :velocity
+
+ def initialize(options = {})
+ super
+ @amount = (options[:amount] || 5).to_i - 1
+ @child = options[:child]
+ self.size = options[:size] || [50, 50]
+
+ @amount.times { self.class.create(options.merge(:child => true)) } unless @child
+ end
+
+end
+
+
+class SmokePuff < Effect
+ def setup
+ @image = Image["circle.png"]
+ self.scale_rate = rand/100
+ self.alpha = 70
+ self.fade_rate = -4
+ self.velocity = rand-0.5, rand-0.5
+ end
+
+ def update
+ destroy if self.alpha == 0
+ end
+end
+
+
diff --git a/src/enemy.rb b/src/enemy.rb
new file mode 100644
index 0000000..a3185c8
--- /dev/null
+++ b/src/enemy.rb
@@ -0,0 +1,58 @@
+#
+# A FIREBALL
+#
+class FireBall < GameObject
+ traits :velocity, :collision_detection
+ trait :bounding_circle, :scale => 0.7
+
+ def setup
+ @animation = Animation.new(:file => "fireball.png", :size => [32,32], :delay => 20)
+ @image = @animation.first
+ self.mode = :additive
+ self.factor = 3
+ self.velocity_y = 1
+ self.zorder = 200
+ self.rotation_center = :center
+ end
+
+ def update
+ @image = @animation.next
+ @angle += 2
+ end
+end
+
+#
+# COG WHEEL
+#
+class CogWheel < GameObject
+ traits :bounding_circle, :collision_detection, :timer
+ attr_accessor :angle_velocity
+
+ def setup
+ @image = Image["cog_wheel.png"]
+ @angle_velocity = 1 / self.factor_x
+ end
+
+ def update
+ self.angle += @angle_velocity
+ end
+end
+
+#
+# SAW
+#
+class Saw < GameObject
+ traits :bounding_circle, :collision_detection, :timer, :velocity
+ attr_accessor :angle_velocity
+
+ def setup
+ @image = Image["saw.png"]
+ @angle_velocity = 3.0 / self.factor_x.to_f
+ self.velocity_y = 1.0 / self.factor_x.to_f
+ end
+
+ def update
+ self.angle += @angle_velocity
+ end
+end
+
diff --git a/src/intro.rb b/src/intro.rb
new file mode 100644
index 0000000..8f2a9ab
--- /dev/null
+++ b/src/intro.rb
@@ -0,0 +1,44 @@
+class Intro < GameState
+ trait :timer
+
+ def setup
+ pop_game_state
+
+ self.input = { [:space, :esc] => :exit }
+ @strings = [
+ "At last... some peace and quiet after 10 years without a vacation.", # 0
+ "Just kick back, relax and work on my tan. I've really deserved this.", # 4
+ "* BOOM BOOM BOOM BOOM *", # 8
+ "Hey, keep that music down will ya?", # 12
+ "* CAW CAAA-CAAA CAAAW * ", # 16
+ "...God loved the birds and invented trees. Robot loved the birds and built cages.", # 20
+ "Mmm, this drink is really tasty", # 24
+ "", # 28
+ "..." # 32
+ ]
+
+ GameObject.create(:image => "beach.bmp", :x => 0, :y => $window.height, :rotation_center => :bottom_left, :scale => 5)
+
+ anim = Animation.new(:file => "beach_droid.bmp", :size => [11,18])
+ @droid = GameObject.create(:x => 402, :y => $window.height-200, :animation => anim, :image => anim.first, :scale => 15)
+ @drink = Drink.create(:x => 400, :y => $window.height-200, :scale => 15)
+
+ @story = Text.create(@strings.shift, :x => 100, :y => 30, :size => 40, :max_width => 400, :color => Color::WHITE)
+ every(4000) { @story.text = @strings.shift }
+ after(7 * 4000) { Ball.create(:x => $window.width, :y => 300, :velocity_x => -6, :scale => 5)}
+ end
+
+ def update
+ fill_gradient(:from => Color::CYAN, :to => Color::BLUE)
+
+ if Ball.all.first && Ball.all.first.x < @drink.x # Ball hits the drink, robot gets crazy up in this mtfckr.
+ if @droid.angle == 0
+ @droid.image = @droid.options[:animation].next
+ @droid.angle = -90
+ after(4000) { @droid.image = @droid.options[:animation].next; }
+ end
+ end
+
+ super
+ end
+end
diff --git a/src/items.rb b/src/items.rb
new file mode 100644
index 0000000..1823546
--- /dev/null
+++ b/src/items.rb
@@ -0,0 +1,94 @@
+
+#
+# TUBE
+#
+class Tube < GameObject
+ traits :bounding_box, :timer
+ def setup
+ @image = Image["tube.png"]
+ every(3000) { fire }
+ cache_bounding_box
+ end
+
+ def fire
+ return if game_state.viewport.outside?(self.bb.centerx, self.bb.bottom)
+ FireBall.create(:x => self.bb.centerx - rand(10), :y => self.bb.bottom - rand(10))
+ end
+end
+
+
+#
+# CLOUD
+#
+class Cloud < GameObject
+ traits :bounding_box, :velocity
+ def setup
+ @image = Image["cloud.png"]
+ cache_bounding_box
+ self.velocity_x = rand - 0.5
+ end
+end
+
+
+class MovingObject < GameObject
+ traits :velocity, :bounding_box, :collision_detection
+
+ def initialize(options = {})
+ super
+
+ @image = Image["#{self.filename}.bmp"]
+ self.acceleration_y = 0.5
+ pause!
+ end
+
+ def self.solid
+ all.select { |block| block.alpha == 255 }
+ end
+
+ def self.inside_viewport
+ all.select { |block| block.game_state.viewport.inside?(block) }
+ end
+
+ def title
+ "-new title needed-"
+ end
+end
+
+
+class Ball < MovingObject
+
+ def setup
+ self.velocity_x = -4
+ end
+
+ def bounce
+ self.velocity_y = -self.velocity_y
+ end
+
+ def title
+ "an annoying beachball"
+ end
+end
+
+#
+# BLOCK, our basic level building block
+#
+class Block < GameObject
+ traits :bounding_box, :collision_detection
+
+ def setup
+ @image = Image["#{self.filename}.png"]
+ end
+
+ def self.solid
+ all.select { |block| block.alpha == 255 }
+ end
+
+ def self.inside_viewport
+ all.select { |block| block.game_state.viewport.inside?(block) }
+ end
+end
+
+class BeachBlock < Block; end
+class BlackBlock < Block; end
+class Dirt < Block; end
\ No newline at end of file
diff --git a/src/level.rb b/src/level.rb
new file mode 100644
index 0000000..a52cb81
--- /dev/null
+++ b/src/level.rb
@@ -0,0 +1,132 @@
+class Level < GameState
+ traits :viewport, :timer
+
+ def initialize(options = {})
+ super
+
+ self.input = { :escape => :exit, :e => :edit }
+ self.viewport.game_area = [0, 0, 6000, 1000]
+ load_game_objects(:debug => DEBUG)
+
+ @droid = Droid.create(:x => 100, :y => 500)
+
+ self.viewport.lag = 0.95
+
+ @saved_x, @saved_y = [100, 300]
+ every(5000) { save_player_position }
+ end
+
+ def edit
+ push_game_state GameStates::Edit.new(:grid => [16,16], :except => [Droid], :debug => true)
+ end
+
+ def restore_player_position
+ @droid.x, @droid.y = @saved_x, @saved_y
+ end
+
+ def save_player_position
+ @saved_x, @saved_y = @droid.x, @droid.y if @droid.collidable && !@jumping
+ end
+
+ def update
+ off = (@droid.last_direction == :right) ? 200 : -200
+ self.viewport.x_target = @droid.x - $window.width/2 + off
+ self.viewport.y_target = @droid.y - $window.height/2 - 200
+
+ @droid.each_collision(Battery) do |player, collectable|
+ player.level_up
+ collectable.die
+ PuffText.create("#{collectable.title} +#{collectable.score}", :from => collectable)
+ end
+
+ @droid.each_collision(Drink) do |player, collectable|
+ collectable.die
+ PuffText.create("#{collectable.title} +#{collectable.score}", :from => collectable)
+ end
+
+ $window.caption = "#{@droid.x.to_i}/#{@droid.y.to_i} - viewport x/y: #{self.viewport.x.to_i}/#{self.viewport.y.to_i} - FPS: #{$window.fps}"
+ super
+ end
+
+ def first_terrain_collision(object)
+ object.each_collision(@terrain_class.all) do |me, block|
+ return block
+ end
+ nil
+ end
+end
+
+
+#
+# AT THE BEACH
+#
+class Beach < Level
+ def setup
+ @terrain_class = BeachBlock
+ end
+
+ def draw
+ fill_gradient(:from => Color::BLUE, :to => Color::CYAN)
+ super
+ end
+
+ def update
+ super
+
+ Ball.inside_viewport.each do |ball|
+ ball.unpause!
+ if block = first_terrain_collision(ball)
+ ball.velocity_y = -ball.velocity_y
+ ball.y += ball.velocity_y
+ end
+ end
+
+ end
+
+end
+
+
+#
+# THE GREAT OUTDOORS
+#
+class Outdoor < Level
+ def setup
+ @terrain_class = Dirt
+ end
+end
+
+#
+# THE FACTORY
+#
+class Factory < Level
+ def setup
+ @terrain_class = BlackBlock
+
+ # Reverse the cog wheels in relation to eachother
+ CogWheel.each_collision(CogWheel) do |cog_wheel, cog_wheel_2|
+ cog_wheel_2.angle_velocity = -cog_wheel.angle_velocity
+ end
+ end
+
+ def update
+ super
+
+ FireBall.each_collision(@terrain_blocks) do |fire_ball, block|
+ fire_ball.destroy
+ end
+
+ # Makes all saw pendle up and down between Y-coordinate 1000 - 1500
+ # TODO: Not a very flexible sollution, how about setting out circle,rects,lines in editor..
+ # .. when then can be used for this kind of stuff?
+
+ Saw.all.select {|saw| saw.y < 1300 || saw.y > 1550 }.each do |saw|
+ saw.velocity_y = -saw.velocity_y
+ saw.y += saw.velocity_y * saw.factor_y
+ end
+
+ @droid.each_collision(FireBall, Saw) do |player, evil_object|
+ player.die
+ end
+
+ end
+end
diff --git a/src/player.rb b/src/player.rb
new file mode 100644
index 0000000..4635d0b
--- /dev/null
+++ b/src/player.rb
@@ -0,0 +1,104 @@
+#
+# DROID
+#
+class Droid < Chingu::GameObject
+ trait :bounding_box, :scale => 0.8, :debug => false
+ traits :timer, :collision_detection , :timer, :velocity
+ attr_reader :last_direction
+
+ def setup
+ self.input = { [:holding_left, :holding_a] => :holding_left,
+ [:holding_right, :holding_d] => :holding_right,
+ [:down, :s] => :down,
+ [:up, :w] => :jump,
+ }
+
+ # Load the full animation from tile-file media/droid.bmp
+ @animations = Chingu::Animation.new(:file => "droid_11x15.bmp")
+ @animations.frame_names = { :scan => 0..5, :up => 6..7, :down => 8..9, :left => 10..11, :right => 12..13 }
+
+ @last_direction = :right
+ @animation = @animations[:scan]
+ @image = @animation.first
+ @speed = 4
+ @jumps = 0
+
+ self.factor = 4
+ self.zorder = 1000
+ self.acceleration_y = 0.5
+ self.max_velocity = 20
+ self.rotation_center = :bottom_center
+ end
+
+ def level_up
+ new_factor = self.factor + 3
+ between(1,500) { self.factor += 0.1 }.then { self.factor = new_factor }
+ end
+
+ def jumping
+ @jumps > 0
+ end
+
+ def die
+ self.collidable = false
+ @color = Color::RED
+ between(1,600) { self.velocity_y = 0; self.scale += 0.2; self.alpha -= 5; }.then { resurrect }
+ end
+
+ def resurrect
+ self.alpha = 255
+ self.factor = 3
+ self.collidable = true
+ @color = Color::WHITE
+ game_state.restore_player_position
+ end
+
+ def holding_left
+ move(-@speed, 0)
+ @animation = @animations[:left]
+ end
+
+ def holding_right
+ move(@speed, 0)
+ @animation = @animations[:right]
+ end
+
+ def down
+ self.velocity_y = 20 if @jumps > 0
+ self.velocity_y = 30 if @jumps > 1
+ @animation = @animations[:down]
+ end
+
+ def jump
+ return if @jumps == 2
+ SmokePuff.create(:x => self.x, :size => [self.factor*10, self.factor*10], :y => self.y, :amount => 2) if @jumps == 1
+
+ @jumps += 1
+ self.velocity_y = -13
+ @animation = @animations[:up]
+ end
+
+ def move(x,y)
+ @last_direction = x > 0 ? :right : :left
+ @x += x
+ @x = previous_x if game_state.first_terrain_collision(self)
+ end
+
+ def update
+ @image = @animation.next
+
+ if block = game_state.first_terrain_collision(self)
+ if self.velocity_y < 0
+ self.y = block.bb.bottom + self.height
+ else
+ SmokePuff.create(:x => self.x, :y => self.y, :size => [self.factor*10, self.factor*10],:amount => self.velocity_y/5) if self.velocity_y > 15
+ @jumps = 0
+ self.y = block.bb.top-1
+ end
+ self.velocity_y = 0
+ end
+
+ # puts "#{@x} != #{@previous_x} || #{@y} != #{@previous_y}"
+ @animation = @animations[:scan] unless @x != @previous_x
+ end
+end
diff --git a/start_game.rb b/start_game.rb
new file mode 100644
index 0000000..330d27d
--- /dev/null
+++ b/start_game.rb
@@ -0,0 +1,30 @@
+#!/usr/bin/env ruby
+require 'rubygems'
+require File.join(File.dirname($0), "../", "chingu", "lib", "chingu")
+#require 'chingu'
+include Gosu
+include Chingu
+
+require_rel 'src/*'
+DEBUG = false
+
+class Game < Chingu::Window
+ def initialize
+ super(1000,800)
+ p Gosu::VERSION
+ end
+
+ def setup
+ retrofy
+
+ self.factor = 1
+
+ #push_game_state(Outdoor)
+
+ push_game_state(Beach.new)
+ #push_game_state(Intro)
+ #push_game_state(Factory)
+ end
+end
+
+Game.new.show
\ No newline at end of file