//
// need to use the drone module to create buildings easily
// it can be done using calls to putBlock(), putSign(), getPlayerPos() and getMousePos()
// but it's easier to use the Drone class
// __folder is a special javascript variable whose value is the directory where the 
// current script resides.
//
// usage: 
// [1] to build a cottage at the player's current location or the cross-hairs location...
//
// /js cottage();
// 
// [2] to build a cottage using an existing drone...
// 
// /js drone.cottage();
//

Drone.extend('cottage',function ()
{
    this.chkpt('cottage')
        .box0(48,7,2,6)  // 4 walls
        .right(3).door() // door front and center
        .up(1).left(2).box(102) // windows to left and right
        .right(4).box(102)
        .left(5).up().prism0(53,7,6);
    //
    // put up a sign near door. 
    //
    this.down().right(4).sign(["Home","Sweet","Home"],68);
    
    return this.move('cottage');
});
//
// a more complex script that builds an tree-lined avenue with
// cottages on both sides.
//
Drone.extend('cottage_road', function(numberCottages)
{
    if (typeof numberCottages == "undefined"){
        numberCottages = 6;
    }
    var i=0, distanceBetweenTrees = 11;
    //
    // step 1 build the road.
    //
    var cottagesPerSide = Math.floor(numberCottages/2);
    this
        .chkpt("cottage_road") // make sure the drone's state is saved.
        .box(43,3,1,cottagesPerSide*(distanceBetweenTrees+1)) // build the road
        .up().right() // now centered in middle of road
        .chkpt("cr"); // will be returning to this position later

    //
    // step 2 line the road with trees
    //
    for (; i < cottagesPerSide+1;i++){
        this
            .left(5).oak() 
            .right(10).oak()
            .left(5) // return to middle of road
            .fwd(distanceBetweenTrees+1); // move forward.
    }
    this.move("cr").back(6); // move back 1/2 the distance between trees

    // this function builds a path leading to a cottage.
    function pathAndCottage(d){
        return d.down().box(43,1,1,5).fwd(5).left(3).up().cottage();
    };
    //
    // step 3 build cottages on each side
    //
    for (i = 0;i < cottagesPerSide; i++)
    {
        this.fwd(distanceBetweenTrees+1).chkpt("r"+i);
        // build cottage on left
        pathAndCottage(this.turn(3)).move("r"+i);
        // build cottage on right
        pathAndCottage(this.turn()).move("r"+i);
    }
    // return drone to where it was at start of function
    return this.move("cottage_road"); 
});

