|
|
|
|
@@ -23,27 +23,48 @@ function str(n) {
|
|
|
|
|
return s.replace(/^0+/, "");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function createRow(key, value) {
|
|
|
|
|
let keyCell = document.createElement("td");
|
|
|
|
|
keyCell.textContent = key;
|
|
|
|
|
function createCustomElement(tag, attrs, text, style) {
|
|
|
|
|
let elt = document.createElement(tag);
|
|
|
|
|
if (attrs) {
|
|
|
|
|
for (let [key, value] of Object.entries(attrs)) {
|
|
|
|
|
elt.setAttribute(key, value.toString());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (text) {
|
|
|
|
|
elt.textContent = text.toString();
|
|
|
|
|
}
|
|
|
|
|
if (style) {
|
|
|
|
|
for (let [key, value] of Object.entries(style)) {
|
|
|
|
|
elt.style[key] = value.toString();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return elt;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let valueCell = document.createElement("td");
|
|
|
|
|
valueCell.textContent = value;
|
|
|
|
|
function createCustomInput(type, name, value, attrs, style) {
|
|
|
|
|
let mergedAttrs = {};
|
|
|
|
|
if (attrs) {
|
|
|
|
|
mergedAttrs = attrs;
|
|
|
|
|
}
|
|
|
|
|
mergedAttrs["type"] = type;
|
|
|
|
|
if (name) {
|
|
|
|
|
mergedAttrs["name"] = name;
|
|
|
|
|
}
|
|
|
|
|
if (value) {
|
|
|
|
|
mergedAttrs["value"] = value;
|
|
|
|
|
}
|
|
|
|
|
return createCustomElement("input", mergedAttrs, null, style);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let row = document.createElement("tr");
|
|
|
|
|
function createKeyValueRow(key, value) {
|
|
|
|
|
let row = createCustomElement("tr");
|
|
|
|
|
let keyCell = createCustomElement("td", null, key);
|
|
|
|
|
let valueCell = createCustomElement("td", null, value);
|
|
|
|
|
row.appendChild(keyCell);
|
|
|
|
|
row.appendChild(valueCell);
|
|
|
|
|
return row;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function createInput(type, name, value) {
|
|
|
|
|
let elt = document.createElement("input");
|
|
|
|
|
elt.setAttribute("type", type);
|
|
|
|
|
elt.setAttribute("name", name);
|
|
|
|
|
elt.setAttribute("value", value);
|
|
|
|
|
return elt;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function searchPoint(text) {
|
|
|
|
|
let index = text.search(/\d{3}\|\d{3}/);
|
|
|
|
|
let point = text.slice(index, index + 7).split("|");
|
|
|
|
|
@@ -66,20 +87,15 @@ function shortcutElementReplace(elt, img, text) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let spanImageElement = document.createElement("span");
|
|
|
|
|
spanImageElement.classList.add("shortcut_element_image");
|
|
|
|
|
|
|
|
|
|
let imgElement = document.createElement("img");
|
|
|
|
|
imgElement.setAttribute("src", chrome.runtime.getURL("images/" + img + ".svg"));
|
|
|
|
|
let spanImageElement = createCustomElement("span", {"class": "shortcut_element_image"});
|
|
|
|
|
let imgElement = createCustomElement("img", {"src": chrome.runtime.getURL("images/" + img + ".svg")});
|
|
|
|
|
spanImageElement.appendChild(imgElement);
|
|
|
|
|
|
|
|
|
|
aElements[0].textContent = "";
|
|
|
|
|
aElements[0].appendChild(spanImageElement);
|
|
|
|
|
|
|
|
|
|
if (text) {
|
|
|
|
|
let spanDescElement = document.createElement("span");
|
|
|
|
|
spanDescElement.classList.add("shortcut_element_desc");
|
|
|
|
|
spanDescElement.textContent = text;
|
|
|
|
|
let spanDescElement = createCustomElement("span", {"class": "shortcut_element_desc"}, text);
|
|
|
|
|
aElements[0].appendChild(spanDescElement);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@@ -133,6 +149,7 @@ function main() {
|
|
|
|
|
let section = urlParams.get("s");
|
|
|
|
|
let module = urlParams.get("m");
|
|
|
|
|
let sub = urlParams.get("sub");
|
|
|
|
|
let sendCommandForm = document.getElementById("sendCommandForm");
|
|
|
|
|
|
|
|
|
|
/* Display unit-points on user profile */
|
|
|
|
|
if (section === "info_player" && (module === "profile" || module === null)) {
|
|
|
|
|
@@ -158,8 +175,8 @@ function main() {
|
|
|
|
|
armyPercent = (Math.round(armyPoints / villagesCount) / 100).toString() + " %";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
playerPropertiesTable.appendChild(createRow("Points troupes:", str(armyPoints)));
|
|
|
|
|
playerPropertiesTable.appendChild(createRow("% points troupes:", armyPercent));
|
|
|
|
|
playerPropertiesTable.appendChild(createKeyValueRow("Points troupes:", str(armyPoints)));
|
|
|
|
|
playerPropertiesTable.appendChild(createKeyValueRow("% points troupes:", armyPercent));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Display unit-points on village overview */
|
|
|
|
|
@@ -179,36 +196,100 @@ function main() {
|
|
|
|
|
villagePointsRow.after(unitPointsRow);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Units order page */
|
|
|
|
|
if (section === "build_barracks" && (module === null || module === "command") && sendCommandForm !== null) {
|
|
|
|
|
let barracksCommands = sendCommandForm.getElementsByClassName("barracksCommand");
|
|
|
|
|
let borderListTables = sendCommandForm.getElementsByClassName("borderlist");
|
|
|
|
|
|
|
|
|
|
let quantityLabel = createCustomElement("label");
|
|
|
|
|
let quantityInput = createCustomElement("input", {"type": "checkbox"});
|
|
|
|
|
quantityInput.addEventListener("change", function () {
|
|
|
|
|
let clickSpans = [];
|
|
|
|
|
if (barracksCommands.length === 1) {
|
|
|
|
|
clickSpans = barracksCommands[0].getElementsByClassName("click");
|
|
|
|
|
} else if (borderListTables.length === 1) {
|
|
|
|
|
clickSpans = borderListTables[0].getElementsByClassName("click");
|
|
|
|
|
}
|
|
|
|
|
for (let i = 0; i < 12; i++) {
|
|
|
|
|
if (clickSpans[i].classList.contains("all")) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
clickSpans[i].click();
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
quantityLabel.appendChild(quantityInput);
|
|
|
|
|
let quantitySpan = createCustomElement("span", {"class": "click all"}, "(Tout sélectionner)");
|
|
|
|
|
quantityLabel.appendChild(quantitySpan);
|
|
|
|
|
|
|
|
|
|
if (barracksCommands.length === 1) {
|
|
|
|
|
let boxCell = createCustomElement("div", {"class": "box"});
|
|
|
|
|
|
|
|
|
|
let backgroundCell = createCustomElement("div", {"class": "background"});
|
|
|
|
|
let backgroundImg = createCustomElement(
|
|
|
|
|
"img", {"src": "//s58-fr.kingsage.gameforge.com/img/modern/card_sendunit.png"}
|
|
|
|
|
);
|
|
|
|
|
backgroundCell.appendChild(backgroundImg);
|
|
|
|
|
boxCell.appendChild(backgroundCell);
|
|
|
|
|
|
|
|
|
|
let imageCell = createCustomElement("div", {"class": "image"});
|
|
|
|
|
let imageImg = createCustomElement(
|
|
|
|
|
"img", {"src": "//s58-fr.kingsage.gameforge.com/img/shortcut/barracks.png"}, null, {"width": "28px"}
|
|
|
|
|
);
|
|
|
|
|
imageCell.appendChild(imageImg);
|
|
|
|
|
boxCell.appendChild(imageCell);
|
|
|
|
|
|
|
|
|
|
let nameCell = createCustomElement("div", {"class": "name"});
|
|
|
|
|
let nameA = createCustomElement("a", {"href": "help.php?m=units", "target": "_help"});
|
|
|
|
|
let nameB = createCustomElement("b", null, "Tout");
|
|
|
|
|
nameA.appendChild(nameB);
|
|
|
|
|
nameCell.appendChild(nameA);
|
|
|
|
|
boxCell.appendChild(nameCell);
|
|
|
|
|
|
|
|
|
|
let quantityCell = createCustomElement("div", {"class": "quantity"});
|
|
|
|
|
quantityCell.appendChild(quantityLabel);
|
|
|
|
|
boxCell.appendChild(quantityCell);
|
|
|
|
|
|
|
|
|
|
let brTag = barracksCommands[0].getElementsByTagName("br")[1];
|
|
|
|
|
barracksCommands[0].insertBefore(boxCell, brTag);
|
|
|
|
|
|
|
|
|
|
} else if (borderListTables.length === 1) {
|
|
|
|
|
let borderListRows = borderListTables[0].getElementsByTagName("tr");
|
|
|
|
|
let selectAllCell = borderListRows[1].getElementsByTagName("td")[3];
|
|
|
|
|
|
|
|
|
|
let imageA = createCustomElement("a", {"href": "help.php?m=units", "target": "_help"});
|
|
|
|
|
let imageImg = createCustomElement(
|
|
|
|
|
"img", {"src": "//s58-fr.kingsage.gameforge.com/img/shortcut/barracks.png", "title": "Tout"}
|
|
|
|
|
);
|
|
|
|
|
imageA.appendChild(imageImg);
|
|
|
|
|
selectAllCell.appendChild(imageA);
|
|
|
|
|
|
|
|
|
|
selectAllCell.appendChild(quantityLabel);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Units sending page */
|
|
|
|
|
if (section === "build_barracks" && module === "command" && sub === "send") {
|
|
|
|
|
if (section === "build_barracks" && module === "command" && sub === "send" && sendCommandForm === null) {
|
|
|
|
|
/* 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:";
|
|
|
|
|
let newRow = createCustomElement("tr");
|
|
|
|
|
let newLeftCell = createCustomElement("td", null, "Arrivée:");
|
|
|
|
|
newRow.appendChild(newLeftCell);
|
|
|
|
|
let newRightCell = document.createElement("td");
|
|
|
|
|
newRightCell.setAttribute("id", "countup-time-ms");
|
|
|
|
|
let newRightCell = createCustomElement("td", {"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'occurrences:";
|
|
|
|
|
let table = createCustomElement("table", {"class": "borderlist"});
|
|
|
|
|
let tbody = createCustomElement("tbody");
|
|
|
|
|
let tr = createCustomElement("tr");
|
|
|
|
|
let th = createCustomElement("th", null, "Nombre d'occurrences:");
|
|
|
|
|
tr.appendChild(th)
|
|
|
|
|
let td = document.createElement("td");
|
|
|
|
|
let input = document.createElement("input");
|
|
|
|
|
input.setAttribute("type", "number");
|
|
|
|
|
input.setAttribute("name", "occurrences");
|
|
|
|
|
input.setAttribute("value", "1");
|
|
|
|
|
let td = createCustomElement("td");
|
|
|
|
|
let input = createCustomElement("input", {"type": "number", "name": "occurrences", "value": "1"});
|
|
|
|
|
td.appendChild(input);
|
|
|
|
|
tr.appendChild(td);
|
|
|
|
|
tbody.appendChild(tr);
|
|
|
|
|
@@ -261,7 +342,7 @@ function main() {
|
|
|
|
|
let table = contentPane.getElementsByClassName("borderlist")[0];
|
|
|
|
|
let rows = table.getElementsByTagName("tr");
|
|
|
|
|
|
|
|
|
|
let headCell = document.createElement("th");
|
|
|
|
|
let headCell = createCustomElement("th");
|
|
|
|
|
rows[0].appendChild(headCell);
|
|
|
|
|
|
|
|
|
|
for (let i = 1; i < rows.length; i ++) {
|
|
|
|
|
@@ -276,20 +357,21 @@ function main() {
|
|
|
|
|
|
|
|
|
|
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.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"));
|
|
|
|
|
calculatorImg.style.width = "20px";
|
|
|
|
|
calculatorImg.style.height = "20px";
|
|
|
|
|
calculatorImg.style.border = "none";
|
|
|
|
|
let calculatorCell = createCustomElement("td");
|
|
|
|
|
let calculatorForm = createCustomElement(
|
|
|
|
|
"form", {"method": "post", "action": "/?s=tools&m=runtime_calculator&inta=calculate"}
|
|
|
|
|
);
|
|
|
|
|
calculatorForm.appendChild(createCustomInput("hidden", "start_x", startPoint.x));
|
|
|
|
|
calculatorForm.appendChild(createCustomInput("hidden", "start_y", startPoint.y));
|
|
|
|
|
calculatorForm.appendChild(createCustomInput("hidden", "target_x", targetPoint.x));
|
|
|
|
|
calculatorForm.appendChild(createCustomInput("hidden", "target_y", targetPoint.y));
|
|
|
|
|
let calculatorImg = createCustomInput(
|
|
|
|
|
"image",
|
|
|
|
|
null,
|
|
|
|
|
null,
|
|
|
|
|
{"src": chrome.runtime.getURL("images/calculator.svg")},
|
|
|
|
|
{"width": "20px", "height": "20px", "border": "none"}
|
|
|
|
|
);
|
|
|
|
|
calculatorForm.appendChild(calculatorImg);
|
|
|
|
|
calculatorCell.appendChild(calculatorForm);
|
|
|
|
|
rows[i].appendChild(calculatorCell);
|
|
|
|
|
|