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 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