add 'can send noble' info to extendedMapPopup

This commit is contained in:
Dawid Wysokiński 2020-07-24 16:31:54 +02:00
parent 76da7135b6
commit 7d41302310
6 changed files with 126 additions and 24 deletions

View File

@ -370,7 +370,22 @@ const loadInADayData = async function loadInADayData(type) {
};
exports.loadInADayData = loadInADayData;
},{"../libs/InADayParser":"dSAr"}],"fvjy":[function(require,module,exports) {
},{"../libs/InADayParser":"dSAr"}],"XOOL":[function(require,module,exports) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.calcDistanceBetweenTwoPoints = void 0;
const calcDistanceBetweenTwoPoints = (x1, y1, x2, y2) => {
const a = x1 - x2;
const b = y1 - y2;
return Math.sqrt(a * a + b * b);
};
exports.calcDistanceBetweenTwoPoints = calcDistanceBetweenTwoPoints;
},{}],"fvjy":[function(require,module,exports) {
"use strict";
var _requestCreator = _interopRequireDefault(require("./libs/requestCreator"));
@ -381,6 +396,8 @@ var _getCurrentServer = _interopRequireDefault(require("./utils/getCurrentServer
var _tribalwars = require("./utils/tribalwars");
var _math = require("./utils/math");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
@ -394,7 +411,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
// @namespace https://github.com/tribalwarshelp/scripts
// @updateURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/bonusBarbarianVillageFinder.js
// @downloadURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/bonusBarbarianVillageFinder.js
// @version 0.4.0
// @version 0.4.1
// @description Bonus barbarian village finder
// @author Kichiyaki http://dawid-wysokinski.pl/
// @match *://*/game.php*screen=map*
@ -440,10 +457,8 @@ const searchBonusBarbarianVillages = async e => {
const villages = await loadBonusVillages(parseInt(e.target[0].value));
const coords = TWMap.pos;
villages.items = villages.items.map(item => {
const a = coords[0] - item.x;
const b = coords[1] - item.y;
return _objectSpread(_objectSpread({}, item), {}, {
distance: Math.sqrt(a * a + b * b)
distance: (0, _math.calcDistanceBetweenTwoPoints)(coords[0], coords[1], item.x, item.y)
});
}).sort((a, b) => a.distance - b.distance);
document.querySelector('#' + TABLE_ID).innerHTML = buildTableBodyHTML(villages.items);
@ -488,4 +503,4 @@ const renderUI = () => {
(function () {
renderUI();
})();
},{"./libs/requestCreator":"Ph2E","./i18n/bonusBarbarianVillageFinder":"MRps","./utils/getCurrentServer":"DMkL","./utils/tribalwars":"fHHP"}]},{},["fvjy"], null)
},{"./libs/requestCreator":"Ph2E","./i18n/bonusBarbarianVillageFinder":"MRps","./utils/getCurrentServer":"DMkL","./utils/tribalwars":"fHHP","./utils/math":"XOOL"}]},{},["fvjy"], null)

View File

@ -303,12 +303,18 @@ const translations = {
pl_PL: {
ennobledAt: 'Podbita o',
never: 'Nigdy',
possibleLoyalty: 'Możliwe poparcie'
possibleLoyalty: 'Możliwe poparcie',
canSendNobles: 'Można wysłać szlachciców',
yes: 'Tak',
no: 'Nie'
},
en_DK: {
ennobledAt: 'Ennobled at',
never: 'Never',
possibleLoyalty: 'Possible loyalty'
possibleLoyalty: 'Possible loyalty',
canSendNobles: 'Can send nobles',
yes: 'Yes',
no: 'No'
}
};
@ -387,6 +393,21 @@ exports.default = void 0;
var _default = () => window.location.host.split('.')[0];
exports.default = _default;
},{}],"XOOL":[function(require,module,exports) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.calcDistanceBetweenTwoPoints = void 0;
const calcDistanceBetweenTwoPoints = (x1, y1, x2, y2) => {
const a = x1 - x2;
const b = y1 - y2;
return Math.sqrt(a * a + b * b);
};
exports.calcDistanceBetweenTwoPoints = calcDistanceBetweenTwoPoints;
},{}],"KWxH":[function(require,module,exports) {
"use strict";
@ -426,6 +447,8 @@ var _formatDate = _interopRequireDefault(require("./utils/formatDate"));
var _getCurrentServer = _interopRequireDefault(require("./utils/getCurrentServer"));
var _math = require("./utils/math");
var _localStorage = require("./utils/localStorage");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@ -435,14 +458,14 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
// @namespace https://github.com/tribalwarshelp/scripts
// @updateURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/extendedMapPopup.js
// @downloadURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/extendedMapPopup.js
// @version 0.4.0
// @version 0.5.0
// @description Extended Map Popup
// @author Kichiyaki http://dawid-wysokinski.pl/
// @match *://*/game.php*screen=map*
// @grant none
// ==/UserScript==
const SERVER = (0, _getCurrentServer.default)();
const CURR_SERVER_CONFIG = "\n query server($key: String!) {\n server(key: $key) {\n config {\n speed\n }\n }\n }\n";
const CURR_SERVER_CONFIG = "\n query server($key: String!) {\n server(key: $key) {\n config {\n speed\n snob {\n maxDist\n }\n }\n }\n }\n";
const LAST_VILLAGE_CONQUER_QUERY = "\n query ennoblements($server: String!, $filter: EnnoblementFilter!) {\n ennoblements(server: $server, filter: $filter) {\n items {\n ennobledAt\n village {\n id\n }\n }\n }\n }\n";
const SERVER_CONFIG_LOCAL_STORAGE_KEY = 'kiszkowaty_extended_map_popup_server_cfg';
const translations = (0, _extendedMapPopup.default)();
@ -463,7 +486,7 @@ const isConfigExpired = date => {
const loadServerConfig = async () => {
let data = loadServerConfigFromLocalStorage();
if (!data || !data.server || isConfigExpired(new Date(data.loadedAt))) {
if (!data || !data.server || isConfigExpired(new Date(data.loadedAt)) || !data.server.config || !data.server.config.speed || !data.server.config.snob || !data.server.config.snob.maxDist) {
data = await (0, _requestCreator.default)({
query: CURR_SERVER_CONFIG,
variables: {
@ -514,7 +537,8 @@ const calcLoyalty = (ennobledAt, speed) => {
return Math.floor(loyalty);
};
const renderAdditionalInfo = (data, cfg) => {
const renderAdditionalInfo = (id, data, cfg) => {
const coords = TWMap.CoordByXY(TWMap.villageKey[id]);
const ennoblement = data && data.ennoblements && data.ennoblements.items && data.ennoblements.items.length > 0 ? data.ennoblements.items[0] : undefined;
const parent = document.querySelector('#map_popup #info_content tbody');
let lastEnnobledAt = parent.querySelector('#lastEnnobledAt');
@ -535,22 +559,33 @@ const renderAdditionalInfo = (data, cfg) => {
}
loyalty.innerHTML = "\n <td>\n ".concat(translations.possibleLoyalty, ":\n </td>\n <td>\n ").concat(ennoblement ? calcLoyalty(new Date(ennoblement.ennobledAt), cfg.speed) : 100, "\n </td>\n ");
let canSendNobles = parent.querySelector('#canSendNobles');
if (!canSendNobles) {
canSendNobles = document.createElement('tr');
canSendNobles.id = 'canSendNobles';
parent.appendChild(canSendNobles);
}
console.log(coords);
canSendNobles.innerHTML = "\n <td>\n ".concat(translations.canSendNobles, ":\n </td>\n <td>\n ").concat((0, _math.calcDistanceBetweenTwoPoints)(coords[0], coords[1], window.game_data.village.x, window.game_data.village.y) < cfg.snob.maxDist ? translations.yes : translations.no, "\n </td>\n ");
};
const createLoadVillageHandler = cfg => async e => {
TWMap.popup._loadVillage(e);
const data = await loadVillageData(parseInt(e));
renderAdditionalInfo(data, cfg);
renderAdditionalInfo(parseInt(e), data, cfg);
};
const createDisplayForVillageHandler = cfg => async (e, a, t) => {
TWMap.popup._displayForVillage(e, a, t);
console.log('_displayForVillage', a, t);
const data = await loadVillageData(parseInt(e.id), {
cacheOnly: window.game_data.features.Premium.active
});
renderAdditionalInfo(data, cfg);
renderAdditionalInfo(parseInt(e.id), data, cfg);
};
(async function () {
@ -565,4 +600,4 @@ const createDisplayForVillageHandler = cfg => async (e, a, t) => {
console.log('extended map popup', error);
}
})();
},{"date-fns/differenceInMinutes":"oGJj","./i18n/extendedMapPopup":"ddIN","./libs/requestCreator":"Ph2E","./utils/formatDate":"V6Mf","./utils/getCurrentServer":"DMkL","./utils/localStorage":"KWxH"}]},{},["HdqX"], null)
},{"date-fns/differenceInMinutes":"oGJj","./i18n/extendedMapPopup":"ddIN","./libs/requestCreator":"Ph2E","./utils/formatDate":"V6Mf","./utils/getCurrentServer":"DMkL","./utils/math":"XOOL","./utils/localStorage":"KWxH"}]},{},["HdqX"], null)

View File

@ -2,13 +2,14 @@ import requestCreator from './libs/requestCreator';
import getTranslations from './i18n/bonusBarbarianVillageFinder';
import getCurrentServer from './utils/getCurrentServer';
import { formatVillageURL, formatVillageName } from './utils/tribalwars';
import { calcDistanceBetweenTwoPoints } from './utils/math';
// ==UserScript==
// @name Bonus barbarian village finder
// @namespace https://github.com/tribalwarshelp/scripts
// @updateURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/bonusBarbarianVillageFinder.js
// @downloadURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/bonusBarbarianVillageFinder.js
// @version 0.4.0
// @version 0.4.1
// @description Bonus barbarian village finder
// @author Kichiyaki http://dawid-wysokinski.pl/
// @match *://*/game.php*screen=map*
@ -67,11 +68,14 @@ const searchBonusBarbarianVillages = async (e) => {
villages.items = villages.items
.map((item) => {
const a = coords[0] - item.x;
const b = coords[1] - item.y;
return {
...item,
distance: Math.sqrt(a * a + b * b),
distance: calcDistanceBetweenTwoPoints(
coords[0],
coords[1],
item.x,
item.y
),
};
})
.sort((a, b) => a.distance - b.distance);

View File

@ -3,6 +3,7 @@ import getTranslations from './i18n/extendedMapPopup';
import requestCreator from './libs/requestCreator';
import formatDate from './utils/formatDate';
import getCurrentServer from './utils/getCurrentServer';
import { calcDistanceBetweenTwoPoints } from './utils/math';
import { setItem, getItem } from './utils/localStorage';
// ==UserScript==
@ -10,7 +11,7 @@ import { setItem, getItem } from './utils/localStorage';
// @namespace https://github.com/tribalwarshelp/scripts
// @updateURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/extendedMapPopup.js
// @downloadURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/extendedMapPopup.js
// @version 0.4.0
// @version 0.5.0
// @description Extended Map Popup
// @author Kichiyaki http://dawid-wysokinski.pl/
// @match *://*/game.php*screen=map*
@ -23,6 +24,9 @@ const CURR_SERVER_CONFIG = `
server(key: $key) {
config {
speed
snob {
maxDist
}
}
}
}
@ -57,7 +61,15 @@ const isConfigExpired = (date) => {
const loadServerConfig = async () => {
let data = loadServerConfigFromLocalStorage();
if (!data || !data.server || isConfigExpired(new Date(data.loadedAt))) {
if (
!data ||
!data.server ||
isConfigExpired(new Date(data.loadedAt)) ||
!data.server.config ||
!data.server.config.speed ||
!data.server.config.snob ||
!data.server.config.snob.maxDist
) {
data = await requestCreator({
query: CURR_SERVER_CONFIG,
variables: {
@ -102,7 +114,8 @@ const calcLoyalty = (ennobledAt, speed) => {
return Math.floor(loyalty);
};
const renderAdditionalInfo = (data, cfg) => {
const renderAdditionalInfo = (id, data, cfg) => {
const coords = TWMap.CoordByXY(TWMap.villageKey[id]);
const ennoblement =
data &&
data.ennoblements &&
@ -149,12 +162,36 @@ const renderAdditionalInfo = (data, cfg) => {
}
</td>
`;
let canSendNobles = parent.querySelector('#canSendNobles');
if (!canSendNobles) {
canSendNobles = document.createElement('tr');
canSendNobles.id = 'canSendNobles';
parent.appendChild(canSendNobles);
}
canSendNobles.innerHTML = `
<td>
${translations.canSendNobles}:
</td>
<td>
${
calcDistanceBetweenTwoPoints(
coords[0],
coords[1],
window.game_data.village.x,
window.game_data.village.y
) < cfg.snob.maxDist
? translations.yes
: translations.no
}
</td>
`;
};
const createLoadVillageHandler = (cfg) => async (e) => {
TWMap.popup._loadVillage(e);
const data = await loadVillageData(parseInt(e));
renderAdditionalInfo(data, cfg);
renderAdditionalInfo(parseInt(e), data, cfg);
};
const createDisplayForVillageHandler = (cfg) => async (e, a, t) => {
@ -162,7 +199,7 @@ const createDisplayForVillageHandler = (cfg) => async (e, a, t) => {
const data = await loadVillageData(parseInt(e.id), {
cacheOnly: window.game_data.features.Premium.active,
});
renderAdditionalInfo(data, cfg);
renderAdditionalInfo(parseInt(e.id), data, cfg);
};
(async function () {

View File

@ -3,11 +3,17 @@ const translations = {
ennobledAt: 'Podbita o',
never: 'Nigdy',
possibleLoyalty: 'Możliwe poparcie',
canSendNobles: 'Można wysłać szlachciców',
yes: 'Tak',
no: 'Nie',
},
en_DK: {
ennobledAt: 'Ennobled at',
never: 'Never',
possibleLoyalty: 'Possible loyalty',
canSendNobles: 'Can send nobles',
yes: 'Yes',
no: 'No',
},
};

5
src/utils/math.js Normal file
View File

@ -0,0 +1,5 @@
export const calcDistanceBetweenTwoPoints = (x1, y1, x2, y2) => {
const a = x1 - x2;
const b = y1 - y2;
return Math.sqrt(a * a + b * b);
};