rhex 2.0.0 → 2.0.1

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: 8ddd109e085e6fd0019a06bcddeef878e5132045
4
- data.tar.gz: 1693182acc5400722ae6598934f71d7dd85acf89
3
+ metadata.gz: 34f24c5201b8121902c9444446ba117b6ea44796
4
+ data.tar.gz: e66cdc381f1d92a64a5c55da8b89d1cc2c8c0602
5
5
  SHA512:
6
- metadata.gz: 6db25e6a50b842d46d001f3c479c2e800f96dc0d96d66fd68e51297f6d2d8efdc52cc3c1f4abc34dc95ff1c10df3436be662b5e852a997d9c277ba18baf1411c
7
- data.tar.gz: 0b40396657b73c09556af4923f6862a2df2b41bbce686c945ae9ab352780d4793c5b0a60a12a1401f457c72420947065b884ed52286bc2289fdf6d73ad2df25d
6
+ metadata.gz: e58d0a6d7c1bb83d1d4c13fe53059095d08f170e88db9b9da976d9fbbfb5e704b559334991ecdbf3f3d4e3df237df492f9f03d04083012d4d247b119e31e6497
7
+ data.tar.gz: 0a1fd3adf58cc2f0991977e127f00debf25697d4eb90a35106c1f5397e5486854a9794e6796602ff536de5dbf6260bb5e2fc2a8d914d4fae19a3232013e20936
@@ -5,104 +5,131 @@ require_relative 'modules/grid_to_pic'
5
5
  # This class represents a grid of hexagons stored in an axial coordinate system.
6
6
  #
7
7
  # Please read http://www.redblobgames.com/grids/hexagons/#coordinates to understand what an axial coordinates system is.
8
+ #
9
+ # @author Cédric ZUGER
10
+ #
11
+ # @attr_reader [Float] hex_ray the ray of an hexagon
12
+ # @attr_reader [Float] hex_height the height of an hexagon
13
+ # @attr_reader [Float] hex_width the width of an hexagon
14
+ # @attr_reader [Float] quarter_height the quarter of the height of an hexagon
15
+ # @attr_reader [Float] half_height the half of the height of an hexagon
16
+ # @attr_reader [Float] half_width the half of the width of an hexagon
17
+ #
8
18
  class AxialGrid
9
19
 
10
- include GridToPic
11
- include AsciiToGrid
20
+ attr_reader :hex_ray, :hex_height, :hex_width, :quarter_height, :half_width
12
21
 
13
- # Create an hexagon object
14
- # - +hex_ray+ is the size of an hexagon. Please read : http://www.redblobgames.com/grids/hexagons/#basics for information about the size of an hexagon.
15
- # - +element_to_color_hash+ : is a hash that relate color (see BaseHex::Axial.new) to a color. This is used to dump your grid to a bitmap field.
22
+ # Create an axial hexagon grid
16
23
  #
17
- # Example
24
+ # @param hex_ray [Integer] the size of an hexagon. Please read : http://www.redblobgames.com/grids/hexagons/#basics for information about the size of an hexagon
18
25
  #
19
- # @g = Hex::Grid.new(
20
- # element_to_color_hash: {
21
- # m: :brown, g: :green, w: :blue
22
- # }
23
- # )
24
- #
25
- # Assuming you want all hex with a colorue of m are drawn in brown,g in green, etc ... (see GridToPic for drawin a grid)
26
- #
27
- # *Returns* : a new Hex::Grid object.
28
26
  def initialize( hex_ray: 16, element_to_color_hash: {} )
29
27
  @hexes={}
30
28
  @element_to_color_hash = element_to_color_hash
31
29
  @hex_ray = hex_ray
32
- set_hex_dimensions
33
30
  end
34
31
 
35
- # Set the hex colorue to color conversion hash
32
+ # Set the hex color to color conversion hash
33
+ #
34
+ # @param element_to_color_hash [Hash] see initialize
36
35
  #
37
- # *Returns* : nothing.
38
36
  def set_element_to_color_hash( element_to_color_hash )
39
37
  @element_to_color_hash = element_to_color_hash
40
38
  end
41
39
 
42
40
  # Create an hexagon at a given position (q, r)
43
41
  #
44
- # You can set a color for the hexagon and set the hex as a border hex or not
42
+ # @param q [Integer] the q coordinate of the hexagon
43
+ # @param r [Integer] the r coordinate of the hexagon
44
+ # @param color [String] a colorstring that can be used by ImageMagic
45
+ # @param border [Boolean] is the hex on the border of the screen (not fully draw)
46
+ # @param data [Unknown] some data associated with the hexagone. Everything you want, it is up to you.
47
+ #
48
+ # @return [AxialHex] an hexagon
45
49
  #
46
- # *Returns* : an Hex::Axial object.
47
50
  def cset( q, r, color: nil, border: false, data: nil )
48
51
  @hexes[ [ q, r ] ] = AxialHex.new( q, r, color: color, border: border, data: data )
49
52
  end
50
53
 
51
- # Same method, but accept an hexagon instead of (q, r) coords
54
+ # Insert an hexagon into the grid
55
+ #
56
+ # @param hex [AxialHex] the hexagon you want to add into the grid
57
+ #
58
+ # @return [AxialHex] the hexagon you inserted
52
59
  #
53
- # *Returns* : the created Hex::Axial object.
54
60
  def hset( hex )
55
61
  @hexes[ [ hex.q, hex.r ] ] = hex
56
62
  end
57
63
 
58
64
  # Get the hexagon at a given position (q, r)
59
65
  #
60
- # *Returns* : the created Hex::Axial object.
66
+ # @param q [Integer] the q coordinate of the hexagon
67
+ # @param r [Integer] the r coordinate of the hexagon
68
+ #
69
+ # @return [AxialHex] the hexagon at the requested position. nil if nothing
70
+ #
61
71
  def cget( q, r )
62
72
  @hexes[ [ q, r ] ]
63
73
  end
64
74
 
65
- # Same method, but accept an hexagon instead of (q, r) coords
75
+ # Get the hexagon at a given position (q, r)
76
+ #
77
+ # @param hex [AxialHex] the hexagon containing the position you want to read
78
+ #
79
+ # @return [AxialHex] the hexagon at the requested position. nil if nothing
66
80
  #
67
- # *Returns* : the created Hex::Axial object.
68
81
  def hget( hex )
69
82
  @hexes[ [ hex.q, hex.r ] ]
70
83
  end
71
84
 
72
85
  # Call the block for each Hex in the grid
73
86
  #
74
- # *Returns* : nothing
87
+ # @example
88
+ # mygrid.each{ |h| p h }
89
+ #
75
90
  def each
76
91
  @hexes.sort.each{ |h| yield h[1] }
77
92
  end
78
93
 
79
94
  # Return all surrounding hexes from grid
80
95
  #
81
- # *Returns* : Array of AxialHex
96
+ # @param h [AxialHex] the hexagon you want to get surronding hexes
97
+ #
98
+ # @return [Array<AxialHex>] all surrounding hexes
82
99
  def h_surrounding_hexes( h )
83
100
  h.surrounding_hexes.map{ |sh| hget( sh ) }
84
101
  end
85
102
 
86
103
  # Get the hexagon at (x,y) coordinate.
87
104
  #
88
- # *Returns* : the Hex::Axial object at x, y pos.
105
+ # @param x [Integer] the x coordinate of the hexagon you want to get
106
+ # @param y [Integer] the y coordinate of the hexagon you want to get
107
+ #
108
+ # @return [AxialGrid] the corresponding hex
109
+ #
89
110
  def hex_at_xy(x, y)
90
111
  q = (x * Math.sqrt(3)/3.0 - y/3.0) / @hex_ray
91
112
  r = y * 2.0/3.0 / @hex_ray
92
113
  hex = AxialHex.new(q, r).round
93
114
  cget( hex.q, hex.r )
94
115
  end
116
+
117
+ #
118
+ # Get the (x, y) position of an hexagon object
119
+ #
120
+ # @param hex [AxialHex] the hexagon you want to get the position
95
121
  #
96
- # Give the position of an hexagon object in pixel.
122
+ # @return [Array<Integer>] an array of two integers corrsponding respectively to the x, y values
97
123
  #
98
- # *Returns* : an array of x, y positions.
99
124
  def to_xy( hex )
100
125
 
101
- set_hex_dimensions
102
-
103
126
  tmp_q = hex.q
127
+ # x = ( @hex_ray * Math.sqrt(3) * ( tmp_q + hex.r/2.0 ) ) - @hex_width
128
+ # y = ( @hex_ray * 3.0/2.0 * hex.r ) - ( @quarter_height * 2 )
129
+
104
130
  x = ( @hex_ray * Math.sqrt(3) * ( tmp_q + hex.r/2.0 ) )
105
- y = ( @hex_ray * 3.0/2.0 * hex.r )
131
+ y = ( @hex_ray * 3.0/2.0 * hex.r ) - ( @quarter_height * 2 )
132
+
106
133
  [ x, y ]
107
134
  end
108
135
 
@@ -4,55 +4,66 @@ require_relative 'cube_hex'
4
4
 
5
5
  # This class represents an hexagon stored in axial coordinate system.
6
6
  #
7
- # Please read http://www.redblobgames.com/grids/hexagons/#coordinates
8
- # to understand what an axial coordinates system is
7
+ # Please read http://www.redblobgames.com/grids/hexagons/#coordinates to understand what an axial coordinates system is
8
+ #
9
+ # @attr_reader [Integer] q the q coordinate of the hexagon
10
+ # @attr_reader [Integer] r the r coordinate of the hexagon
11
+ #
9
12
  class AxialHex < BaseHex
10
13
 
11
- attr_reader :q, :r #:nodoc:
14
+ attr_reader :q, :r
12
15
 
13
16
  # Directions around hex from top left clockwise
14
- DIRECTIONS = [ [0,-1], [1,-1], [1,0], [0,1], [-1,+1], [-1,0] ] #:nodoc:
17
+ DIRECTIONS = [ [0,-1], [1,-1], [1,0], [0,1], [-1,+1], [-1,0] ]
15
18
 
16
19
  # Create an hexagon object
17
- # - +q+ and +r+ are the coordinates in the axial coords system
18
- # - +color+ : is a colorue anything you want.
19
- # - +border+ is a boolean and mean that the hex is at the border of the map.
20
20
  #
21
- # *Returns* : a new Hex::Axial object.
21
+ # @param q [Integer] the q coordinate of the hexagon
22
+ # @param r [Integer] the r coordinate of the hexagon
23
+ # @param color [String] the color of the hexagon
24
+ # @param border [Boolean] true if the the hexagon is on the border
25
+ # @param data [Object] a data object associated with the hexagon. Anything you want
26
+ #
27
+ # @return [AxialHex] the AxialHex you created
28
+ #
22
29
  def initialize( q, r, color: nil, border: false, data: nil )
23
30
  @q = q
24
31
  @r = r
25
32
  super( color, border, data )
26
33
  end
27
34
 
28
- # Check the equality between two hexagons.
29
- def ==(h) #:nodoc:
35
+ # Test the equality between two hexagons
36
+ def ==(h)
30
37
  @q==h.q && @r==h.r
31
38
  end
32
39
 
33
- def !=(h) #:nodoc:
40
+ # Test the inequality between two hexagons
41
+ def !=(h)
34
42
  @q!=h.q || @r!=h.r
35
43
  end
36
44
 
37
- # Transform an axial represented hexagon object to a cube represented hexagon object.
45
+ # Transform an axial represented hexagon object to a cube represented hexagon object
46
+ #
47
+ # @return [CubeHex] a new CubeHex object
38
48
  #
39
- # *Returns* : a new Hex::Cube object.
40
49
  def to_cube
41
50
  CubeHex.new(@q, -@q-@r, @r)
42
51
  end
43
52
 
44
53
  # From an array of hexagons, get the nearest
45
- # - +hex_array+ : and array of Hex::Axial objects
46
54
  #
47
- # Example
55
+ # @param hex_array [Array<AxialHex>] an array of AxialHex objects
56
+ #
57
+ # @example
58
+ #
59
+ # hext_to_test = AxialHex.new( 5, 5 )
60
+ # nearest_hex = AxialHex.new( 5, 6 )
61
+ # far_hex = AxialHex.new( 20, 20 )
48
62
  #
49
- # hext_to_test = Hex::Axial.new( 5, 5 )
50
- # nearest_hex = Hex::Axial.new( 5, 6 )
51
- # far_hex = Hex::Axial.new( 20, 20 )
63
+ # hext_to_test.nearset_hex( [ nearest_hex, far_hex ] ) #=> #<AxialHex @q=5, @r=6>
52
64
  #
53
- # nearest_hex.nearset_hex( [ hext_to_test, far_hex ] ) #=> #<Hex::Axial @q=5, @r=6>
65
+ # @return [AxialHex] the nearset hex as a AxialHex object
54
66
  #
55
- # *Returns* : the nearset hex as a Hex::Axial object.
56
67
  def nearest_hex( hex_array )
57
68
  nearest_hex = nil
58
69
  current_distance = nil
@@ -71,28 +82,30 @@ class AxialHex < BaseHex
71
82
  nearest_hex
72
83
  end
73
84
 
74
- ##
75
85
  # Compute the distance (in hex) between two hexagons
76
- # - +h+ : an Hex::Axial object
77
86
  #
78
- # Example
87
+ # @param h [AxialHex] a AxialHex object
79
88
  #
80
- # h1 = Hex::Axial.new( 5, 5 )
81
- # h2 = Hex::Axial.new( 20, 20 )
89
+ # @example
90
+ #
91
+ # h1 = AxialHex.new( 5, 5 )
92
+ # h2 = AxialHex.new( 20, 20 )
82
93
  #
83
94
  # h1.distance( h2 ) #=> 30
84
95
  #
85
- # Hex::Axial.new( 5, 5 ).distance( Hex::Axial.new( 5, 5 ) ) #=> 0
86
- # Hex::Axial.new( 5, 5 ).distance( Hex::Axial.new( 5, 1 ) ) #=> 1
96
+ # AxialHex.new( 5, 5 ).distance( AxialHex.new( 5, 5 ) ) #=> 0
97
+ # AxialHex.new( 5, 5 ).distance( AxialHex.new( 5, 1 ) ) #=> 1
98
+ #
99
+ # @return [Integer] the distance between the two hexes (in hexes)
87
100
  #
88
- # *Returns* : the distance between the two hexes as an integer.
89
101
  def distance( h )
90
102
  to_cube.distance(h.to_cube)
91
103
  end
92
104
 
93
105
  # Get all hexagons surrounding the current hexagon
94
106
  #
95
- # *Returns* : an array of Hex::Axial.
107
+ # @return [Array<AxialHex>] an array of AxialHex
108
+ #
96
109
  def surrounding_hexes
97
110
  # puts self.inspect, self.q.inspect, self.r.inspect
98
111
  DIRECTIONS.map{ |e| AxialHex.new( @q+e[0], @r+e[1] ) }
@@ -100,21 +113,24 @@ class AxialHex < BaseHex
100
113
 
101
114
  # Check if an hexagon is around another hexagon
102
115
  #
103
- # *Returns* : true if the hexagon is adjacent to the other, false otherwise. Note, h.hex_surrounding_hex?( h ) == false
116
+ # @return [Boolean] true if the hexagon is adjacent to the other, false otherwise. Note, h.hex_surrounding_hex?( h ) == false
117
+ #
104
118
  def hex_surrounding_hex?(hex)
105
119
  distance(hex)==1
106
120
  end
107
121
 
108
122
  # Round an hexagon coordinates (useful after pixel to axial coordinate transformation)
109
123
  #
110
- # *Returns* : an Hex::Axial with coords rounded.
124
+ # @return [AxialHex] an hex with coords rounded
125
+ #
111
126
  def round
112
127
  to_cube.round.to_axial
113
128
  end
114
129
 
115
130
  # Transform an hex to it's q, r coordinates
116
131
  #
117
- # *Returns* : an array [ q, r ]
132
+ # @return [Array<Integer>] an array [ q, r ]
133
+ #
118
134
  def qr
119
135
  [ q, r ]
120
136
  end
@@ -1,9 +1,16 @@
1
+ # This is the base hexagon class designed to be derived into axial and cube hexagons.
2
+ # Sould never been instancied.
3
+ #
4
+ # @attr_reader [String] the color of the hexagon an ImageMagic compatible string
5
+ # @attr_reader [Boolean] is the hexagon cut by the border of the picture
6
+ # @attr_reader [Object] your data, anything you want
7
+ #
1
8
  class BaseHex
2
- attr_accessor :color, :border, :data #:nodoc:
9
+ attr_accessor :color, :border, :data
3
10
 
4
11
  def initialize( color = nil, border = nil, data = nil )
5
12
  @color = color if color
6
- @border = @border if border
13
+ @border = border if border
7
14
  @data = data
8
15
  end
9
16
  end
@@ -6,14 +6,21 @@ require_relative 'base_hex'
6
6
  # to understand what a cube coordinates system is
7
7
  # The cube class is only for computation.
8
8
  # It is not intended to be used directly in your program.
9
+ #
10
+ # @attr_reader [Integer] x the x coordinate of the cube representation of the hexagon
11
+ # @attr_reader [Integer] y the y coordinate of the cube representation of the hexagon
12
+ # @attr_reader [Integer] z the z coordinate of the cube representation of the hexagon
13
+ #
9
14
  class CubeHex < BaseHex
10
15
 
11
- attr_reader :x,:y,:z #:nodoc:
16
+ attr_reader :x,:y,:z
12
17
 
13
18
  # Create an hexagon object
14
- # - +x+, +y+, +z+ are the coordinates in the axial coords system
15
19
  #
16
- # *Returns* : a new Hex::Cube object.
20
+ # @param x [Integer] x coordinate
21
+ # @param y [Integer] y coordinate
22
+ # @param z [Integer] z coordinate
23
+ #
17
24
  def initialize( x, y, z, color: nil, border: nil, data: nil )
18
25
  @x = x
19
26
  @y = y
@@ -24,14 +31,16 @@ class CubeHex < BaseHex
24
31
 
25
32
  # Transform a cube represented hexagon to an Hexagon::Axial represented hexagon
26
33
  #
27
- # *Returns* : a new Hex::Axial object.
34
+ # @return [AxialHex] a new AxialHex object
35
+ #
28
36
  def to_axial
29
37
  AxialHex.new(@x, @z, color: @color, border: @border, data: @data)
30
38
  end
31
39
 
32
- # Round the float coordinates to integer coordinates.
40
+ # Round the float coordinates to integer coordinates
41
+ #
42
+ # @return [AxialCube] a new CubeHex object
33
43
  #
34
- # *Returns* : a new Hex::Cube object.
35
44
  def round
36
45
  rx=@x.round(0)
37
46
  ry=@y.round(0)
@@ -53,7 +62,8 @@ class CubeHex < BaseHex
53
62
 
54
63
  # Compute the distance between two hexagons (in hexagons)
55
64
  #
56
- # *Returns* : an integer : the distance between hex in hexagons.
65
+ # @return [Ingteger] the distance between hex in hexagons
66
+ #
57
67
  def distance(h)
58
68
  [(@x - h.x).abs, (@y - h.y).abs, (@z - h.z).abs].max
59
69
  end
@@ -1,8 +1,12 @@
1
1
  # This module contains the methods relatives to ascii map reading
2
2
  module AsciiToGrid
3
3
 
4
- # Read an ascii file and load it into the hexagon grid.
5
- # - +file_path+ : is the name of the ascii file to read. For how to create this file, please see : https://github.com/czuger/rhex#reading-a-grid-from-an-ascii-file
4
+ # Read an ascii file and load it into the hexagon grid.
5
+ #
6
+ # @param file_path [String] the name of the ascii file to read. For how to create this file, please see : https://github.com/czuger/rhex#reading-a-grid-from-an-ascii-file
7
+ #
8
+ # @see https://github.com/czuger/rhex#reading-a-grid-from-an-ascii-file
9
+ #
6
10
  def read_ascii_file( file_path )
7
11
  File.open( file_path ) do |file|
8
12
 
@@ -12,9 +16,11 @@ module AsciiToGrid
12
16
  elements = line.split
13
17
  q = 0
14
18
  elements.each do |element|
19
+ # puts "r = #{r} q = #{q}, test = #{( r == 0 || q == 0 )}"
15
20
  border = true if ( r == 0 || q == 0 )
16
- shifted_q = q - ( r/2 )
17
- cset( shifted_q, r, color: element, border: border )
21
+ shifted_q = q - ( r/2 )
22
+ shifted_q = q
23
+ cset( shifted_q, r, color: element.to_sym, border: border )
18
24
  q += 1
19
25
  end
20
26
  r += 1
@@ -28,7 +34,6 @@ module AsciiToGrid
28
34
  end
29
35
 
30
36
  @hexes.each{ |key, e| e.border = true if e.r == ( max_r - 1 ) }
31
-
32
37
  end
33
38
  end
34
39
 
@@ -7,17 +7,15 @@ rescue Gem::LoadError
7
7
  puts 'Caution : Rmagick is not installed'
8
8
  end
9
9
 
10
- # This module contain methods to draw a grid to a picture file.
11
- # It is included in Grid.
10
+ # This module contain the methods to draw a grid to a picture file.
12
11
  module GridToPic
13
12
 
14
- attr_reader :hex_height, :hex_width #:nodoc:
15
- attr_reader :quarter_height, :half_width #:nodoc:
16
-
17
13
  # Draw the hex grid in a Magick::Image object
18
- # - +exit_on_error+ : by default, if you call this method and rmagic is not installed, the program exit with an error. You can disable it and make the program continue.
19
14
  #
20
- # *Returns* : the Magick::Image object
15
+ # @param exit_on_error [Boolean] by default, if you call this method and rmagic is not installed, the program exit with an error. You can disable it and make the program continue.
16
+ #
17
+ # @return [Magick::Image] a Magick::Image object
18
+ #
21
19
  def to_rmagick_image( exit_on_error = true )
22
20
  unless defined?( Magick::Image ) && defined?( Magick::HatchFill ) && defined?( Magick::Draw )
23
21
  puts 'Rmagick is not installed !!! You can\'t dump hex grid to pic'
@@ -45,10 +43,12 @@ module GridToPic
45
43
  end
46
44
 
47
45
  # Draw the hex grid on a Magick::Object and save it to a file
48
- # - +pic_name+ : the name of the picture file (can be *.bmp, *.png, *.jpg)
49
- # - +exit_on_error+ : by default, if you call this method and rmagic is not installed, the program exit with an error. You can disable it and make the program continue.
50
46
  #
51
- # *Returns* : true if the file was created successfully, false otherwise.
47
+ # @param exit_on_error [Boolean] by default, if you call this method and rmagic is not installed, the program exit with an error. You can disable it and make the program continue
48
+ # @param pic_name [String] the name of the picture file (can be *.bmp, *.png, *.jpg)
49
+ #
50
+ # @return [Boolean] true if the file was created successfully, false otherwise
51
+ #
52
52
  def to_pic( pic_name, exit_on_error = true )
53
53
  canvas = to_rmagick_image( exit_on_error )
54
54
  canvas.write( pic_name )
@@ -58,6 +58,8 @@ module GridToPic
58
58
 
59
59
  def set_hex_dimensions
60
60
 
61
+ # p :call
62
+
61
63
  @hex_height = @hex_ray * 2.0
62
64
  @hex_width = Math.sqrt(3)/2.0 * @hex_height
63
65
 
@@ -74,8 +76,8 @@ module GridToPic
74
76
  def draw_hex( gc, hex )
75
77
  x, y = to_xy( hex )
76
78
 
77
- x -= @hex_width
78
- y -= @quarter_height * 2
79
+ # p hex
80
+ # puts [ x, y ]
79
81
 
80
82
  color = get_color( hex )
81
83
  gc.fill( color.to_s )
@@ -1,12 +1,55 @@
1
1
  require_relative 'axial_grid'
2
2
  require_relative 'cube_hex'
3
3
 
4
+ # This class represents a grid of hexagons stored in an axial coordinate system but manage the conversion to a square representation (what finally you want)
5
+ #
6
+ # @author Cédric ZUGER
7
+ #
4
8
  class SquareGrid < AxialGrid
5
9
 
10
+ include AsciiToGrid
11
+ include GridToPic
12
+
13
+ # Create an axial hexagon grid
14
+ #
15
+ # @param hex_ray [Integer] the size of an hexagon.
16
+ # @param element_to_color_hash [Hash] a hash that relate color (see BaseHex::Axial.new) to a color. This is used to dump your grid to a bitmap field
17
+ #
18
+ # @example
19
+ # @g = Hex::Grid.new(
20
+ # element_to_color_hash: {
21
+ # m: :brown, g: :green, w: :blue
22
+ # }
23
+ # )
24
+ # Assuming you want all hex with a color of m are drawn in brown,g in green, etc ... (see GridToPic for drawing a grid)
25
+ #
26
+ def initialize( hex_ray: 16, element_to_color_hash: {} )
27
+ super( hex_ray: hex_ray )
28
+ @element_to_color_hash = element_to_color_hash
29
+ set_hex_dimensions
30
+ end
31
+
32
+ # Create an hexagon at a given position (col, row)
33
+ #
34
+ # @param col [Integer] the col coordinate of the hexagon
35
+ # @param row [Integer] the row coordinate of the hexagon
36
+ # @param color [String] a colorstring that can be used by ImageMagic
37
+ # @param border [Boolean] is the hex on the border of the screen (not fully draw)
38
+ # @param data [Unknown] some data associated with the hexagone. Everything you want, it is up to you
39
+ #
40
+ # @return [AxialHex] an hexagon
41
+ #
6
42
  def cset( col, row, color: nil, border: false, data: nil )
7
43
  hset( even_q_to_axial_hex( col, row, color: color, border: border, data: data ) )
8
44
  end
9
45
 
46
+ # Get the hexagon at a given position (col, row)
47
+ #
48
+ # @param col [Integer] the col coordinate of the hexagon
49
+ # @param row [Integer] the row coordinate of the hexagon
50
+ #
51
+ # @return [AxialHex] the hexagon at the requested position. nil if nothing
52
+ #
10
53
  def cget( col, row )
11
54
  hget( even_q_to_axial_hex( col, row ) )
12
55
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rhex
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cédric ZUGER