Add tenth of seconds in attack sending page

This commit is contained in:
2025-11-17 19:18:59 +01:00
parent b843fa1b26
commit 0d6639cab8
4 changed files with 54 additions and 10 deletions

View File

@@ -1,5 +1,11 @@
# Changelog # 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) ## 1.7.4 (2025-11-16)
- correction bug de calcul des secondes en utilisant search regex - correction bug de calcul des secondes en utilisant search regex

View File

@@ -1,7 +1,7 @@
{ {
"manifest_version": 3, "manifest_version": 3,
"name": "KAplus", "name": "KAplus",
"version": "1.7.4", "version": "1.8.1",
"developer": { "developer": {
"name": "Samuel Campos", "name": "Samuel Campos",

View File

@@ -5,8 +5,8 @@
"firefox" "firefox"
], ],
"release_notes": { "release_notes": {
"fr": "- correction bug de calcul des secondes en utilisant 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": "- fix bug on seconds by using search regex" "en-US": "- replace 'attaques' with 'occurrences'\n- fix unit arrival date computing\n- add tenths of seconds to send units"
} }
} }
} }

View File

@@ -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) { function num(s) {
return parseInt(s.replace(".", "")); 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() { function main() {
/* Exit immediately if not on game page */ /* Exit immediately if not on game page */
let layCastleTopElements = document.getElementsByClassName("lay_castle_top"); let layCastleTopElements = document.getElementsByClassName("lay_castle_top");
@@ -155,34 +179,48 @@ function main() {
villagePointsRow.after(unitPointsRow); villagePointsRow.after(unitPointsRow);
} }
/* Allow multiple attacks */ /* Units sending page */
if (section === "build_barracks" && module === "command" && sub === "send") { 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"); let table = document.createElement("table");
table.classList.add("borderlist"); table.classList.add("borderlist");
let tbody = document.createElement("tbody"); let tbody = document.createElement("tbody");
let tr = document.createElement("tr"); let tr = document.createElement("tr");
let th = document.createElement("th"); let th = document.createElement("th");
th.textContent = "Nombre d'attaques:"; th.textContent = "Nombre d'occurrences:";
tr.appendChild(th) tr.appendChild(th)
let td = document.createElement("td"); let td = document.createElement("td");
let input = document.createElement("input"); let input = document.createElement("input");
input.setAttribute("type", "number"); input.setAttribute("type", "number");
input.setAttribute("name", "attack_count"); input.setAttribute("name", "occurrences");
input.setAttribute("value", "1"); input.setAttribute("value", "1");
td.appendChild(input); td.appendChild(input);
tr.appendChild(td); tr.appendChild(td);
tbody.appendChild(tr); tbody.appendChild(tr);
table.appendChild(tbody); table.appendChild(tbody);
let form = document.getElementsByTagName("form")[0]; let form = document.getElementsByTagName("form")[0];
let firstInput = form.getElementsByTagName("input")[0]; let firstInput = form.getElementsByTagName("input")[0];
form.insertBefore(table, firstInput); form.insertBefore(table, firstInput);
form.addEventListener("submit", function (event) { form.addEventListener("submit", function (event) {
event.preventDefault(); event.preventDefault();
let formData = new FormData(this); let formData = new FormData(this);
let attackCount = parseInt(formData.get("attack_count").toString()); let attackCount = parseInt(formData.get("occurrences").toString());
formData.delete("attack_count"); formData.delete("occurrences");
let sent = 0; let sent = 0;
for (let i = 0; i < attackCount; i++) { for (let i = 0; i < attackCount; i++) {
let xhr = new XMLHttpRequest(); let xhr = new XMLHttpRequest();