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 +4 -3
- data/.rspec +2 -0
- data/README.rdoc +48 -33
- data/Rakefile +42 -22
- data/chingu.gemspec +26 -4
- data/examples/example21.yml +55 -55
- data/examples/example6_transitional_game_state.rb +3 -2
- data/examples/example9_collision_detection.rb +12 -22
- data/lib/chingu.rb +1 -1
- data/lib/chingu/assets.rb +3 -1
- data/lib/chingu/basic_game_object.rb +1 -1
- data/lib/chingu/core_ext/array.rb +1 -0
- data/lib/chingu/game_object_list.rb +1 -12
- data/lib/chingu/game_state.rb +1 -1
- data/lib/chingu/game_state_manager.rb +1 -0
- data/lib/chingu/game_states/edit.rb +5 -2
- data/lib/chingu/game_states/fade_to.rb +4 -8
- data/lib/chingu/text.rb +1 -1
- data/lib/chingu/traits/bounding_circle.rb +2 -6
- data/lib/chingu/traits/collision_detection.rb +7 -7
- data/lib/chingu/traits/velocity.rb +9 -6
- data/spec/chingu/fpscounter_spec.rb +43 -0
- data/spec/chingu/game_object_spec.rb +96 -0
- data/spec/chingu/inflector_spec.rb +21 -0
- data/spec/chingu/rect_20x20.png +0 -0
- data/spec/chingu/text_spec.rb +18 -0
- data/spec/spec_helper.rb +20 -0
- data/specs.watchr +74 -0
- metadata +63 -4
data/.gitignore
CHANGED
data/.rspec
ADDED
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
|
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
|
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
|
-
|
534
|
-
|
532
|
+
module Chingu
|
533
|
+
module Trait
|
534
|
+
module Inspect
|
535
535
|
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
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
|
-
"
|
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
|
-
|
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
|
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 :
|
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
|
-
====
|
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
|
-
====
|
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
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
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.
|
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-
|
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
|
-
"
|
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
|
|
data/examples/example21.yml
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
- CogWheel:
|
3
3
|
:x: 1088.0
|
4
4
|
:y: 352.0
|
5
|
-
:angle:
|
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:
|
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:
|
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:
|
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:
|
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:
|
1077
|
-
:angle:
|
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:
|
1085
|
-
:angle:
|
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:
|
1093
|
-
:angle:
|
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:
|
1101
|
-
:angle:
|
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:
|
1109
|
-
:angle:
|
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:
|
1365
|
-
:angle:
|
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:
|
1373
|
-
:angle:
|
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:
|
1381
|
-
:angle:
|
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:
|
1389
|
-
:angle:
|
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:
|
1397
|
-
:angle:
|
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:
|
1405
|
-
:angle:
|
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:
|
1413
|
-
:angle:
|
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:
|
1421
|
-
:angle:
|
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:
|
1429
|
-
:angle:
|
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:
|
1549
|
-
:angle:
|
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:
|
1557
|
-
:angle:
|
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:
|
1565
|
-
:angle:
|
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:
|
1573
|
-
:angle:
|
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:
|
1581
|
-
:angle:
|
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:
|
1589
|
-
:angle:
|
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:
|
1597
|
-
:angle:
|
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:
|
1605
|
-
:angle:
|
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:
|
1613
|
-
:angle:
|
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:
|
1621
|
-
:angle:
|
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:
|
1629
|
-
:angle:
|
1628
|
+
:y: 1384.07790549172
|
1629
|
+
:angle: 331.10025165105
|
1630
1630
|
:zorder: 100
|
1631
1631
|
:factor_x: 0.156992481203007
|
1632
1632
|
:factor_y: 0.159598997493734
|