mutoo
5/30/2015 - 7:20 AM

ExpTable.js

var ExpTable = function () {
    this.table = [];
};

ExpTable.prototype.addRow = function (row) {
    this.table.push(row);
};

ExpTable.prototype.getConfigFromExp = function(total_exp) {
    var row;
    for (row = 0, len = this.table.length; row < len; row++) {
        if (this.table[row].end >= total_exp) {
            return this.table[row];
        }
    }
    return this.table[row - 1]; // top level
};

ExpTable.prototype.getConfigFromLevel0 = function(level0) {
    return this.table[level0];
};

ExpTable.prototype.getConfigFromLevel1 = function(level1) {
    return this.table[level1 - 1];
};

ExpTable.createWithInterval = function (data) {
    var expTable = new ExpTable();
    var lastRow = null;

    _.each(data, function (rowData, idx) {
        var row = {
            lv0: idx,
            lv1: idx + 1
        };

        if (lastRow === null) {
            row.start = 0;
            row.end = rowData - 1;
            row.interval = rowData;
        } else {
            row.start = lastRow.start + lastRow.interval;
            row.end = lastRow.end + rowData;
            row.interval = rowData;
        }

        expTable.addRow(row);
        lastRow = row;
    });

    return expTable;
};

ExpTable.createWithEnd = function (data) {
    var expTable = new ExpTable();
    var lastRow = null;

    _.each(data, function (rowData, idx) {
        var row = {
            lv0: idx,
            lv1: idx + 1
        };

        if (lastRow === null) {
            row.start = 0;
            row.end = rowData;
            row.interval = rowData + 1;
        } else {
            row.start = lastRow.start + lastRow.interval;
            row.end = rowData;
            row.interval = rowData - lastRow.interval + 1;
        }

        expTable.addRow(row);
        lastRow = row;
    });

    return expTable;
};