dedalus 0.2.13 → 0.2.15

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