// To whomever is reading this code in the future // It is organized pretty badly and I'm sorry for the pain you have reading it. application = (function() { var calc = exports.calculator; var im = exports.imitator; var BattleSide = { Attacker: 'attacker', Defender: 'defender', }; var unitDisplayData = createUnitsDisplayData(); var canvasWidth = 600; var canvasHeight = 400; var lastResult = null; var app = { init: function() { recreateFleetCounters(); createCanvases(); $("#compute-on-the-fly").on('change', computeOnTheFlyChanged); $("#battle-type-place").find('button').on('click', changeBattleType); $('#canvas-size-selector').on('change', selectedSizeChanged); $("#sides-options").find('input').on('change', optionChanged); $("#sides-options").find('select').on('change', optionChanged); $("#shared-options").find('select').on('change', optionChanged); $("#clear-counters-defender").on('click', clear); $("#clear-counters-attacker").on('click', clear); $("#force-compute").on('click', recompute); $(window).bind('beforeunload', onBeforeUnload); restoreState("all"); markParticipatingUnits(); recompute(); } }; function recreateFleetCounters() { var container = $("#fleet-counters"); container.find(".unit-selector").remove(); for (var typeName in calc.UnitType) { if (calc.UnitType.hasOwnProperty(typeName)) { var unitType = calc.UnitType[typeName]; var display = unitDisplayData[unitType]; var unitBlock = $("
") .attr("data-unit-type", unitType) .append(createDamagedDropdown(BattleSide.Attacker, unitType)) .append(createCounter(BattleSide.Attacker, unitType, "battle-values", display.battleValue)) .append(createCounter(BattleSide.Attacker, unitType, "units")) .append($("") .text(display.displayName)) .append(createCounter(BattleSide.Defender, unitType, "units")) .append(createCounter(BattleSide.Defender, unitType, "battle-values", display.battleValue)) .append(createDamagedDropdown(BattleSide.Defender, unitType)); container.append(unitBlock); } } container.find('div[data-unit-type="pds"] div[data-battle-side="defender"] button').on('click', markParticipatingUnits); container.find('div[data-unit-type="ground"] div[data-battle-side="attacker"] button').on('click', markParticipatingUnits); container.find('div[data-unit-type="mech"] div[data-battle-side="attacker"] button').on('click', markParticipatingUnits); function createDamagedDropdown(battleSide, unitType) { var result = $("
"); if (calc.units[unitType].isDamageable || unitType === calc.UnitType.Cruiser || unitType === calc.UnitType.Carrier) { result.addClass("damaged"); result.attr("data-battle-side", battleSide); var select = $("") .attr("type", isBattleValue ? "text" : "number") .attr("data-unit-type", unitType) .attr("data-counter-type", counterType) .attr("min", isBattleValue ? null : "0") .attr("readonly", isBattleValue ? "readonly" : null) .attr("value", defaultBattleValue || 0) .on('change', attemptOnTheFlyRecompute)) .append($("") .append($("