|
|
|
|
@@ -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(".", ""));
|
|
|
|
|
}
|
|
|
|
|
@@ -39,6 +44,12 @@ function createInput(type, name, value) {
|
|
|
|
|
return elt;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function searchPoint(text) {
|
|
|
|
|
let index = text.search(/\d{3}\|\d{3}/);
|
|
|
|
|
let point = text.slice(index, index + 7).split("|");
|
|
|
|
|
return {x: point[0], y: point[1]}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function shortcutElementReplace(elt, img, text) {
|
|
|
|
|
// If more than one hyperlink element found,
|
|
|
|
|
// then keep the last one but with href of the first one.
|
|
|
|
|
@@ -73,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");
|
|
|
|
|
@@ -149,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();
|
|
|
|
|
@@ -230,16 +274,16 @@ function main() {
|
|
|
|
|
let hour = arrival.toLocaleTimeString("fr-FR");
|
|
|
|
|
arrivalDateCell.textContent = arrivalDateCell.textContent.replace(/(.*)\d\d:\d\d(.*)/, "$1" + hour + "$2");
|
|
|
|
|
|
|
|
|
|
let startPoint = cells[2].textContent.replace(/.*(\d{3}\|\d{3}).*/, "$1").split("|");
|
|
|
|
|
let targetPoint = cells[1].textContent.replace(/.*(\d{3}\|\d{3}).*/, "$1").split("|");
|
|
|
|
|
let startPoint = searchPoint(cells[2].textContent);
|
|
|
|
|
let targetPoint = searchPoint(cells[1].textContent);
|
|
|
|
|
let calculatorCell = document.createElement("td");
|
|
|
|
|
let calculatorForm = document.createElement("form");
|
|
|
|
|
calculatorForm.setAttribute("method", "post");
|
|
|
|
|
calculatorForm.setAttribute("action", "/?s=tools&m=runtime_calculator&inta=calculate");
|
|
|
|
|
calculatorForm.appendChild(createInput("hidden", "start_x", startPoint[0]));
|
|
|
|
|
calculatorForm.appendChild(createInput("hidden", "start_y", startPoint[1]));
|
|
|
|
|
calculatorForm.appendChild(createInput("hidden", "target_x", targetPoint[0]));
|
|
|
|
|
calculatorForm.appendChild(createInput("hidden", "target_y", targetPoint[1]));
|
|
|
|
|
calculatorForm.appendChild(createInput("hidden", "start_x", startPoint.x));
|
|
|
|
|
calculatorForm.appendChild(createInput("hidden", "start_y", startPoint.y));
|
|
|
|
|
calculatorForm.appendChild(createInput("hidden", "target_x", targetPoint.x));
|
|
|
|
|
calculatorForm.appendChild(createInput("hidden", "target_y", targetPoint.y));
|
|
|
|
|
let calculatorImg = document.createElement("input");
|
|
|
|
|
calculatorImg.setAttribute("type", "image");
|
|
|
|
|
calculatorImg.setAttribute("src", chrome.runtime.getURL("images/calculator.svg"));
|
|
|
|
|
|