From 58e006f0b4739aa00dc58d8bd8617fe8f324040b Mon Sep 17 00:00:00 2001 From: Donald Burr Date: Mon, 12 Oct 2015 22:36:11 -0700 Subject: [PATCH] Add "when will you have X gems" calculator --- web_app/js/sif-tools.js | 62 +++++++++++++++++++++++++++++++++++------ 1 file changed, 53 insertions(+), 9 deletions(-) diff --git a/web_app/js/sif-tools.js b/web_app/js/sif-tools.js index 15d64b4..8772373 100644 --- a/web_app/js/sif-tools.js +++ b/web_app/js/sif-tools.js @@ -132,10 +132,10 @@ function event_end_calc_tab_selected() function calculate_rank() { // validate data - var current_rank = $("#current_rank").val(); - var current_exp = $("#current_exp").val(); - var desired_rank = $("#desired_rank").val(); - var game_version = $("#game_version").val(); + var current_rank = parseInt($("#current_rank").val()); + var current_exp = parseInt($("#current_exp").val()); + var desired_rank = parseInt($("#desired_rank").val()); + var game_version = parseInt($("#game_version").val()); if (isNaN(current_rank) || isNaN(current_exp) || isNaN(desired_rank)) { window.alert("Error: you have entered an invalid (non-numeric) value. Please check your input and try again."); } else if (current_rank < 0 || current_exp < 0 || desired_rank < 0) { @@ -344,18 +344,62 @@ function calculate_gems() $("#gem-result-verbose-area").val(verboseText); $("#gem-result-textarea").show(); } else { - $("#gem-result-summary").text("Insert non-verbose results here"); $("#gem-result-verbose-area").val(verboseText); $("#gem-result-textarea").hide(); } } else if (mode === "GEMS") { + var target_gems = parseInt($("#gem_desired_gems").val()); + if (isNaN(target_gems)) { + window.alert("Error: you have entered an invalid (non-numeric) value. Please check your input and try again."); + return; + } + + var now = moment(new Date()); + var resultsString = sprintf("Today is %02d/%02d/%04d and you currently have %d love gems.
(Assuming you collected any gems you got today and already counted those.)", month(now), day(now), year(now), current_gems); + var verboseText = ""; + + var gems = current_gems + + while (gems < target_gems) { + now = now.add(1, 'days') + + // is it a login bonus? + if (is_gem_day(now)) { + gems += 1; + } + + // is it a birthday? + var birthday_tuple = is_muse_members_birthday(now); + var is_bday = birthday_tuple[0]; + var name = birthday_tuple[1]; + if (is_bday) { + gems += 5; + } + + // record verbose output if desired + if (verbose) { + if (is_gem_day(now) && is_bday) { + verboseText += sprintf("%02d/%02d/%04d: free gem as login bonus AND it's %s's birthday! You get 6 gems, which brings you to %d gems.\n", month(now), day(now), year(now), name, gems); + } + + if (is_bday && !is_gem_day(now)) { + verboseText += sprintf("%02d/%02d/%04d: it's %s's birthday! You get 5 gems, which brings you to %d gems.\n", month(now), day(now), year(now), name, gems); + } + + if (is_gem_day(now) && !is_bday) { + verboseText = verboseText + sprintf("%02d/%02d/%04d: free gem as login bonus, which brings you to %d gems.\n", month(now), day(now), year(now), gems); + } + } + } + + resultsString = resultsString + sprintf("
You will have %d love gems on %02d/%02d/%04d. Good things come to those who wait!", gems, month(now), day(now), year(now)); + + $("#gem-result-summary").html(resultsString); if (verbose) { - $("#gem-result-summary").text("Insert verbose results here"); - $("#gem-result-verbose-area").val("VERBOSITY IS GOOD!"); + $("#gem-result-verbose-area").val(verboseText); $("#gem-result-textarea").show(); } else { - $("#gem-result-summary").text("Insert non-verbose results here"); - $("#gem-result-verbose-area").val("VERBOSITY IS BAD!"); + $("#gem-result-verbose-area").val(verboseText); $("#gem-result-textarea").hide(); } }