Page 1 of 1

HEXAGÖN - A library for drawing hexagonal grids

Posted: Fri Mar 15, 2019 2:19 pm
by Eldy
This is a small library that I wrote as a proof of concept for a project.

Basically everything is in the README.md file. It is not very developped, but I like to believe it has a solid foundation. Maybe it will be useful for someone else?

Check out the demo included in the repository!

https://github.com/olivier-grech/hexagon

Re: HEXAGÖN - A library for drawing hexagonal grids

Posted: Fri Mar 15, 2019 11:10 pm
by keharriso
Looks like a cool little library. You should really look into using local variables, though. By default, Lua variables are global, even inside of functions. It looks like your helper functions (toHexagonCoordinatesHorizontal, toHexagonCoordinatesVertical, distanceBetween) are also global. You might want to make them local and stick them at the top.

Re: HEXAGÖN - A library for drawing hexagonal grids

Posted: Mon Mar 18, 2019 10:44 am
by Eldy
Thanks for your answer.

Is sticking

Code: Select all

local
in front of the variable/function enough, or is there something else I should be aware of?

Re: HEXAGÖN - A library for drawing hexagonal grids

Posted: Mon Mar 18, 2019 1:47 pm
by keharriso
Eldy wrote:
Mon Mar 18, 2019 10:44 am
Thanks for your answer.

Is sticking

Code: Select all

local
in front of the variable/function enough, or is there something else I should be aware of?

Code: Select all

local
is all you should need.

Re: HEXAGÖN - A library for drawing hexagonal grids

Posted: Tue Mar 19, 2019 3:43 pm
by Eldy
I have taken your remarks into account.

Re: HEXAGÖN - A library for drawing hexagonal grids

Posted: Tue Mar 19, 2019 5:10 pm
by keharriso
There's still:
  • offset
  • xA
  • xB
  • xC
  • yA
  • yB
  • yC
  • distanceToA
  • distanceToB
  • distanceToC
  • hexagonA
  • hexagonB
  • hexagonC
  • possibleHexagons
  • distances
  • closerHexagon
  • resultX
  • resultY
  • hx
  • hy

Re: HEXAGÖN - A library for drawing hexagonal grids

Posted: Wed Mar 20, 2019 8:08 pm
by Eldy
Thanks a lot for your help. This should be done now, hopefully.

Re: HEXAGÖN - A library for drawing hexagonal grids

Posted: Sun Apr 07, 2019 10:33 am
by Eldy
Hello everyone!

I did some refactoring on my library. I belive it makes more sense now. You can check out the demo, but here's a really basic case as an example.

You can put this in the love.load() method for example:

Code: Select all

-- Create a 5*5 grid
demoGrid = hexagon.grid(5, 5, 50, true, false)

-- Create a canvas on which to draw the grid
demoCanvas = love.graphics.newCanvas(800, 600)
And this would be in the love.draw() method:

Code: Select all

-- Draw the demonstration grid on the canvas
hexagon.drawGrid(demoGrid, demoCanvas)
That's it.

As a design note, the method that was used to draw a single hexagon was annoying for me from an architectural point of view. So I made it a private method, and refactored the method to draw a grid so it is more intuitive to use.

If you want to draw a single hexagon, you can still draw a 1*1 grid. :megagrin:

On the future evolution of this library, here's what I would like to do:
  • Add the ability to pass a two-dimensional array to draw a grid. Each elements of the array would store, for example, the color of an hexagon.
  • Handle the case where the grid is drawn with an offset on the canvas (so it does not mess up with the coordinates calculation). This was somewhat handled in the previous version, but not every case was taken into account. So I removed it until I find a satisfactory solution.
  • Add more comments. :ehem: In my defense, I added some comments in the demo file along with the refactor.
Enjoy!