#  0000000   00000000   0000000   00000000    0000000    
# 000        000       000   000  000   000  000         
# 000  0000  0000000   000000000  0000000    0000000     
# 000   000  000       000   000  000   000       000    
#  0000000   00000000  000   000  000   000  0000000     

module.exports =
    name:       "gears"
    scheme:     "blue"
    size:       [9,9,9]
    help:       """
                to activate the exit
                feed it with electricity:
                    
                connect the generator
                with the motor
                and close the circuit
                with the wire stones.
                """
    player:     
        position:    [0,0,0]
        orientation: minusXupZ
    exits:      [
        name:         "exit"
        active:       0
        position:     [0,4,0]
    ]
    create: ->
        s = world.size
        
        {Wire,Face,Generator,MotorCylinder,MotorGear,Gear} = require '../items'
        
        world.addObjectAtPos 'WireStone', world.decenter -1, 0, 0
        world.addObjectAtPos 'WireStone', world.decenter  1, 0, 0
        world.addObjectAtPos 'WireStone', world.decenter  0,-1, 0
        world.addObjectAtPos 'WireStone', world.decenter  0, 1, 0
        world.addObjectAtPos 'WireStone', world.decenter  0, 0,-1
        world.addObjectAtPos 'WireStone', world.decenter  0, 0, 1
        
        world.addObjectAtPos new Gear(Face.Y), s.x/2-1, 0, s.z/2-1
        world.addObjectAtPos new Gear(Face.Y), s.x/2+1, 0, s.z/2-1
        world.addObjectAtPos new Gear(Face.Y), s.x/2-1, 0, s.z/2+1
        
        d = 3
        world.addObjectAtPos new Generator(Face.Y), s.x/2+1, 0, s.z/2+1
        world.addObjectAtPos new MotorCylinder(Face.Y), s.x/2, 1, s.z/2
        world.addObjectAtPos new MotorGear(Face.Y), s.x/2, 0, s.z/2
        
        # floor wire square
        world.addObjectLine 'new Wire(Face.Y, 10)', s.x/2-d+1, 0, s.z/2-d, s.x/2+d, 0, s.z/2-d
        world.addObjectLine 'new Wire(Face.Y, 10)', s.x/2-d+1, 0, s.z/2+d, s.x/2+d, 0, s.z/2+d
        world.addObjectLine 'new Wire(Face.Y, 5)',  s.x/2-d, 0, s.z/2-d+1, s.x/2-d, 0, s.z/2+d
        world.addObjectLine 'new Wire(Face.Y, 5)',  s.x/2+d, 0, s.z/2-d+1, s.x/2+d, 0, s.z/2+d
        # corners of wire square
        world.addObjectAtPos new Wire(Face.Y, 6),  s.x/2-d, 0, s.z/2-d
        world.addObjectAtPos new Wire(Face.Y, 3),  s.x/2-d, 0, s.z/2+d
        world.addObjectAtPos new Wire(Face.Y, 9),  s.x/2+d, 0, s.z/2+d
        world.addObjectAtPos new Wire(Face.Y, 12), s.x/2+d, 0, s.z/2-d
        
        world.addObjectAtPos new Wire(Face.X, 1), 0, 0, s.z/2
        world.addObjectAtPos new Wire(Face.NX, 1), s.x-1, 0, s.z/2
        
        world.addObjectLine 'new Wire(Face.X, 5)',      0, 1, s.z/2,     0, s.y, s.z/2
        world.addObjectLine 'new Wire(Face.NX, 5)',  s.x-1, 1, s.z/2, s.x-1, s.y, s.z/2
        world.addObjectLine 'new Wire(Face.NY, 10)', 0, s.y-1, s.z/2, s.x, s.y-1, s.z/2
        