dedalus 0.2.12 → 0.2.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|