dedalus 0.2.13 → 0.2.15

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: a5327f7648864b0cc5217c8e671b9bb243c7998c
4
- data.tar.gz: 75ac3ec22cde7033cc871d8883c98618027d5348
3
+ metadata.gz: eb3ab91813d799396d435838e747c35b4a9e9d78
4
+ data.tar.gz: 2b89f9dd88e5a751bd16a3becf59dec71d10dfdf
5
5
  SHA512:
6
- metadata.gz: 35ea6e689b593def29f75b5d72df05957336f46eabb074b22444459b41ddfff463afb6eed5be7ad423649812d98cdf04c2cc09c78f255f2577de06c94b988fda
7
- data.tar.gz: f7c0968138edf819dd5f1d89ec8cdefda8fc22ec09a5ff54d3e7043ba128d01d00e4d9aa200774e257d9f834e31e4bbcfac9736edf96f28b62a7240c20bf4c56
6
+ metadata.gz: 008fea49b63d69e38faea15140312426dccc95e47b89ff650050f36232031c81baff799a181a9aacec77b52afa791c6d73d8584bb954af41ed02b1fdd546a9a4
7
+ data.tar.gz: 149540db900560b7ee20b80553a529c20f821dd9567fbfa39264676411f37180efa744ad1553475b2ab5e291223d11a441bae4a0bedec1bb9e172c7e85ebcf05
@@ -4,16 +4,18 @@ module Dedalus
4
4
  attr_accessor :path, :padding, :z_order, :invert_x, :invert_y, :overlay_color
5
5
 
6
6
  def render
7
- x,y = *position
7
+ x0,y0 = *position
8
+ ox,oy = *offset
9
+
8
10
  x_scale = invert_x ? -scale : scale
9
11
  y_scale = invert_y ? -scale : scale
10
12
 
11
- ox,oy = *offset
13
+ x,y = x0 + padding + ox, y0 + padding + oy
12
14
 
13
15
  if overlay_color
14
- asset.draw(x + padding + ox*scale, y + padding + oy*scale, z_order, x_scale, y_scale, overlay_gosu_color)
16
+ asset.draw(x,y, z_order, x_scale, y_scale, overlay_gosu_color)
15
17
  else
16
- asset.draw(x + padding + ox*scale, y + padding + oy*scale, z_order, x_scale, y_scale) #, overlay_color)
18
+ asset.draw(x,y, z_order, x_scale, y_scale)
17
19
  end
18
20
  end
19
21
 
@@ -1,38 +1,13 @@
1
1
  module Dedalus
2
2
  module Elements
3
- # TODO image grid should learn to use window#record http://www.rubydoc.info/github/jlnr/gosu/Gosu%2FWindow%3Arecord
4
3
  class ImageGrid < Dedalus::Molecule
5
4
  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
5
+ attr_accessor :scale
31
6
 
32
7
  def show
33
8
  if grid
34
- grid.map do |row|
35
- row.map do |grid_value|
9
+ grid.map do |row_elements|
10
+ row_elements.map do |grid_value|
36
11
  if grid_value
37
12
  sprite_for(grid_value)
38
13
  else
@@ -45,20 +20,42 @@ module Dedalus
45
20
  end
46
21
  end
47
22
 
23
+ def name
24
+ @name ||= 'an-image-grid' # a uniq id for recording
25
+ end
26
+
27
+ def record?
28
+ !grid.empty?
29
+ end
30
+
31
+ def width
32
+ if grid && grid.first
33
+ grid.first.length * tile_height * scale
34
+ else
35
+ 0
36
+ end
37
+ end
38
+
48
39
  def height
49
40
  if grid
50
- grid.length * tile_height
41
+ grid.length * tile_height * scale
51
42
  else
52
43
  0
53
44
  end
54
45
  end
55
46
 
56
47
  def sprite_for(frame)
57
- Sprite.new(frame: frame, width: tile_width, height: tile_height, path: tiles_path)
48
+ Sprite.new(
49
+ frame: frame,
50
+ asset_width: tile_width,
51
+ asset_height: tile_height,
52
+ path: tiles_path,
53
+ scale: scale
54
+ )
58
55
  end
59
56
 
60
57
  def no_image
61
- Void.new(height: tile_height, width: tile_width)
58
+ Void.new(height: tile_height * scale, width: tile_width * scale)
62
59
  end
63
60
 
64
61
  def self.description
@@ -70,11 +67,12 @@ module Dedalus
70
67
  tiles_path: "media/images/tiles.png",
71
68
  tile_width: 64,
72
69
  tile_height: 64,
70
+ scale: 0.2,
73
71
  grid: [
74
- [ nil, 0, 2, 0 ],
75
- [ 0, nil, 1, 0 ],
76
- [ 0, 0, nil, 0 ],
77
- [ 0, 1, 2, nil ],
72
+ [ nil, 0, 2, 0, 1 ],
73
+ [ 0, nil, 1, 0, 1 ],
74
+ [ 0, 0, nil, 0, 1 ],
75
+ [ 0, 1, 2, nil, 1 ],
78
76
  ]
79
77
  }
80
78
  end
@@ -1,18 +1,26 @@
1
1
  module Dedalus
2
2
  module Elements
3
3
  class Sprite < Image
4
- attr_accessor :width, :height, :frame
4
+ attr_accessor :asset_width, :asset_height, :frame
5
5
 
6
6
  def asset
7
- @asset ||= Dedalus::ImageRepository.lookup_tiles(path, width, height)[frame]
7
+ @asset ||= Dedalus::ImageRepository.lookup_tiles(path, asset_width, asset_height)[frame]
8
+ end
9
+
10
+ def width
11
+ 2*padding + (asset_width * scale)
12
+ end
13
+
14
+ def height
15
+ 2*padding + (asset_height * scale)
8
16
  end
9
17
 
10
18
  def self.example_data
11
19
  {
12
20
  path: "media/images/tiles.png",
13
21
  frame: 3,
14
- width: 64,
15
- height: 64,
22
+ asset_width: 64,
23
+ asset_height: 64,
16
24
  invert_x: true,
17
25
  scale: 2.5
18
26
  }
@@ -2,8 +2,9 @@ module Dedalus
2
2
  module Elements
3
3
  class SpriteField < Dedalus::Organism
4
4
  attr_accessor :grid, :sprite_map, :scale, :camera_location
5
+ attr_accessor :tile_width, :tile_height, :tiles_path
5
6
  # TODO tiles path and width/height as attrs
6
-
7
+
7
8
  def show
8
9
  layers
9
10
  end
@@ -21,7 +22,6 @@ module Dedalus
21
22
  layer_stack = Dedalus::LayerStack.new
22
23
  layer_stack.push(Dedalus::Layer.new(background_image))
23
24
  layer_stack.push(Dedalus::Layer.new(image_grid))
24
-
25
25
  layer_stack.push(canvas_layer)
26
26
  layer_stack
27
27
  end
@@ -42,18 +42,20 @@ module Dedalus
42
42
 
43
43
  def image_grid
44
44
  ImageGrid.new(
45
- tiles_path: 'media/images/tiles.png',
45
+ tiles_path: tiles_path, #'media/images/tiles.png',
46
46
  grid: grid,
47
- tile_width: 64,
48
- tile_height: 64,
49
- offset: camera_offset
47
+ tile_width: tile_width,
48
+ tile_height: tile_height,
49
+ scale: scale,
50
+ offset: camera_offset,
51
+ name: 'sprite-field-tiles'
50
52
  )
51
53
  end
52
54
 
53
55
  def to_screen_coordinates(location:)
54
56
  x,y = *location
55
57
  cx,cy = *camera_offset
56
- [(x * image_grid.tile_width + cx), (y * image_grid.tile_height + cy)]
58
+ [(x * tile_width + cx), (y * tile_height + cy)]
57
59
  end
58
60
 
59
61
  def background_image
@@ -70,9 +72,14 @@ module Dedalus
70
72
  [0,0,0,0,0],
71
73
  [1,1,3,1,1],
72
74
  [1,1,1,1,1]],
73
- scale: 0.3,
75
+ scale: 2.0,
74
76
  camera_location: [1.2,2.4],
75
- sprite_map: { [1.2,2.4] => [ Sprite.new(Sprite.example_data) ] }
77
+ tiles_path: "media/images/tiles.png",
78
+ tile_width: 64,
79
+ tile_height: 64,
80
+ sprite_map: {
81
+ [1.2,2.4] => [ Sprite.new(Sprite.example_data) ]
82
+ }
76
83
  }
77
84
  end
78
85
  end
@@ -117,7 +117,6 @@ module Dedalus
117
117
  end
118
118
  end
119
119
 
120
- # it's like a gluon or something, not sure how to model in nuclear terms
121
120
  class LayerStack < Element
122
121
  attr_reader :layers
123
122
 
@@ -8,14 +8,14 @@ module Dedalus
8
8
 
9
9
  def self.lookup_tiles(path, width, height)
10
10
  @tiles ||= {}
11
- @tiles[path] ||= Gosu::Image::load_tiles(path, width, height)
11
+ @tiles[path] ||= Gosu::Image::load_tiles(path, width.to_i, height.to_i)
12
12
  @tiles[path]
13
13
  end
14
14
 
15
15
  def self.lookup_recording(id,width,height,window,&blk)
16
- p [ :lookup_recording, id: id ]
16
+ # p [ :lookup_recording, id: id ]
17
17
  @recordings ||= {}
18
- @recordings[id] ||= window.record(width,height,&blk)
18
+ @recordings[id] ||= window.record(width.to_i,height.to_i,&blk)
19
19
  @recordings[id]
20
20
  end
21
21
  end
@@ -1,4 +1,4 @@
1
1
  module Dedalus
2
2
  # dedalus version
3
- VERSION = "0.2.13"
3
+ VERSION = "0.2.15"
4
4
  end
@@ -20,14 +20,20 @@ module Dedalus
20
20
  end
21
21
 
22
22
  def walk!(structure, origin:, dimensions:, freeform: false, render: false)
23
- # p [ :walk, render: render ]
24
23
  width, height = *dimensions
24
+
25
25
  height = structure.height if !structure.is_a?(Array) && structure.height
26
- width = structure.width if !structure.is_a?(Array) && structure.width
26
+ width = structure.width if !structure.is_a?(Array) && structure.width
27
+
27
28
  x0, y0 = *origin
28
29
 
29
30
  if structure.is_a?(Dedalus::Atom)
30
31
  @atom_callback.call(structure, origin: origin, dimensions: dimensions, freeform: freeform) if @atom_callback
32
+
33
+ # implicitly array is rows, nested arrays are columns, doubly-nested arrays are rows, etc
34
+ elsif structure.is_a?(Array)
35
+ walk_rows!(structure, origin: origin, dimensions: dimensions, render: render)
36
+
31
37
  elsif structure.is_a?(Dedalus::Element)
32
38
  offset = structure.offset || [0,0]
33
39
  ox,oy = *offset
@@ -54,10 +60,8 @@ module Dedalus
54
60
  if structure.is_a?(LayerStack)
55
61
  layers = structure.layers
56
62
  layers.each do |layer|
57
- # TODO cleanup a bit?
58
63
  if layer.freeform?
59
64
  if layer.show.is_a?(Array)
60
- # need to run through each element individually?
61
65
  layer.show.each do |layer_element|
62
66
  walk!(layer_element, origin: pad_origin, dimensions: pad_dims, freeform: true, render: render)
63
67
  end
@@ -69,24 +73,18 @@ module Dedalus
69
73
  end
70
74
  end
71
75
  else
72
- # p [ :checking_for_recording, record: structure.record?, render: render ]
73
76
  if structure.record? && render
74
- # p [ :structure_indicates_recording! ]
75
77
  recorded_image = ImageRepository.lookup_recording(structure.name, structure.width, structure.height, structure.window) do
76
- p [ :recording! ]
77
78
  walk!(structure.show, origin: [0,0], dimensions: pad_dims, freeform: freeform, render: render)
78
79
  end
79
80
 
80
81
  ox,oy = *pad_origin
81
- # p [ :drawing_recorded_image, at: [ox,oy] ]
82
- recorded_image.draw(ox,oy,10) #ox,oy,10)
82
+ recorded_image.draw(ox,oy,10)
83
83
  else
84
84
  walk!(structure.show, origin: pad_origin, dimensions: pad_dims, freeform: freeform, render: render)
85
85
  end
86
86
  end
87
87
 
88
- elsif structure.is_a?(Array) # we have a set of rows
89
- walk_rows!(structure, origin: origin, dimensions: dimensions, render: render)
90
88
  end
91
89
  end
92
90
 
@@ -167,7 +165,7 @@ module Dedalus
167
165
  end
168
166
  end
169
167
 
170
- if distance_cursor > distance - current_element_distance # ??
168
+ if distance_cursor > distance - current_element_distance
171
169
  return elements.slice(index,elements.size)
172
170
  end
173
171
 
@@ -175,7 +173,6 @@ module Dedalus
175
173
  distance_cursor += current_element_distance
176
174
  end
177
175
 
178
- # no overflowing elements...
179
176
  []
180
177
  end
181
178
  end
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.13
4
+ version: 0.2.15
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-09 00:00:00.000000000 Z
11
+ date: 2016-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: joyce