From 93961c17781260badab51672ebf13a45f01285d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dawid=20Wysoki=C5=84ski?= Date: Sun, 5 Feb 2023 07:33:32 +0000 Subject: [PATCH] feat: extended village profile (#9) Reviewed-on: https://gitea.dwysokinski.me/twhelp/scripts/pulls/9 --- .terserrc.js | 14 +- README.md | 18 +- docs/extended-village-profile.png | Bin 0 -> 52619 bytes package.json | 2 + src/extended-map-popup.user.ts | 5 +- src/extended-player-profile.user.ts | 1 - src/extended-village-profile.quickbar.ts | 2 + src/extended-village-profile.user.ts | 234 +++++++++++++++++++++++ 8 files changed, 269 insertions(+), 7 deletions(-) create mode 100644 docs/extended-village-profile.png create mode 100644 src/extended-village-profile.quickbar.ts create mode 100644 src/extended-village-profile.user.ts diff --git a/.terserrc.js b/.terserrc.js index a738b77..bd1d0db 100644 --- a/.terserrc.js +++ b/.terserrc.js @@ -2,7 +2,7 @@ const preambles = { 'extended-player-profile': `// ==UserScript== // @name Extended player profile // @version 1.1.1 -// @description Adds additional info and actions to a player's profile. +// @description Adds additional info and actions on a player overview. // @author Dawid Wysokiński - Kichiyaki - contact@dwysokinski.me // @match https://*/game.php?*screen=info_player* // @downloadURL ${process.env.PUBLIC_URL}/extended-player-profile.user.js @@ -22,6 +22,18 @@ const preambles = { // @icon https://www.google.com/s2/favicons?domain=plemiona.pl // @grant none // @run-at document-end +// ==/UserScript==`, + 'extended-village-profile': `// ==UserScript== +// @name Extended village profile +// @version 1.0.0 +// @description Adds additional info and actions on a village overview. +// @author Dawid Wysokiński - Kichiyaki - contact@dwysokinski.me +// @match https://*/game.php?*screen=info_village* +// @downloadURL ${process.env.PUBLIC_URL}/extended-village-profile.user.js +// @updateURL ${process.env.PUBLIC_URL}/extended-village-profile.user.js +// @icon https://www.google.com/s2/favicons?domain=plemiona.pl +// @grant none +// @run-at document-end // ==/UserScript==`, }; diff --git a/README.md b/README.md index 90e9cd1..4966173 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ This repo contains a variety of scripts for [Tribal Wars](https://www.tribalwars ### Extended player profile -This script adds additional info and actions to a player's profile. +This script adds additional info and actions on a player overview. ![img.png](docs/extended-player-profile.png) @@ -36,6 +36,22 @@ javascript: $.getScript('https://scripts.tribalwarshelp.com/extended-map-popup.quickbar.js') ``` +### Extended village profile + +This script adds additional info and actions on a village overview. + +![img.png](docs/extended-village-profile.png) + +#### Installation + +[User script](https://scripts.tribalwarshelp.com/extended-village-profile.user.js) + +Quick bar: +```javascript +javascript: + $.getScript('https://scripts.tribalwarshelp.com/extended-village-profile.quickbar.js') +``` + ## License Distributed under the MIT License. See ``LICENSE`` for more information. diff --git a/docs/extended-village-profile.png b/docs/extended-village-profile.png new file mode 100644 index 0000000000000000000000000000000000000000..99c73f4f0749dd5f62e55bf9daedd5787b68432a GIT binary patch literal 52619 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%0A<&U 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 { let tr = tbody.querySelector('#' + id); diff --git a/src/extended-player-profile.user.ts b/src/extended-player-profile.user.ts index a5f3756..77db4be 100644 --- a/src/extended-player-profile.user.ts +++ b/src/extended-player-profile.user.ts @@ -313,7 +313,6 @@ class UI { a.innerText = name; a.href = '#'; a.addEventListener('click', handler); - a.setAttribute('data-player-id', this.player.id.toString()); td.appendChild(a); tr.appendChild(td); tbody.appendChild(tr); diff --git a/src/extended-village-profile.quickbar.ts b/src/extended-village-profile.quickbar.ts new file mode 100644 index 0000000..9a519fa --- /dev/null +++ b/src/extended-village-profile.quickbar.ts @@ -0,0 +1,2 @@ +// Parcel doesn't have an option to rename output files +import './extended-village-profile.user'; diff --git a/src/extended-village-profile.user.ts b/src/extended-village-profile.user.ts new file mode 100644 index 0000000..62c2f6f --- /dev/null +++ b/src/extended-village-profile.user.ts @@ -0,0 +1,234 @@ +import { Ennoblement, ServerConfig, TWHelpClient } from './lib/twhelp'; +import { createTranslationFunc } from './utils'; +import { DialogTable } from './common/dialog-table'; +import { calcLoyalty } from './lib/tw'; +import { Cache } from './lib/cache'; + +const t = createTranslationFunc({ + pl_PL: { + 'Show ennoblements': 'Pokaż przejęcia', + 'Date/time': 'Data/czas', + Village: 'Wioska', + 'Old owner': 'Stary właściciel', + 'New owner': 'Nowy właściciel', + Points: 'Punkty', + Barbarian: 'Barbarzyńska', + 'Ennobled at': 'Ostatnio przejęta', + Unknown: 'Nieznany', + Loyalty: 'Poparcie', + Never: 'Nigdy', + }, +}); + +class TWHelpConnector { + private static SERVER_CONFIG_CACHE_KEY = + 'extended_village_profile_server_config'; + + private cache = new Cache(localStorage); + constructor( + private readonly client: TWHelpClient, + private readonly version: string, + private readonly server: string, + private readonly id: number + ) {} + + serverConfig() { + return this.cache.load( + TWHelpConnector.SERVER_CONFIG_CACHE_KEY, + 3600, + () => { + return this.client.serverConfig(this.version, this.server); + } + ); + } + + async latestEnnoblement() { + const ennoblements = await this.client.villageEnnoblements( + this.version, + this.server, + this.id, + { + limit: 1, + sort: ['createdAt:DESC'], + } + ); + return ennoblements.data.length > 0 ? ennoblements.data[0] : null; + } + + villageEnnoblements(page: number, limit: number) { + return this.client.villageEnnoblements(this.version, this.server, this.id, { + offset: (page - 1) * limit, + limit, + sort: ['createdAt:desc'], + }); + } +} + +enum DialogId { + ENNOBLEMENTS = 'extended_village_profile_ennoblements', +} + +class UI { + constructor( + private readonly config: ServerConfig, + private readonly ennoblement: Ennoblement | null, + private readonly connector: TWHelpConnector + ) {} + + render() { + this.renderAdditionalInfo(); + this.renderActions(); + } + + private renderAdditionalInfo() { + const tbody = document.querySelector('#embedmap_village')?.closest('tbody'); + if (!(tbody instanceof HTMLTableSectionElement)) { + return; + } + + tbody.insertAdjacentHTML( + 'beforeend', + ` + + ${t('Ennobled at')}: + ${ + this.ennoblement + ? new Date(this.ennoblement.createdAt).toLocaleString() + : t('Never') + } + + + ${t('Loyalty')}: + ${calcLoyalty( + this.ennoblement?.createdAt ?? 0, + this.config.speed + )} + + ` + ); + } + + private renderActions() { + const tbody = document + .querySelector('#content_value a[href*="twstats"]') + ?.closest('tbody'); + if (!(tbody instanceof HTMLTableSectionElement)) { + return; + } + + [ + { + name: t('Show ennoblements'), + handler: this.showEnnoblements.bind(this), + }, + ].forEach(({ name, handler }) => { + const tr = document.createElement('tr'); + const td = document.createElement('td'); + td.colSpan = 2; + const a = document.createElement('a'); + a.innerText = name; + a.href = '#'; + a.addEventListener('click', handler); + td.appendChild(a); + tr.appendChild(td); + tbody.appendChild(tr); + }); + } + + private async showEnnoblements(e: Event) { + e.preventDefault(); + + await new DialogTable( + DialogId.ENNOBLEMENTS, + [ + { + header: t('Village'), + accessor: (e) => + `${e.village.fullName}`, + }, + { + header: t('Points'), + accessor: (e) => e.points.toLocaleString(), + }, + { + header: t('Old owner'), + accessor: ({ village: { player } }) => { + if (!player) { + return t('Barbarian'); + } + return `${player.name}${ + player.tribe + ? ` (${player.tribe.tag})` + : '' + }`; + }, + }, + { + header: t('New owner'), + accessor: ({ newOwner }) => { + if (!newOwner) { + return t('Unknown'); + } + return `${newOwner.name}${ + newOwner.tribe + ? ` (${newOwner.tribe.tag})` + : '' + }`; + }, + }, + { + header: t('Date/time'), + accessor: (e) => new Date(e.createdAt).toLocaleString(), + }, + ], + 30, + (page: number, limit: number) => { + return this.connector.villageEnnoblements(page, limit); + } + ).render(); + } +} + +class ExtendedVillageProfile { + connector: TWHelpConnector; + constructor(client: TWHelpClient) { + this.connector = new TWHelpConnector( + client, + window.game_data.market, + window.game_data.world, + this.getVillageId() + ); + } + + async run() { + const config = await this.connector.serverConfig(); + const ennoblement = await this.connector.latestEnnoblement(); + + new UI(config, ennoblement, this.connector).render(); + } + + private getVillageId() { + const str = new URLSearchParams(window.location.search).get('id'); + if (!str) { + return 0; + } + return parseInt(str); + } +} + +(async () => { + if ( + window.game_data.screen !== 'info_village' || + window.game_data.mode !== null + ) { + return; + } + + await new ExtendedVillageProfile( + new TWHelpClient(process.env.TWHELP_API_BASE_URL ?? '') + ) + .run() + .catch((err) => { + console.log(err); + }); +})();