103 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
function createHex(centerX, centerY)
 | 
						|
	local hex = {}
 | 
						|
  hex.centerX = centerX
 | 
						|
	hex.centerY = centerY
 | 
						|
	hex.size = 45
 | 
						|
 | 
						|
--The height is size *2
 | 
						|
--The width is sqrt(3)/2 * height
 | 
						|
--Horizontal distance between two hexes is horiz = width
 | 
						|
  
 | 
						|
	hex.height = hex.size * 2
 | 
						|
	hex.width = math.sqrt(3)/2 * hex.height
 | 
						|
 | 
						|
	local lastX = nil
 | 
						|
	local lastY = nil
 | 
						|
	
 | 
						|
	hex.sides = {}
 | 
						|
 | 
						|
	for i=0,6 do
 | 
						|
		local angle = 2 * math.pi/6 * (i + 0.5)
 | 
						|
		local x = hex.centerX + hex.size * math.cos(angle)
 | 
						|
		local y = hex.centerY + hex.size * math.sin(angle)
 | 
						|
 | 
						|
		if i > 0 then
 | 
						|
			hex.sides[i] = {lastX, lastY, x, y}
 | 
						|
		end
 | 
						|
 | 
						|
		lastX = x
 | 
						|
		lastY = y
 | 
						|
 | 
						|
	end
 | 
						|
 | 
						|
	return hex
 | 
						|
end
 | 
						|
 | 
						|
function createGrid()
 | 
						|
 | 
						|
	hexes = {}
 | 
						|
	
 | 
						|
	--width and height of hex grid
 | 
						|
	maxX = 10
 | 
						|
	maxY = 1
 | 
						|
 | 
						|
	centerX= love.graphics.getWidth() / 2
 | 
						|
	centerY = love.graphics.getHeight() / 2
 | 
						|
	for y=1, maxY do
 | 
						|
		for x=1, maxX do
 | 
						|
			if x == 1 then
 | 
						|
				hexes[x] = createHex (centerX, centerY)
 | 
						|
			else
 | 
						|
				centerX = hexes[x-1].centerX + hexes[x-1].width
 | 
						|
				hexes[x] = createHex( centerX, centerY)
 | 
						|
			end
 | 
						|
		end
 | 
						|
	end
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
function love.load()
 | 
						|
createGrid()
 | 
						|
end
 | 
						|
 | 
						|
function love.update()
 | 
						|
 | 
						|
end
 | 
						|
 | 
						|
function love.draw()
 | 
						|
	love.graphics.setColor({255,255,255,255})
 | 
						|
	
 | 
						|
	--create our first hex #note: this will all end up 
 | 
						|
	--in a single for loop to draw a complete grid
 | 
						|
--	temp=createHex (300,300)
 | 
						|
--	hex1=createHex(0+temp.width,0+temp.height)
 | 
						|
 | 
						|
--	for i=1, #hex1.sides do
 | 
						|
--		love.graphics.line(unpack(hex1.sides[i]))
 | 
						|
--	end
 | 
						|
----------------------
 | 
						|
	for h=1, #hexes do
 | 
						|
		for l=1, #hexes[h].sides do
 | 
						|
			love.graphics.line(unpack(hexes[h].sides[l]))
 | 
						|
		end
 | 
						|
	end
 | 
						|
  
 | 
						|
	--Here we create another hex and place it to the side
 | 
						|
--	newCenterX = hex1.centerX + hex1.width
 | 
						|
--	hex2=createHex(newCenterX,hex1.centerY)
 | 
						|
 | 
						|
--	for i=1, #hex2.sides do
 | 
						|
--		love.graphics.line(unpack(hex2.sides[i]))
 | 
						|
--	end
 | 
						|
 | 
						|
	-- Here we want to move down a row and base it from the first hex
 | 
						|
--	newCenterY = hex1.centerY+(hex1.height * 3/4)
 | 
						|
--	newCenterX = (hex1.centerX + hex2.centerX)/2
 | 
						|
--	hex3 = createHex(newCenterX, newCenterY)
 | 
						|
 | 
						|
--	for i=1, #hex3.sides do
 | 
						|
--		love.graphics.line(unpack(hex3.sides[i]))
 | 
						|
--	end
 | 
						|
 | 
						|
end
 |