dedalus 0.2.12 → 0.2.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/dedalus/app_view_composer.rb +6 -6
- data/lib/dedalus/elements/image_grid.rb +25 -0
- data/lib/dedalus/elements/sprite_field.rb +4 -5
- data/lib/dedalus/elements.rb +4 -0
- data/lib/dedalus/image_repository.rb +7 -0
- data/lib/dedalus/version.rb +1 -1
- data/lib/dedalus/view_traversal.rb +26 -11
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a5327f7648864b0cc5217c8e671b9bb243c7998c
|
4
|
+
data.tar.gz: 75ac3ec22cde7033cc871d8883c98618027d5348
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35ea6e689b593def29f75b5d72df05957336f46eabb074b22444459b41ddfff463afb6eed5be7ad423649812d98cdf04c2cc09c78f255f2577de06c94b988fda
|
7
|
+
data.tar.gz: f7c0968138edf819dd5f1d89ec8cdefda8fc22ec09a5ff54d3e7043ba128d01d00e4d9aa200774e257d9f834e31e4bbcfac9736edf96f28b62a7240c20bf4c56
|
@@ -3,13 +3,13 @@ module Dedalus
|
|
3
3
|
include Geometer::PointHelpers
|
4
4
|
include Geometer::DimensionHelpers
|
5
5
|
|
6
|
-
def traverse(structure, origin: [0,0], dimensions:, &blk)
|
6
|
+
def traverse(structure, origin: [0,0], dimensions:, render: false, &blk)
|
7
7
|
traversal = ViewTraversal.new(&blk)
|
8
|
-
traversal.walk!(structure, origin: origin, dimensions: dimensions)
|
8
|
+
traversal.walk!(structure, origin: origin, dimensions: dimensions, render: render)
|
9
9
|
structure
|
10
10
|
end
|
11
11
|
|
12
|
-
def send_molecule(structure, window_dims, mouse_position:, message:)
|
12
|
+
def send_molecule(structure, window_dims, mouse_position:, message:)
|
13
13
|
mouse_coord = coord(*mouse_position)
|
14
14
|
|
15
15
|
traverse(structure, origin: [0,0], dimensions: window_dims) do
|
@@ -32,7 +32,7 @@ module Dedalus
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def render!(structure, dims)
|
35
|
-
traverse(structure, origin: [0,0], dimensions: dims) do
|
35
|
+
traverse(structure, origin: [0,0], dimensions: dims, render: true) do
|
36
36
|
on_atom do |atom, origin:, dimensions:, freeform:|
|
37
37
|
if atom.background_color
|
38
38
|
atom.draw_bounding_box(
|
@@ -50,7 +50,6 @@ module Dedalus
|
|
50
50
|
atom.position = origin
|
51
51
|
end
|
52
52
|
|
53
|
-
# atom.position = origin unless freeform
|
54
53
|
atom.render
|
55
54
|
end
|
56
55
|
|
@@ -62,7 +61,8 @@ module Dedalus
|
|
62
61
|
dimensions: dimensions
|
63
62
|
)
|
64
63
|
end
|
65
|
-
|
64
|
+
|
65
|
+
element.position = origin
|
66
66
|
end
|
67
67
|
end
|
68
68
|
end
|
@@ -3,6 +3,31 @@ module Dedalus
|
|
3
3
|
# TODO image grid should learn to use window#record http://www.rubydoc.info/github/jlnr/gosu/Gosu%2FWindow%3Arecord
|
4
4
|
class ImageGrid < Dedalus::Molecule
|
5
5
|
attr_accessor :grid, :tiles_path, :tile_width, :tile_height
|
6
|
+
attr_accessor :recorded_image
|
7
|
+
|
8
|
+
def name
|
9
|
+
'an-image-grid' # we record these, so... we need a unique identifier that will persist across invocations -- in general we'll only be using one, but if they're layered you may need to differentiate...
|
10
|
+
end
|
11
|
+
|
12
|
+
def record?
|
13
|
+
!grid.empty?
|
14
|
+
end
|
15
|
+
|
16
|
+
def width
|
17
|
+
if grid && grid.first
|
18
|
+
grid.first.length * tile_width
|
19
|
+
else
|
20
|
+
0
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def height
|
25
|
+
if grid
|
26
|
+
grid.length * tile_height
|
27
|
+
else
|
28
|
+
0
|
29
|
+
end
|
30
|
+
end
|
6
31
|
|
7
32
|
def show
|
8
33
|
if grid
|
@@ -3,7 +3,7 @@ module Dedalus
|
|
3
3
|
class SpriteField < Dedalus::Organism
|
4
4
|
attr_accessor :grid, :sprite_map, :scale, :camera_location
|
5
5
|
# TODO tiles path and width/height as attrs
|
6
|
-
|
6
|
+
|
7
7
|
def show
|
8
8
|
layers
|
9
9
|
end
|
@@ -41,13 +41,12 @@ module Dedalus
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def image_grid
|
44
|
-
# cx,cy = *camera_offset
|
45
44
|
ImageGrid.new(
|
46
45
|
tiles_path: 'media/images/tiles.png',
|
47
46
|
grid: grid,
|
48
47
|
tile_width: 64,
|
49
48
|
tile_height: 64,
|
50
|
-
offset: camera_offset
|
49
|
+
offset: camera_offset
|
51
50
|
)
|
52
51
|
end
|
53
52
|
|
@@ -67,9 +66,9 @@ module Dedalus
|
|
67
66
|
|
68
67
|
def self.example_data
|
69
68
|
{
|
70
|
-
grid: [[0,
|
69
|
+
grid: [[0,2,0,0,0],
|
71
70
|
[0,0,0,0,0],
|
72
|
-
[1,1,
|
71
|
+
[1,1,3,1,1],
|
73
72
|
[1,1,1,1,1]],
|
74
73
|
scale: 0.3,
|
75
74
|
camera_location: [1.2,2.4],
|
data/lib/dedalus/elements.rb
CHANGED
@@ -11,5 +11,12 @@ module Dedalus
|
|
11
11
|
@tiles[path] ||= Gosu::Image::load_tiles(path, width, height)
|
12
12
|
@tiles[path]
|
13
13
|
end
|
14
|
+
|
15
|
+
def self.lookup_recording(id,width,height,window,&blk)
|
16
|
+
p [ :lookup_recording, id: id ]
|
17
|
+
@recordings ||= {}
|
18
|
+
@recordings[id] ||= window.record(width,height,&blk)
|
19
|
+
@recordings[id]
|
20
|
+
end
|
14
21
|
end
|
15
22
|
end
|
data/lib/dedalus/version.rb
CHANGED
@@ -19,7 +19,8 @@ module Dedalus
|
|
19
19
|
@element_callback = blk
|
20
20
|
end
|
21
21
|
|
22
|
-
def walk!(structure, origin:, dimensions:, freeform: false)
|
22
|
+
def walk!(structure, origin:, dimensions:, freeform: false, render: false)
|
23
|
+
# p [ :walk, render: render ]
|
23
24
|
width, height = *dimensions
|
24
25
|
height = structure.height if !structure.is_a?(Array) && structure.height
|
25
26
|
width = structure.width if !structure.is_a?(Array) && structure.width
|
@@ -58,25 +59,39 @@ module Dedalus
|
|
58
59
|
if layer.show.is_a?(Array)
|
59
60
|
# need to run through each element individually?
|
60
61
|
layer.show.each do |layer_element|
|
61
|
-
walk!(layer_element, origin: pad_origin, dimensions: pad_dims, freeform: true)
|
62
|
+
walk!(layer_element, origin: pad_origin, dimensions: pad_dims, freeform: true, render: render)
|
62
63
|
end
|
63
64
|
else
|
64
|
-
walk!(layer, origin: pad_origin, dimensions: pad_dims, freeform: true)
|
65
|
+
walk!(layer, origin: pad_origin, dimensions: pad_dims, freeform: true, render: render)
|
65
66
|
end
|
66
67
|
else
|
67
|
-
walk!(layer, origin: pad_origin, dimensions: pad_dims, freeform: false)
|
68
|
+
walk!(layer, origin: pad_origin, dimensions: pad_dims, freeform: false, render: render)
|
68
69
|
end
|
69
70
|
end
|
70
71
|
else
|
71
|
-
|
72
|
+
# p [ :checking_for_recording, record: structure.record?, render: render ]
|
73
|
+
if structure.record? && render
|
74
|
+
# p [ :structure_indicates_recording! ]
|
75
|
+
recorded_image = ImageRepository.lookup_recording(structure.name, structure.width, structure.height, structure.window) do
|
76
|
+
p [ :recording! ]
|
77
|
+
walk!(structure.show, origin: [0,0], dimensions: pad_dims, freeform: freeform, render: render)
|
78
|
+
end
|
79
|
+
|
80
|
+
ox,oy = *pad_origin
|
81
|
+
# p [ :drawing_recorded_image, at: [ox,oy] ]
|
82
|
+
recorded_image.draw(ox,oy,10) #ox,oy,10)
|
83
|
+
else
|
84
|
+
walk!(structure.show, origin: pad_origin, dimensions: pad_dims, freeform: freeform, render: render)
|
85
|
+
end
|
72
86
|
end
|
87
|
+
|
73
88
|
elsif structure.is_a?(Array) # we have a set of rows
|
74
|
-
walk_rows!(structure, origin: origin, dimensions: dimensions)
|
89
|
+
walk_rows!(structure, origin: origin, dimensions: dimensions, render: render)
|
75
90
|
end
|
76
91
|
end
|
77
92
|
|
78
93
|
private
|
79
|
-
def walk_rows!(rows, origin:, dimensions:)
|
94
|
+
def walk_rows!(rows, origin:, dimensions:, render: false)
|
80
95
|
width, height = *dimensions
|
81
96
|
x0, y0 = *origin
|
82
97
|
|
@@ -86,7 +101,7 @@ module Dedalus
|
|
86
101
|
if row.is_a?(Array)
|
87
102
|
extra_columns = true
|
88
103
|
while extra_columns
|
89
|
-
row = walk_columns!(row, origin: [x0, y], dimensions: dims)
|
104
|
+
row = walk_columns!(row, origin: [x0, y], dimensions: dims, render: render)
|
90
105
|
if row.empty?
|
91
106
|
extra_columns = false
|
92
107
|
else
|
@@ -95,19 +110,19 @@ module Dedalus
|
|
95
110
|
end
|
96
111
|
end
|
97
112
|
else
|
98
|
-
walk!(row, origin: [x0,y], dimensions: dims)
|
113
|
+
walk!(row, origin: [x0,y], dimensions: dims, render: render)
|
99
114
|
end
|
100
115
|
end
|
101
116
|
end
|
102
117
|
|
103
|
-
def walk_columns!(columns, origin:, dimensions:)
|
118
|
+
def walk_columns!(columns, origin:, dimensions:, render: false)
|
104
119
|
width, height = *dimensions
|
105
120
|
x0, y0 = *origin
|
106
121
|
|
107
122
|
subdivide_line(columns, distance: width, attr: :width) do |column, current_column_width, width_cursor|
|
108
123
|
x = x0 + width_cursor
|
109
124
|
dims = [ current_column_width, height ]
|
110
|
-
walk!(column, origin: [x,y0], dimensions: dims)
|
125
|
+
walk!(column, origin: [x,y0], dimensions: dims, render: render)
|
111
126
|
end
|
112
127
|
end
|
113
128
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dedalus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joseph Weissman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: joyce
|