#@name pacman3
@inputs 
@outputs 
@persist EGP:wirelink EGPN
@trigger none

function wirelink:egpGrid(ID, Start:vector2, X, Y, SizeX, SizeY){
    local LineStrip = array() #Designate Array
    #Generate Vertical Lines
    for(I = 1, 3*X+3, 3){
        Horiz = Start:x() + SizeX * (I-1)/3
        LineStrip[I,vector2]   = vec2(Horiz, Start:y())  #Start Position
        LineStrip[I+1,vector2] = vec2(Horiz, Start:y() + SizeY*Y)  #End Position
        LineStrip[I+2,vector2] = vec2(Horiz, Start:y())  #Return to Start
    }
    #Add in a Return vector
    LineStrip[3*X+4,vector2] = Start
    #Generate Horizontal Lines
    for(I = 1, 3*Y+3, 3){
        Vert = Start:y() + SizeY * (I-1)/3
        LineStrip[I+(3*X+4),vector2]   = vec2(Start:x(), Vert)  #Start Position
        LineStrip[I+1+(3*X+4),vector2] = vec2(Start:x() + SizeX*X, Vert)  #End Position
        LineStrip[I+2+(3*X+4),vector2] = vec2(Start:x(), Vert)  #Return to Start
    }
    This:egpLineStrip(ID, LineStrip) #And now we hit the draw command
}

Maze = "
# # # # # # # # # # # # # # # # # # # # # # #
# . . . . . . . . . . # . . . . . . . . . . #
# . # # # . # # # # . # . # # # # . # # # . #
# . # # # . # # # # . # . # # # # . # # # . #
# . . . . . . . . . . . . . . . . . . . . . #
# . # # # . # . # # # # # # # . # . # # # . #
# . . . . . # . # # # # # # # . # . . . . . #
# # # # # . # . . . . # . . . . # . # # # # #
# # # # # . # # # # - # - # # # # . # # # # #
# # # # # . # - - - - - - - - - # . # # # # #
# # # # # . # - # # # - # # # - # . # # # # #
T - - - - . - - # M M - M M # - - . - - - - T
# # # # # . # - # # # # # # # - # . # # # # #
# # # # # . # - - - - - - - - - # . # # # # #
# # # # # . # - # # # # # # # - # . # # # # #
# # # # # . # - # # # # # # # - # . # # # # #
# . . . . . . . . . . # . . . . . . . . . . #
# . # # # . # # # # . # . # # # # . # # # . #
# . . . # . . . . . . P . . . . . . # . . . #
# # # . # . # . # # # # # # # . # . # . # # #
# . . . . . # . . . . # . . . . # . . . . . #
# . # # # # # # # # . # . # # # # # # # # . #
# . # # # # # # # # . # . # # # # # # # # . #
# . . . . . . . . . . . . . . . . . . . . . #
# # # # # # # # # # # # # # # # # # # # # # #
":replaceRE("%s+", ",")

EGP = entity():isWeldedTo():wirelink()
EGP:egpClear()
EGP:egpDrawTopLeft(1)

Cell   = 16

Offset = vec2(16, 16)
WallColor = hsv2rgb(240, 1, 1/2)
Radius = 8

#-- Background
EGPN++
EGP:egpBox(EGPN, vec2(), vec2(512,512))


#-- Outer walls
EGPN++
EGP:egpBox(EGPN, vec2(0, 0) + Offset, vec2(Cell*23, Cell))
EGP:egpColor(EGPN, WallColor)

EGPN++
EGP:egpBox(EGPN, vec2(0, Cell*24) + Offset, vec2(Cell*23, Cell))
EGP:egpColor(EGPN, WallColor)

EGPN++
EGP:egpBox(EGPN, vec2(0, 0) + Offset, vec2(Cell, Cell*11))
EGP:egpColor(EGPN, WallColor)

EGPN++
EGP:egpBox(EGPN, vec2(0, Cell*12) + Offset, vec2(Cell, Cell*12))
EGP:egpColor(EGPN, WallColor)

EGPN++
EGP:egpBox(EGPN, vec2(Cell*22, 0) + Offset, vec2(Cell, Cell*11))
EGP:egpColor(EGPN, WallColor)

EGPN++
EGP:egpBox(EGPN, vec2(Cell*22, Cell*12) + Offset, vec2(Cell, Cell*12))
EGP:egpColor(EGPN, WallColor)


#-- Interior
EGPN++
EGP:egpBox(EGPN, vec2(0, Cell*7) + Offset, vec2(Cell*5, Cell*4))
EGP:egpColor(EGPN, WallColor)

EGPN++
EGP:egpBox(EGPN, vec2(Cell*18, Cell*7) + Offset, vec2(Cell*5, Cell*4))
EGP:egpColor(EGPN, WallColor)

EGPN++
EGP:egpBox(EGPN, vec2(0, Cell*12) + Offset, vec2(Cell*5, Cell*4))
EGP:egpColor(EGPN, WallColor)

EGPN++
EGP:egpBox(EGPN, vec2(Cell*18, Cell*12) + Offset, vec2(Cell*5, Cell*4))
EGP:egpColor(EGPN, WallColor)


EGPN++
EGP:egpBox(EGPN, vec2(Cell*2, Cell*2) + Offset, vec2(Cell*3, Cell*2))
EGP:egpColor(EGPN, WallColor)

EGPN++
EGP:egpBox(EGPN, vec2(Cell*18, Cell*2) + Offset, vec2(Cell*3, Cell*2))
EGP:egpColor(EGPN, WallColor)
#EGPN++
#EGP:egpBox(EGPN, Offset, vec2(Cell*23, Cell*25))
#EGP:egpColor(EGPN, hsv2rgb(240, 1, 1/2))



#-- Horizontal lines
#[EGPN++
EGP:egpRoundedBox(EGPN, vec2(Cell, Cell) + Offset, vec2(Cell*10, Cell))
EGP:egpRadius(EGPN, Radius)

EGPN++
EGP:egpRoundedBox(EGPN, vec2(Cell*12, Cell) + Offset, vec2(Cell*10, Cell))
EGP:egpRadius(EGPN, Radius)

EGPN++
EGP:egpRoundedBox(EGPN, vec2(Cell, Cell*5) + Offset, vec2(Cell*21, Cell))
EGP:egpRadius(EGPN, Radius)

EGPN++
EGP:egpRoundedBox(EGPN, vec2(Cell, Cell*7) + Offset, vec2(Cell*5, Cell))
EGP:egpRadius(EGPN, Radius)

EGPN++
EGP:egpRoundedBox(EGPN, vec2(Cell*17, Cell*7) + Offset, vec2(Cell*5, Cell))
EGP:egpRadius(EGPN, Radius)

EGPN++
EGP:egpRoundedBox(EGPN, vec2(0, Cell*12) + Offset, vec2(Cell*8, Cell))
EGP:egpRadius(EGPN, Radius)

EGPN++
EGP:egpRoundedBox(EGPN, vec2(Cell*(23 - 8), Cell*12) + Offset, vec2(Cell*8, Cell))
EGP:egpRadius(EGPN, Radius)
]#











EGPN++
EGP:egpGrid(EGPN, Offset, 23, 25, Cell, Cell)
EGP:egpColor(EGPN, vec(15))
