Generate props.json (trees)

by espeon

HTML

<div id="header"></div>---
<div id="main"></div>

JavaScript

(function ($) {
    var display = function (selector, txt) {
        $(selector).append(txt);
    };

    var output = "";
    var count = 0;
    var grid = {
        cellWidth: 200,
        cellHeight: 100,
        width: 30,
        height: 30
    };
    grid.originX = grid.cellWidth * grid.width / 2;
    grid.originY = 400;


    for (var x = -(grid.height / 2); x < (grid.height + grid.height / 2); x++) {
        for (var y = -(grid.width / 2); y < (grid.width + grid.width / 2); y++) {
            var isInXZone = (x >= 5 && x <= 25);
            var isInYZone = (y >= 5 && y <= 25);
            if (isInXZone && isInYZone) {
                continue;
            }

            var deltaX = 50;
            var deltaY = 30;
            var offsetX = 190 - deltaX + Math.round(Math.random() * deltaX * 2);
            var offsetY = 325 - deltaY + Math.round(Math.random() * deltaY * 2);

            var left = grid.cellWidth / 2 * (y - x) - offsetX + grid.originX;
            var top = grid.cellHeight / 2 * (x + y) - offsetY + grid.originY;
            var isHorizontallyOutside = (left <= 0 || left >= grid.cellWidth * grid.width);
            var isVerticallyOutside = (top <= 0 || top >= grid.cellHeight * grid.height);
            if (isHorizontallyOutside || isVerticallyOutside) {
                continue;
            }

            if (Math.random() < 0.9) {
                continue;
            }
            
            var tree = (Math.random() > 0.3) ? "tree--oak" : "tree--cedar";

            output += '{ "type": "' + tree + '", "grid": { "offsetX": ' + offsetX + ', "offsetY": ' + offsetY + ', "height": 1, "width": 1, "x": ' + x + ',  "y": ' + y + ' } },';
            count++;
        }
    }

    display("#main", output);
    display("#header", count + " trees generated (1600 max.) !<br>");
    display("#header", Math.round(count / 1800 * 100) + "% of the map is covered...");

})(jQuery);