-
Notifications
You must be signed in to change notification settings - Fork 0
/
grid.coffee
43 lines (39 loc) · 1.39 KB
/
grid.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
MAP_SIZE = 17
MAP_CENTER = 305
gridLozenge = (centerCellId, innerRadius, outerRadius, checkObstacles, shouldMark) ->
cX = getCellX(centerCellId)
cY = getCellY(centerCellId)
x = cX - outerRadius
result = []
while(x <= cX + outerRadius)
y = cY - outerRadius
while(y <= cY + outerRadius)
cell = getCellFromXY(x, y)
if(cell != null && getCellDistance(centerCellId, cell) <= outerRadius && getCellDistance(centerCellId, cell) >= innerRadius && (!checkObstacles || !inArray(gObstacles, cell)))
push(result, cell)
if (shouldMark != false)
mark(cell, shouldMark)
y++
x++
result
gridLines = (centerCellId, innerRadius, outerRadius, checkObstacles, shouldMark) ->
cX = getCellX(centerCellId)
cY = getCellY(centerCellId)
result = []
x = cX - outerRadius
while(x <= cX + outerRadius)
cell = getCellFromXY(x, cY)
if(cell != null && getCellDistance(centerCellId, cell) >= innerRadius && (!checkObstacles || !inArray(gObstacles, cell)))
push(result, cell)
if(shouldMark != false)
mark(cell, shouldMark)
x++
y = cY - outerRadius
while(y <= cY + outerRadius)
cell = getCellFromXY(cX, y)
if(cell != null && getCellDistance(centerCellId, cell) >= innerRadius && (!checkObstacles || !inArray(gObstacles, cell)))
push(result, cell)
if(shouldMark != false)
mark(cell, shouldMark)
y++
result