chingu 0.7.6.4 → 0.7.6.5

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1,4 +1,5 @@
1
- *.gem
2
- pkg
1
+ *.gem
2
+ pkg
3
3
  .gem
4
- .git
4
+ .git
5
+ coverage
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --colour
2
+ --format documentation
data/README.rdoc CHANGED
@@ -153,7 +153,7 @@ You're probably familiar with this very common Gosu pattern:
153
153
  Game.new.show # Start the Game update/draw loop!
154
154
 
155
155
 
156
- Chingu doesn't change the fundamental concept/flow of Gosu, but it will make the above code cleaner:
156
+ Chingu doesn't change the fundamental concept/flow of Gosu, but it will make the above code shorter:
157
157
 
158
158
  #
159
159
  # We use Chingu::Window instead of Gosu::Window
@@ -175,7 +175,7 @@ Chingu doesn't change the fundamental concept/flow of Gosu, but it will make the
175
175
  # The accessors image,x,y,zorder,angle,factor_x,factor_y,center_x,center_y,mode,alpha.
176
176
  # We also get a default #draw which draws the image to screen with the parameters listed above.
177
177
  # You might recognize those from #draw_rot - http://www.libgosu.org/rdoc/classes/Gosu/Image.html#M000023
178
- # And in it's core, that's what Chingu::GameObject is, an encapsulation of draw_rot with some extra cheese.
178
+ # And in it's core, that's what Chingu::GameObject is, an encapsulation of draw_rot with some extras.
179
179
  # For example, we get automatic calls to draw/update with Chingu::GameObject, which usually is what you want.
180
180
  # You could stop this by doing: @player = Player.new(:draw => false, :update => false)
181
181
  #
@@ -529,40 +529,40 @@ yes you guessed it, as class methods. If initialize_trait is defined inside Clas
529
529
 
530
530
  A simple trait could be:
531
531
 
532
- module Chingu
533
- module Trait
534
- module Inspect
532
+ module Chingu
533
+ module Trait
534
+ module Inspect
535
535
 
536
- #
537
- # methods namespaced to ClassMethods get's extended as ... class methods!
538
- #
539
- module ClassMethods
540
- def initialize_trait(options)
536
+ #
537
+ # methods namespaced to ClassMethods get's extended as ... class methods!
538
+ #
539
+ module ClassMethods
540
+ def initialize_trait(options)
541
541
  # possible initialize stuff here
542
+ end
543
+
544
+ def inspect
545
+ "There's {self.size} active instances of class {self.to_s}"
546
+ end
542
547
  end
543
548
 
549
+ #
550
+ # Namespaced outside ClassMethods get's included as normal instance-methods
551
+ #
544
552
  def inspect
545
- "There's {self.size} active instances of class {self.to_s}"
553
+ "Hello I'm an #{self.class.to_s}"
546
554
  end
547
- end
548
555
 
549
- #
550
- # Namespaced outside ClassMethods get's included as normal instance-methods
551
- #
552
- def inspect
553
- "Hello I'm an #{self.class.to_s}"
554
556
  end
555
-
556
557
  end
557
558
  end
558
- end
559
559
 
560
- class Enemy < GameObject
561
- trait :inspect # includes Chingu::Trait::Inspect and extends Chingu::Trait::Inspect::ClassMethods
562
- end
563
- 10.times { Enemy.create }
564
- Enemy.inspect # => "There's 10 active instances of class Enemy"
565
- Enemy.all.first.inspect # => "Hello I'm a Enemy"
560
+ class Enemy < GameObject
561
+ trait :inspect # includes Chingu::Trait::Inspect and extends Chingu::Trait::Inspect::ClassMethods
562
+ end
563
+ 10.times { Enemy.create }
564
+ Enemy.inspect # => "There's 10 active instances of class Enemy"
565
+ Enemy.all.first.inspect # => "Hello I'm a Enemy"
566
566
 
567
567
 
568
568
  Example of using traits :velocity and :timer:
@@ -621,7 +621,7 @@ Adds accessors velocity_x, velocity_y, acceleration_x, acceleration_y, max_veloc
621
621
  They modify x, y as you would expect. *speed / angle will come*
622
622
 
623
623
  ==== Trait "bounding_box"
624
- Adds accessor 'bounding_box', which returns a Rect based on current image size,x,y,factor_x,factor_y,center_x,center_y
624
+ Adds accessor 'bounding_box', which returns an instance of class Rect based on current image size,x,y,factor_x,factor_y,center_x,center_y
625
625
  You can also scale the calculated rect with trait-options:
626
626
 
627
627
  # This would return a rect slightly smaller then the image.
@@ -631,6 +631,8 @@ You can also scale the calculated rect with trait-options:
631
631
  # Make the bounding box bigger then the image
632
632
  # :debug => true shows the actual box in red on the screen
633
633
  trait :bounding_box, :scale => 1.5, :debug => true
634
+
635
+ Inside your object you will also get a cache_bounding_box(). After that the bounding_box will be quicker but it will not longer adapt to size-changes.
634
636
 
635
637
  ==== Trait "bounding_circle"
636
638
  Adds accessor 'radius', which returns a Fixnum based on current image size,factor_x and factor_y
@@ -642,6 +644,8 @@ You can also scale the calculated radius with trait-options:
642
644
  # :debug => true shows the actual circle in red on the screen
643
645
  trait :bounding_circle, :debug => true
644
646
 
647
+ Inside your object you will also get a cache_bounding_circle(). After that radius() will be quicker but it will not longer adapt to size-changes.
648
+
645
649
  ==== Trait "animation"
646
650
  Automatically load animations depending on the class-name.
647
651
  Useful when having a lot of simple classes thats mainpurpose is displaying an animation.
@@ -658,19 +662,25 @@ Assuming the below code is included in a class FireBall.
658
662
  #
659
663
  # The below example will set the 200ms delay between each frame on all animations loaded.
660
664
  #
661
- trait :automatic_assets, :delay => 200
665
+ trait :animation, :delay => 200
662
666
 
663
667
  ==== Trait "effect"
664
668
  Adds accessors rotation_rate, fade_rate and scale_rate to game object.
665
669
  They modify angle, alpha and factor_x/factor_y each update. Since this is pretty easy to do yourself this trait might be up for deprecation.
666
670
 
667
- ==== (IN DEVELOPMENT) Trait "viewport"
671
+ ==== Trait "viewport"
668
672
  A game state trait. Adds accessor *viewport*. Set viewport.x and viewport.y to.
669
673
  Basically what viewport.x = 10 will do is draw all game objects 10 pixels to the left of their ordinary position.
670
674
  Since the viewport has moved 10 pixels to the right, the game objects will be seen "moving" 10 pixels to the left.
671
- This is great for scrolling games.
675
+ This is great for scrolling games. You also have:
676
+
677
+ viewport.game_area = [0,0,1000,400] # Set scrolling limits, the effective game world if you so will
678
+ viewport.center_around(object) # Center viweport around an object which responds to x() and y()
679
+
680
+ viewport.lag = 0.95 # Set a lag-factor to use in combination with x_target / y_target
681
+ viewport.x_target = 100 # This will move viewport towards X-coordinate 100, the speed is determined by the lag-parameter.
672
682
 
673
- ==== (IN DEVELOPMENT) Trait "collision_detection"
683
+ ==== Trait "collision_detection"
674
684
  Adds class and instance methods for basic collision detection.
675
685
 
676
686
  # Class method example
@@ -689,11 +699,16 @@ Adds class and instance methods for basic collision detection.
689
699
  # Since You're not explicity telling what collision type to use it might be slighty slower.
690
700
  #
691
701
  [Player, PlayerBullet].each_collision(Enemy, EnemyBullet) do |friend, foe|
702
+ # do something
703
+ end
692
704
 
705
+ #
706
+ # You can also give each_collision() an array of objects.
707
+ #
708
+ Ball.each_collsion(@array_of_ground_items) do |ball, ground|
709
+ # do something
693
710
  end
694
-
695
- * API isn't stabilized yet! *
696
-
711
+
697
712
  ==== (IN DEVELOPMENT) Trait "retrofy"
698
713
  Providing easier handling of the "retrofy" effect (non-blurry zoom)
699
714
  Aims to help out when using zoom-factor to create a retrofeeling with big pixels.
data/Rakefile CHANGED
@@ -1,22 +1,42 @@
1
- require 'rubygems'
2
- require File.dirname(__FILE__) + '/lib/chingu'
3
- include Chingu
4
-
5
- begin
6
- require 'jeweler'
7
- Jeweler::Tasks.new do |gemspec|
8
- gemspec.name = "chingu"
9
- gemspec.summary = "OpenGL accelerated 2D game framework for Ruby"
10
- gemspec.description = "OpenGL accelerated 2D game framework for Ruby. Builds on Gosu (Ruby/C++) which provides all the core functionality. Chingu adds simple yet powerful game states, prettier input handling, deployment safe asset-handling, a basic re-usable game object and stackable game logic."
11
- gemspec.email = "ippa@rubylicio.us"
12
- gemspec.homepage = "http://github.com/ippa/chingu"
13
- gemspec.authors = ["ippa"]
14
- gemspec.rubyforge_project = "chingu"
15
- gemspec.version = Chingu::VERSION
16
-
17
- gemspec.add_dependency 'gosu', '>= 0.7.22'
18
- end
19
- Jeweler::GemcutterTasks.new
20
- rescue LoadError
21
- puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
22
- end
1
+ require 'rubygems'
2
+ require File.dirname(__FILE__) + '/lib/chingu'
3
+ include Chingu
4
+
5
+ begin
6
+ require 'jeweler'
7
+ Jeweler::Tasks.new do |gemspec|
8
+ gemspec.name = "chingu"
9
+ gemspec.summary = "OpenGL accelerated 2D game framework for Ruby"
10
+ gemspec.description = "OpenGL accelerated 2D game framework for Ruby. Builds on Gosu (Ruby/C++) which provides all the core functionality. Chingu adds simple yet powerful game states, prettier input handling, deployment safe asset-handling, a basic re-usable game object and stackable game logic."
11
+ gemspec.email = "ippa@rubylicio.us"
12
+ gemspec.homepage = "http://github.com/ippa/chingu"
13
+ gemspec.authors = ["ippa"]
14
+ gemspec.rubyforge_project = "chingu"
15
+ gemspec.version = Chingu::VERSION
16
+
17
+ gemspec.add_dependency 'gosu', '>= 0.7.22'
18
+ gemspec.add_development_dependency 'rspec', '>= 2.0.0.beta.12'
19
+ gemspec.add_development_dependency 'watchr'
20
+ gemspec.add_development_dependency 'rcov'
21
+ end
22
+ Jeweler::GemcutterTasks.new
23
+ rescue LoadError
24
+ puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
25
+ end
26
+
27
+ # Rake RSpec2 task stuff
28
+ gem 'rspec', '>= 2.0.0.beta.12'
29
+
30
+ require 'rspec/core/rake_task'
31
+
32
+ desc "Run the specs under spec"
33
+ RSpec::Core::RakeTask.new do |t|
34
+ end
35
+
36
+ desc "Run the specs with rcov (for some reason always reports wrong code coverage)"
37
+ RSpec::Core::RakeTask.new(:rcov) do |t|
38
+ t.rcov = true
39
+ t.rcov_opts = ['-T', '--no-html', '--exclude spec,gem']
40
+ end
41
+
42
+ task :default => :spec
data/chingu.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{chingu}
8
- s.version = "0.7.6.4"
8
+ s.version = "0.7.6.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["ippa"]
12
- s.date = %q{2010-06-19}
12
+ s.date = %q{2010-06-22}
13
13
  s.description = %q{OpenGL accelerated 2D game framework for Ruby. Builds on Gosu (Ruby/C++) which provides all the core functionality. Chingu adds simple yet powerful game states, prettier input handling, deployment safe asset-handling, a basic re-usable game object and stackable game logic.}
14
14
  s.email = %q{ippa@rubylicio.us}
15
15
  s.extra_rdoc_files = [
@@ -18,6 +18,7 @@ Gem::Specification.new do |s|
18
18
  ]
19
19
  s.files = [
20
20
  ".gitignore",
21
+ ".rspec",
21
22
  "History.txt",
22
23
  "LICENSE",
23
24
  "README.rdoc",
@@ -144,7 +145,14 @@ Gem::Specification.new do |s|
144
145
  "lib/chingu/traits/velocity.rb",
145
146
  "lib/chingu/traits/viewport.rb",
146
147
  "lib/chingu/viewport.rb",
147
- "lib/chingu/window.rb"
148
+ "lib/chingu/window.rb",
149
+ "spec/chingu/fpscounter_spec.rb",
150
+ "spec/chingu/game_object_spec.rb",
151
+ "spec/chingu/inflector_spec.rb",
152
+ "spec/chingu/rect_20x20.png",
153
+ "spec/chingu/text_spec.rb",
154
+ "spec/spec_helper.rb",
155
+ "specs.watchr"
148
156
  ]
149
157
  s.homepage = %q{http://github.com/ippa/chingu}
150
158
  s.rdoc_options = ["--charset=UTF-8"]
@@ -153,7 +161,12 @@ Gem::Specification.new do |s|
153
161
  s.rubygems_version = %q{1.3.7}
154
162
  s.summary = %q{OpenGL accelerated 2D game framework for Ruby}
155
163
  s.test_files = [
156
- "examples/example10_traits_retrofy.rb",
164
+ "spec/chingu/fpscounter_spec.rb",
165
+ "spec/chingu/game_object_spec.rb",
166
+ "spec/chingu/inflector_spec.rb",
167
+ "spec/chingu/text_spec.rb",
168
+ "spec/spec_helper.rb",
169
+ "examples/example10_traits_retrofy.rb",
157
170
  "examples/example11_animation.rb",
158
171
  "examples/example12_trait_timer.rb",
159
172
  "examples/example13_high_scores.rb",
@@ -185,11 +198,20 @@ Gem::Specification.new do |s|
185
198
 
186
199
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
187
200
  s.add_runtime_dependency(%q<gosu>, [">= 0.7.22"])
201
+ s.add_development_dependency(%q<rspec>, [">= 2.0.0.beta.12"])
202
+ s.add_development_dependency(%q<watchr>, [">= 0"])
203
+ s.add_development_dependency(%q<rcov>, [">= 0"])
188
204
  else
189
205
  s.add_dependency(%q<gosu>, [">= 0.7.22"])
206
+ s.add_dependency(%q<rspec>, [">= 2.0.0.beta.12"])
207
+ s.add_dependency(%q<watchr>, [">= 0"])
208
+ s.add_dependency(%q<rcov>, [">= 0"])
190
209
  end
191
210
  else
192
211
  s.add_dependency(%q<gosu>, [">= 0.7.22"])
212
+ s.add_dependency(%q<rspec>, [">= 2.0.0.beta.12"])
213
+ s.add_dependency(%q<watchr>, [">= 0"])
214
+ s.add_dependency(%q<rcov>, [">= 0"])
193
215
  end
194
216
  end
195
217
 
@@ -2,7 +2,7 @@
2
2
  - CogWheel:
3
3
  :x: 1088.0
4
4
  :y: 352.0
5
- :angle: 261.503276348003
5
+ :angle: 89.6056498795325
6
6
  :zorder: 95
7
7
  :factor_x: 1.68525252525252
8
8
  :factor_y: 1.68525252525252
@@ -10,7 +10,7 @@
10
10
  - CogWheel:
11
11
  :x: 448.0
12
12
  :y: 416.0
13
- :angle: 213.943880498079
13
+ :angle: 25.84150696655
14
14
  :zorder: 88
15
15
  :factor_x: 1.68525252525252
16
16
  :factor_y: 1.68525252525252
@@ -938,7 +938,7 @@
938
938
  - CogWheel:
939
939
  :x: 1792.0
940
940
  :y: 320.0
941
- :angle: 182.497282580259
941
+ :angle: 354.39490904873
942
942
  :zorder: 95
943
943
  :factor_x: 1.68525252525252
944
944
  :factor_y: 1.68525252525252
@@ -954,7 +954,7 @@
954
954
  - CogWheel:
955
955
  :x: 2464.0
956
956
  :y: 288.0
957
- :angle: 14.156596894522
957
+ :angle: 202.258970426051
958
958
  :zorder: 95
959
959
  :factor_x: 1.68525252525252
960
960
  :factor_y: 1.68525252525252
@@ -962,7 +962,7 @@
962
962
  - CogWheel:
963
963
  :x: 2460.0
964
964
  :y: 960.0
965
- :angle: 184.497282580259
965
+ :angle: 356.39490904873
966
966
  :zorder: 95
967
967
  :factor_x: 1.68525252525252
968
968
  :factor_y: 1.68525252525252
@@ -1073,40 +1073,40 @@
1073
1073
  :color: 4294967295
1074
1074
  - Saw:
1075
1075
  :x: 2304.0
1076
- :y: 42973.9722397467
1077
- :angle: 148.973186119936
1076
+ :y: 42976.1107255511
1077
+ :angle: 261.473186119936
1078
1078
  :zorder: 100
1079
1079
  :factor_x: 0.317794486215539
1080
1080
  :factor_y: 0.320401002506266
1081
1081
  :color: 4294967295
1082
1082
  - Saw:
1083
1083
  :x: 2016.0
1084
- :y: 32173.9806240522
1085
- :angle: 341.066180171485
1084
+ :y: 32175.484146951
1085
+ :angle: 208.138399597758
1086
1086
  :zorder: 100
1087
1087
  :factor_x: 0.398395989974937
1088
1088
  :factor_y: 0.401002506265664
1089
1089
  :color: 4294967295
1090
1090
  - Saw:
1091
1091
  :x: 1696.0
1092
- :y: 14500.9946086338
1093
- :angle: 51.8801650144799
1092
+ :y: 14501.0352990104
1093
+ :angle: 324.163114805279
1094
1094
  :zorder: 100
1095
1095
  :factor_x: 0.958395989974934
1096
1096
  :factor_y: 0.961002506265664
1097
1097
  :color: 4294967295
1098
1098
  - Saw:
1099
1099
  :x: 1056.0
1100
- :y: 24036.9954416873
1101
- :angle: 324.855862936146
1100
+ :y: 24037.5592580972
1101
+ :angle: 15.9317824583088
1102
1102
  :zorder: 100
1103
1103
  :factor_x: 0.637794486215539
1104
1104
  :factor_y: 0.640401002506266
1105
1105
  :color: 4294967295
1106
1106
  - Saw:
1107
1107
  :x: 1344.0
1108
- :y: 24036.9954416873
1109
- :angle: 327.855862936147
1108
+ :y: 24037.5592580972
1109
+ :angle: 18.9317824583097
1110
1110
  :zorder: 100
1111
1111
  :factor_x: 0.637794486215539
1112
1112
  :factor_y: 0.640401002506266
@@ -1361,72 +1361,72 @@
1361
1361
  :color: 4294967295
1362
1362
  - Saw:
1363
1363
  :x: 2176.0
1364
- :y: 42813.9722397467
1365
- :angle: 151.973186119936
1364
+ :y: 42816.1107255511
1365
+ :angle: 264.473186119936
1366
1366
  :zorder: 100
1367
1367
  :factor_x: 0.317794486215539
1368
1368
  :factor_y: 0.320401002506266
1369
1369
  :color: 4294967295
1370
1370
  - Saw:
1371
1371
  :x: 1280.0
1372
- :y: 30824.098278027
1373
- :angle: 268.052196057188
1372
+ :y: 30825.187526242
1373
+ :angle: 100.11960470903
1374
1374
  :zorder: 100
1375
1375
  :factor_x: 0.47739348370927
1376
1376
  :factor_y: 0.48
1377
1377
  :color: 4294967295
1378
1378
  - Saw:
1379
1379
  :x: 1055.0
1380
- :y: 91481.6743590043
1381
- :angle: 19.6523317612529
1380
+ :y: 91487.0519231069
1381
+ :angle: 340.565793299832
1382
1382
  :zorder: 100
1383
1383
  :factor_x: 0.156390977443606
1384
1384
  :factor_y: 0.158997493734336
1385
1385
  :color: 4294967295
1386
1386
  - Saw:
1387
1387
  :x: 960.0
1388
- :y: 91545.6743590044
1389
- :angle: 22.6523317612509
1388
+ :y: 91551.051923107
1389
+ :angle: 343.56579329983
1390
1390
  :zorder: 100
1391
1391
  :factor_x: 0.156390977443606
1392
1392
  :factor_y: 0.158997493734336
1393
1393
  :color: 4294967295
1394
1394
  - Saw:
1395
1395
  :x: 1120.0
1396
- :y: 91545.6743590044
1397
- :angle: 22.6523317612509
1396
+ :y: 91551.051923107
1397
+ :angle: 343.56579329983
1398
1398
  :zorder: 100
1399
1399
  :factor_x: 0.156390977443606
1400
1400
  :factor_y: 0.158997493734336
1401
1401
  :color: 4294967295
1402
1402
  - Saw:
1403
1403
  :x: 864.0
1404
- :y: 91481.6743590043
1405
- :angle: 25.6523317612509
1404
+ :y: 91487.0519231069
1405
+ :angle: 346.56579329983
1406
1406
  :zorder: 100
1407
1407
  :factor_x: 0.156390977443606
1408
1408
  :factor_y: 0.158997493734336
1409
1409
  :color: 4294967295
1410
1410
  - Saw:
1411
1411
  :x: 1247.0
1412
- :y: 27755.9489495749
1413
- :angle: 283.946457785343
1412
+ :y: 27757.0390756253
1413
+ :angle: 116.850869550061
1414
1414
  :zorder: 100
1415
1415
  :factor_x: 0.477192982456137
1416
1416
  :factor_y: 0.479799498746867
1417
1417
  :color: 4294967295
1418
1418
  - Saw:
1419
1419
  :x: 1088.0
1420
- :y: 54674.3885593251
1421
- :angle: 243.763506646168
1420
+ :y: 54677.6042372912
1421
+ :angle: 303.350371053014
1422
1422
  :zorder: 100
1423
1423
  :factor_x: 0.236591478696738
1424
1424
  :factor_y: 0.239197994987469
1425
1425
  :color: 4294967295
1426
1426
  - Saw:
1427
1427
  :x: 960.0
1428
- :y: 54674.3885593251
1429
- :angle: 246.763506646169
1428
+ :y: 54677.6042372912
1429
+ :angle: 306.350371053015
1430
1430
  :zorder: 100
1431
1431
  :factor_x: 0.236591478696738
1432
1432
  :factor_y: 0.239197994987469
@@ -1545,88 +1545,88 @@
1545
1545
  :color: 4294967295
1546
1546
  - Saw:
1547
1547
  :x: 2272.0
1548
- :y: 1545.89456467036
1549
- :angle: 146.639909411433
1548
+ :y: 1337.55913437343
1549
+ :angle: 13.7121288377064
1550
1550
  :zorder: 100
1551
1551
  :factor_x: 0.398395989974937
1552
1552
  :factor_y: 0.401002506265664
1553
1553
  :color: 4294967295
1554
1554
  - Saw:
1555
1555
  :x: 1792.0
1556
- :y: 1492.18378106955
1557
- :angle: 352.539543057765
1556
+ :y: 1388.25144363545
1557
+ :angle: 103.378734621911
1558
1558
  :zorder: 100
1559
1559
  :factor_x: 0.79859649122807
1560
1560
  :factor_y: 0.801203007518797
1561
1561
  :color: 4294967295
1562
1562
  - Saw:
1563
1563
  :x: 2112.0
1564
- :y: 1472.55311973017
1565
- :angle: 50.5639527921968
1564
+ :y: 1307.53499156828
1565
+ :angle: 89.8156391328329
1566
1566
  :zorder: 100
1567
1567
  :factor_x: 0.237794486215539
1568
1568
  :factor_y: 0.240401002506266
1569
1569
  :color: 4294967295
1570
1570
  - Saw:
1571
1571
  :x: 1504.0
1572
- :y: 1475.21132713439
1573
- :angle: 4.15384615445959
1572
+ :y: 1301.3453085376
1573
+ :angle: 53.5473372787263
1574
1574
  :zorder: 100
1575
1575
  :factor_x: 0.23719298245614
1576
1576
  :factor_y: 0.239799498746867
1577
1577
  :color: 4294967295
1578
1578
  - Saw:
1579
1579
  :x: 1344.0
1580
- :y: 1470.10650887575
1581
- :angle: 7.15384615446169
1580
+ :y: 1304.67244294168
1581
+ :angle: 56.5473372787284
1582
1582
  :zorder: 100
1583
1583
  :factor_x: 0.23719298245614
1584
1584
  :factor_y: 0.239799498746867
1585
1585
  :color: 4294967295
1586
1586
  - Saw:
1587
1587
  :x: 1152.0
1588
- :y: 1442.5380388842
1589
- :angle: 10.1538461544596
1588
+ :y: 1336.12764158919
1589
+ :angle: 59.5473372787263
1590
1590
  :zorder: 100
1591
1591
  :factor_x: 0.23719298245614
1592
1592
  :factor_y: 0.239799498746867
1593
1593
  :color: 4294967295
1594
1594
  - Saw:
1595
1595
  :x: 992.0
1596
- :y: 1484.67432950191
1597
- :angle: 30.4853091222945
1596
+ :y: 1465.56513409961
1597
+ :angle: 328.10025165105
1598
1598
  :zorder: 100
1599
1599
  :factor_x: 0.156992481203007
1600
1600
  :factor_y: 0.159598997493734
1601
1601
  :color: 4294967295
1602
1602
  - Saw:
1603
1603
  :x: 800.0
1604
- :y: 1484.67432950191
1605
- :angle: 33.4853091222945
1604
+ :y: 1465.56513409961
1605
+ :angle: 331.10025165105
1606
1606
  :zorder: 100
1607
1607
  :factor_x: 0.156992481203007
1608
1608
  :factor_y: 0.159598997493734
1609
1609
  :color: 4294967295
1610
1610
  - Saw:
1611
1611
  :x: 1248.0
1612
- :y: 1538.26656151419
1613
- :angle: 184.999590383916
1612
+ :y: 1528.82649842271
1613
+ :angle: 297.499590383916
1614
1614
  :zorder: 100
1615
1615
  :factor_x: 0.317794486215539
1616
1616
  :factor_y: 0.320401002506266
1617
1617
  :color: 4294967295
1618
1618
  - Saw:
1619
1619
  :x: 928.0
1620
- :y: 1516.67432950192
1621
- :angle: 36.4853091222945
1620
+ :y: 1497.56513409962
1621
+ :angle: 334.10025165105
1622
1622
  :zorder: 100
1623
1623
  :factor_x: 0.156992481203007
1624
1624
  :factor_y: 0.159598997493734
1625
1625
  :color: 4294967295
1626
1626
  - Saw:
1627
1627
  :x: 672.0
1628
- :y: 1454.14495530015
1629
- :angle: 33.4853091222945
1628
+ :y: 1384.07790549172
1629
+ :angle: 331.10025165105
1630
1630
  :zorder: 100
1631
1631
  :factor_x: 0.156992481203007
1632
1632
  :factor_y: 0.159598997493734