From 9a3c9c14014b4cf0f32a1e0e0f9b11f8dd479e91 Mon Sep 17 00:00:00 2001 From: samuel Date: Thu, 20 Nov 2025 01:58:27 +0100 Subject: [PATCH] Send resources by thousands --- CHANGELOG.md | 4 ++++ manifest.json | 2 +- metadata.json | 4 ++-- src/kaplus.js | 65 +++++++++++++++++++++++++++++++++++++++++++++++---- 4 files changed, 68 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9079a9a..2401634 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.10.1 (2026-11-20) + +- envoi des ressources par milliers sur le marché + ## 1.9.2 (2025-11-18) - simplification du code diff --git a/manifest.json b/manifest.json index 5bee193..82a83e1 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "KAplus", - "version": "1.9.2", + "version": "1.10.1", "developer": { "name": "Samuel Campos", diff --git a/metadata.json b/metadata.json index 31e3eb5..af001b3 100644 --- a/metadata.json +++ b/metadata.json @@ -5,8 +5,8 @@ "firefox" ], "release_notes": { - "fr": "- simplification du code", - "en-US": "- code simplification" + "fr": "- envoi des ressources par milliers sur le marché", + "en-US": "- send resources by thousands in market" } } } \ No newline at end of file diff --git a/src/kaplus.js b/src/kaplus.js index 1ad438e..4c8cf2b 100644 --- a/src/kaplus.js +++ b/src/kaplus.js @@ -119,15 +119,27 @@ function countUpMs() { + Math.floor(arrivalDate.getMilliseconds() / 100); } +function handleDomContentLoaded() { + /* Remove iframe banner */ + document.getElementById("banner_skyscraper").remove(); +} + function main() { + /* Exit immediately if extension has already been loaded */ + let kaplus = document.getElementById("kaplus-marker"); + if (kaplus) { + return; + } + /* Exit immediately if not on game page */ let layCastleTopElements = document.getElementsByClassName("lay_castle_top"); if (layCastleTopElements.length === 0) { return; } + window.addEventListener("DOMContentLoaded", handleDomContentLoaded); - /* Remove iframe banner */ - document.getElementById("banner_skyscraper").remove(); + /* Add extension marker */ + document.body.appendChild(createCustomElement("div", {"id": "kaplus-marker"}, null, {"display": "none"})); /* Improve navbar icons */ let shortcutElements = layCastleTopElements[0].getElementsByClassName("shortcut_element"); @@ -298,7 +310,6 @@ function main() { 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("occurrences").toString()); formData.delete("occurrences"); @@ -317,8 +328,9 @@ function main() { }); } - /* Fix select bug in market */ + /* Market sending page */ if (section === "build_market" && (module === "send" || module === null)) { + /* Fix select bug in target village select */ let select = document.getElementsByName("village_name")[0]; select.removeAttribute("onchange"); select.addEventListener("change", function () { @@ -333,6 +345,51 @@ function main() { sendY.value = xy[1]; } }); + + /* Add form to send resources by thousands */ + let sendForm = document.getElementsByTagName("form")[0] + sendForm.addEventListener("submit", function () { + let inputs = this.getElementsByTagName("input"); + for (let i = 0; i < inputs.length; i ++) { + if (inputs[i].getAttribute("name").endsWith("_k")) { + inputs[i].setAttribute("name", ""); + } + } + }); + let sendFormTables = sendForm.getElementsByTagName("table"); + let newTable = sendFormTables[0].cloneNode(true); + newTable.getElementsByTagName("th")[0].textContent = "Ressources par milliers"; + let resCells = newTable.getElementsByTagName("td"); + for (let i = 0; i < resCells.length; i ++) { + let resInput = resCells[i].getElementsByTagName("input")[0]; + let resName = resInput.getAttribute("name"); + let resNameK = resInput.getAttribute("name") + "_k"; + resInput.setAttribute("name", resNameK); + resInput.addEventListener("change", function () { + document.getElementsByName(resName)[0].value = 1000 * parseInt(this.value); + }); + let spanInput = resCells[i].getElementsByTagName("span")[0]; + let resMax = spanInput.textContent.replace(/\(/, "").replace("\)", "").replace(/\./, ""); + let rMax = Math.floor(parseInt(resMax) / 1000); + spanInput.setAttribute( + "onclick", + "insertNum('kingsage', '" + resNameK + "', '" + rMax.toString() + "'); " + + "insertNum('kingsage', '" + resName + "', '" + (1000 * rMax).toString() + "');" + ) + spanInput.textContent = "(" + rMax.toString() + "K)"; + } + sendForm.insertBefore(newTable, sendFormTables[0]); + sendForm.insertBefore(createCustomElement("br"), sendFormTables[1]); + + /* Set inputs type=number */ + let sendInputs = sendForm.getElementsByTagName("input"); + for (let i = 0; i < sendInputs.length; i ++) { + if (sendInputs[i].name.startsWith("send_")) { + sendInputs[i].setAttribute("type", "number"); + sendInputs[i].value = ""; + sendInputs[i].style.width = "65px"; + } + } } /* Improve attacks display */