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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ccd682d80ad90e1cf10020d057c1d58ec41e7b63
4
- data.tar.gz: 8795a8e23edaee430a5299675a49719c56bc8749
3
+ metadata.gz: a5327f7648864b0cc5217c8e671b9bb243c7998c
4
+ data.tar.gz: 75ac3ec22cde7033cc871d8883c98618027d5348
5
5
  SHA512:
6
- metadata.gz: 6af7458172873ddc245a291d2bcbee55dda5a157113915f8c0af9009ab0000d63f3ad4dd1de2cc9f6a30dcc9c2b6b6cfddf1a319058dcaca7a80a8ad6b674ee7
7
- data.tar.gz: 05d2f7bac3b56a1912e035d76eebd13b4dbcb6c671bd035abb4bd116541da79371d7d6b2247c6d7d4927bf16f7e8f253a377001ec2db952d6cda8fa8f0e72d86
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:) #, origin: [0,0], dimensions:, mouse_position:)
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
- element.position = origin # ...
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 #[-cx*64, -cy*64]
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,0,0,0,0],
69
+ grid: [[0,2,0,0,0],
71
70
  [0,0,0,0,0],
72
- [1,1,1,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],
@@ -32,6 +32,10 @@ module Dedalus
32
32
  attrs.each { |(k,v)| instance_variable_set(:"@#{k}",v) } unless attrs.nil?
33
33
  end
34
34
 
35
+ def record?
36
+ false
37
+ end
38
+
35
39
  def draw_bounding_box(origin:, dimensions:, color: Palette.gray)
36
40
  x,y = *origin
37
41
  w,h = *dimensions
@@ -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
@@ -1,4 +1,4 @@
1
1
  module Dedalus
2
2
  # dedalus version
3
- VERSION = "0.2.12"
3
+ VERSION = "0.2.13"
4
4
  end
@@ -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
- walk!(structure.show, origin: pad_origin, dimensions: pad_dims, freeform: freeform)
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.12
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-08 00:00:00.000000000 Z
11
+ date: 2016-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: joyce