diff --git a/CHANGELOG.md b/CHANGELOG.md index f1b476a..51b5868 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 1.8.1 (2025-11-17) + +- remplacement de 'attaques' par 'occurrences' +- correction du calcul d'arrivée des unités +- ajout des dizièmes de seconde pour envoyer des unités + ## 1.7.4 (2025-11-16) - correction bug de calcul des secondes en utilisant search regex diff --git a/manifest.json b/manifest.json index 6fffd22..3ed3a31 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "KAplus", - "version": "1.7.4", + "version": "1.8.1", "developer": { "name": "Samuel Campos", diff --git a/metadata.json b/metadata.json index 2c63408..5a4b5ae 100644 --- a/metadata.json +++ b/metadata.json @@ -5,8 +5,8 @@ "firefox" ], "release_notes": { - "fr": "- correction bug de calcul des secondes en utilisant search regex", - "en-US": "- fix bug on seconds by using search regex" + "fr": "- remplacement de 'attaques' par 'occurrences'\n- correction du calcul d'arrivée des unités\n- ajout des dizièmes de seconde pour envoyer des unités", + "en-US": "- replace 'attaques' with 'occurrences'\n- fix unit arrival date computing\n- add tenths of seconds to send units" } } } \ No newline at end of file diff --git a/src/kaplus.js b/src/kaplus.js index b9e9151..d2ce0fb 100644 --- a/src/kaplus.js +++ b/src/kaplus.js @@ -1,3 +1,8 @@ +let tomorrow = new Date(new Date().getTime() + 24*60*60*1000); +tomorrow.setHours(0, 0, 0, 0); +let afterTomorrow = new Date(tomorrow.getTime() + 24*60*60*1000); +let movingDuration = 0; + function num(s) { return parseInt(s.replace(".", "")); } @@ -79,6 +84,25 @@ function shortcutElementReplace(elt, img, text) { } } +function countUpMs() { + let arrivalDate = new Date(new Date().getTime() + movingDuration * 1000); + let prefix = ""; + if (arrivalDate >= afterTomorrow) { + prefix = "le " + arrivalDate.getDate() + "." + arrivalDate.getMonth() + " "; + } else if (arrivalDate > tomorrow) { + prefix = "demain "; + } + document.getElementById("countup-time-ms").textContent = prefix + + "à " + + arrivalDate.getHours().toString().padStart(2, "0") + + ":" + + arrivalDate.getMinutes().toString().padStart(2, "0") + + ":" + + arrivalDate.getSeconds().toString().padStart(2, "0") + + ":" + + Math.floor(arrivalDate.getMilliseconds() / 100); +} + function main() { /* Exit immediately if not on game page */ let layCastleTopElements = document.getElementsByClassName("lay_castle_top"); @@ -155,34 +179,48 @@ function main() { villagePointsRow.after(unitPointsRow); } - /* Allow multiple attacks */ + /* Units sending page */ if (section === "build_barracks" && module === "command" && sub === "send") { + /* Improve countup time cell */ + let oldCell = document.getElementById("countup-time"); + let hms = oldCell.parentElement.previousElementSibling.getElementsByTagName("td")[1].textContent.split(":"); + movingDuration = parseInt(hms[0]) * 3600 + parseInt(hms[1]) * 60 + parseInt(hms[2]) ; + let newRow = document.createElement("tr"); + let newLeftCell = document.createElement("td"); + newLeftCell.textContent = "Arrivée:"; + newRow.appendChild(newLeftCell); + let newRightCell = document.createElement("td"); + newRightCell.setAttribute("id", "countup-time-ms"); + newRow.appendChild(newRightCell); + oldCell.parentElement.parentElement.insertBefore(newRow, oldCell.parentElement); + oldCell.parentElement.style.display = "none"; + setInterval(countUpMs, 100); + + /* Allow multiple occurrences of send */ let table = document.createElement("table"); table.classList.add("borderlist"); let tbody = document.createElement("tbody"); let tr = document.createElement("tr"); let th = document.createElement("th"); - th.textContent = "Nombre d'attaques:"; + th.textContent = "Nombre d'occurrences:"; tr.appendChild(th) let td = document.createElement("td"); let input = document.createElement("input"); input.setAttribute("type", "number"); - input.setAttribute("name", "attack_count"); + input.setAttribute("name", "occurrences"); input.setAttribute("value", "1"); td.appendChild(input); tr.appendChild(td); tbody.appendChild(tr); table.appendChild(tbody); - let form = document.getElementsByTagName("form")[0]; let firstInput = form.getElementsByTagName("input")[0]; form.insertBefore(table, firstInput); form.addEventListener("submit", function (event) { event.preventDefault(); let formData = new FormData(this); - let attackCount = parseInt(formData.get("attack_count").toString()); - formData.delete("attack_count"); - + let attackCount = parseInt(formData.get("occurrences").toString()); + formData.delete("occurrences"); let sent = 0; for (let i = 0; i < attackCount; i++) { let xhr = new XMLHttpRequest();