スキルポイントとレベル
TotalSkillPointというクラスを作った.Skill#changeLevel()の終わり際で使用する.今日のキーワードはparseIntとfall throughだった.
// レベルポイントガイド var spent = tspoint.get(); $("#tspointmarkbox>span.mark").html(tspoint.getMark(spent)); $("input#levelpoint").val(tspoint.getText(spent));
<input type="text" id="levelpoint" /> <input type="button" value="リセット" id="reset"/> <div id="tspointmarkbox">SP: <span class="mark"></span></div>
/** * 総合スキルポイント * @returns {TotalSkillPoint} */ function TotalSkillPoint() { } TotalSkillPoint.prototype = { /** * 消費したスキルポイント * @returns {Number} */ get: function() { var totalspent = 0; for (var i in skills) { // level0なら消費スキルポイントなし.次へ if (skills[i].level === 0) { continue; } switch (skills[i].level) { // fall through case 3: totalspent += skills[i].level3; case 2: totalspent += skills[i].level2; case 1: totalspent += skills[i].level1; } } return totalspent; }, /** * 消費スキルポイントマーク * @param {Number} point 消費したスキルポイント * @returns {String} */ getMark: function(point) { var mark = ""; if (point === undefined) point = this.get(); var i; if (point > SKILLPOINT_LIMIT) { // 消費スキルポイントが取得上限より大きい場合 for (i = 0; i < SKILLPOINT_LIMIT; i++) { mark += SKILLPOINT_MARKED; } mark += '<span class="overlimit">'; for (; i < point; i++) { mark += SKILLPOINT_MARKED; } mark += "</span>"; } else { // 消費スキルポイントが取得上限以内の場合 for (i = 0; i < point; i++) { mark += SKILLPOINT_MARKED; } for (; i < 40; i++) { mark += SKILLPOINT_MARK; } } return mark; }, /** * レベルポイントガイドテキスト * Lv. -- rest 40 Max. 40 * @param {type} point 消費したスキルポイント * @returns {String} */ getText: function(point) { if (point === undefined) point = this.get(); var levelguide = "Lv. 0"; var rest = SKILLPOINT_LIMIT - point; if (point > SKILLPOINT_LIMIT) { levelguide = "Lv. --"; $("input#levelpoint").addClass("overlimit"); } else if (point > 10) { levelguide = "Lv. " + (SKILLPOINT_LIMIT - rest - 5); $("input#levelpoint").removeClass("overlimit"); } else if (point > 0) { levelguide = "Lv. " + Math.ceil((SKILLPOINT_LIMIT - rest) / 2); $("input#levelpoint").removeClass("overlimit"); } return levelguide + " rest " + rest + " Max. " + SKILLPOINT_LIMIT; } };