rhex 2.0.0 → 2.0.1

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