diff options
Diffstat (limited to 'src-vue/src')
35 files changed, 2171 insertions, 98 deletions
diff --git a/src-vue/src/App.vue b/src-vue/src/App.vue index 0426defe..97b20562 100644 --- a/src-vue/src/App.vue +++ b/src-vue/src/App.vue @@ -1,6 +1,13 @@ -<script setup lang="ts"> +<script lang="ts"> +import ChangelogView from './views/ChangelogView.vue'; +import DeveloperView from './views/DeveloperView.vue'; +import PlayView from './views/PlayView.vue'; +import ModsView from './views/ModsView.vue'; +import SettingsView from './views/SettingsView.vue'; import { ref } from "vue"; +import { store } from './plugins/store'; import { invoke } from "@tauri-apps/api/core"; +import NotificationButton from "./components/NotificationButton.vue"; const greetMsg = ref(""); const name = ref(""); @@ -9,14 +16,65 @@ async function greet() { // Learn more about Tauri commands at https://tauri.app/develop/calling-rust/ greetMsg.value = await invoke("greet", { name: name.value }); } + +export default { + components: { + ChangelogView, + DeveloperView, + PlayView, + SettingsView, + ModsView + }, + data() { + return {} + }, + mounted: async function() { + + // Initialize interface language + let lang = "en" + this.$root!.$i18n.locale = lang; + }, + methods: { + close() { + invoke("close_application"); + } + }, + computed: { + bgStyle(): string { + // @ts-ignore + const shouldBlur = this.$route.path !== "/"; + return `filter: brightness(0.8) ${shouldBlur ? 'blur(5px)' : ''};`; + } + } +} </script> <template> - <main class="container"> - <h1>Welcome to Tauri + Vue</h1> - - <div class="row"> - </div> + <div class="app-inner"> + <div id="fc_bg__container" :style="bgStyle"/> + + <nav id="fc_menu-bar"><!-- Hide menu bar in repair view --> + <!-- Navigation items --> + <el-menu + :default-active="$route.path" + router + mode="horizontal" + id="fc__menu_items" + data-tauri-drag-region + > + <el-menu-item index="/">{{ $t('menu.play') }}</el-menu-item> + <el-menu-item index="/mods">{{ $t('menu.mods') }}</el-menu-item> + <el-menu-item index="/changelog">{{ $t('menu.changelog') }}</el-menu-item> + <el-menu-item index="/settings">{{ $t('menu.settings') }}</el-menu-item> + </el-menu> + + <!-- Window controls --> + <div id="fc_window__controls"> + <NotificationButton /> + <el-button color="white" icon="SemiSelect" @click="minimize" circle /> + <el-button color="white" icon="CloseBold" @click="close" circle /> + </div> + </nav> <p>Click on the Tauri, Vite, and Vue logos to learn more.</p> <form class="row" @submit.prevent="greet"> @@ -24,128 +82,132 @@ async function greet() { <button type="submit">Greet</button> </form> <p>{{ greetMsg }}</p> - </main> + </div> </template> -<style scoped> -.logo.vite:hover { - filter: drop-shadow(0 0 2em #747bff); +<style> +#fc_menu-bar { + position: fixed; + z-index: 1; + top: 0; + width: 100%; + height: var(--fc-menu_height); } -.logo.vue:hover { - filter: drop-shadow(0 0 2em #249b73); +#fc__menu_bar::before { + position: absolute; + content: ""; + inset: 0; /* same as { top: 0; right: 0; bottom: 0; left: 0; } */ + background-image: linear-gradient(to bottom, red, orange); + z-index: 1; + opacity: 0; + transition: opacity 1s linear; } -</style> -<style> -:root { - font-family: Inter, Avenir, Helvetica, Arial, sans-serif; - font-size: 16px; - line-height: 24px; - font-weight: 400; - - color: #0f0f0f; - background-color: #f6f6f6; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-text-size-adjust: 100%; +#fc__menu_bar:hover::before { + opacity: 1; } -.container { - margin: 0; - padding-top: 10vh; - display: flex; - flex-direction: column; - justify-content: center; - text-align: center; +/* Borders reset */ +#fc__menu_bar, #fc__menu_items { + border: none !important; } - -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: 0.75s; +.app-inner { + height: 100%; + width: 100%; } -.logo.tauri:hover { - filter: drop-shadow(0 0 2em #24c8db); +/* Header item */ +#fc__menu_items { + height: 100%; + background-color: transparent; + float: left; + width: calc(100% - 168px); /* window controls container width */ } -.row { - display: flex; - justify-content: center; +#fc__menu_items .el-menu-item, #fc__menu_items .el-sub-menu__title { + color: #b4b6b9; + border-color: white; } -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; +#fc__menu_items > .el-menu-item { + text-transform: uppercase; + border: none !important; + font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', '微软雅黑', Arial, sans-serif; + font-weight: bold; + font-size: large; + background-color: transparent !important; + + border-width: 2px !important; + border-style: solid !important; + border-color: transparent !important; + border-radius: 10px !important; + transition: none; } -a:hover { - color: #535bf2; +#fc__menu_items .el-menu-item:hover, #fc__menu_items .el-sub-menu__title { + color: #c6c9ce; + background-color: transparent; } -h1 { - text-align: center; +#fc__menu_items .el-menu-item:focus-visible { + border-color: rgb(160, 207, 255) !important; } -input, -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - color: #0f0f0f; - background-color: #ffffff; - transition: border-color 0.25s; - box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2); +#fc__menu_items .el-menu-item.is-active, #fc__menu_items .el-sub-menu.is-active > .el-sub-menu__title { + color: white !important; } -button { - cursor: pointer; +.app-inner > .fc__mods__container { + overflow-y: auto; + height: calc(100% - var(--fc-menu_height)); } -button:hover { - border-color: #396cd8; +/* Header menu */ +.developer_build { + background: repeating-linear-gradient( + 45deg, + rgba(0, 0, 0, 0.2), + rgba(0, 0, 0, 0.2) 20px, + rgba(0, 0, 0, 0.3) 20px, + rgba(0, 0, 0, 0.3) 40px + ); } -button:active { - border-color: #396cd8; - background-color: #e8e8e8; + +/* Window controls */ +#fc_window__controls { + float: right; + height: 100%; } -input, -button { - outline: none; +#fc_window__controls > button, +#fc_window__controls > .el-dropdown > button, +#fc_window__controls > .el-dropdown > .el-badge > button { + color: white; + font-size: 20px; + margin: auto 5px; + background: none; + border: none; + height: 100%; } -#greet-input { - margin-right: 5px; +#fc_window__controls > button:hover, +#fc_window__controls > .el-dropdown > button:hover, +#fc_window__controls > .el-dropdown > .el-badge > button:hover { + color: #c6c9ce; } -@media (prefers-color-scheme: dark) { - :root { - color: #f6f6f6; - background-color: #2f2f2f; - } +#fc_window__controls > button:active, +#fc_window__controls > .el-dropdown > button:active { + color: #56585a; +} - a:hover { - color: #24c8db; - } +#fc_window__controls > button:last-of-type { + margin-right: 15px; +} - input, - button { - color: #ffffff; - background-color: #0f0f0f98; - } - button:active { - background-color: #0f0f0f69; - } +sup { + border: none !important; } </style> diff --git a/src-vue/src/assets/mp_colony020033.jpg b/src-vue/src/assets/mp_colony020033.jpg Binary files differnew file mode 100644 index 00000000..ed44eca9 --- /dev/null +++ b/src-vue/src/assets/mp_colony020033.jpg diff --git a/src-vue/src/assets/thunderstore-icon.png b/src-vue/src/assets/thunderstore-icon.png Binary files differnew file mode 100644 index 00000000..c286ab11 --- /dev/null +++ b/src-vue/src/assets/thunderstore-icon.png diff --git a/src-vue/src/assets/vue.svg b/src-vue/src/assets/vue.svg deleted file mode 100644 index 770e9d33..00000000 --- a/src-vue/src/assets/vue.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="37.07" height="36" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 198"><path fill="#41B883" d="M204.8 0H256L128 220.8L0 0h97.92L128 51.2L157.44 0h47.36Z"></path><path fill="#41B883" d="m0 0l128 220.8L256 0h-51.2L128 132.48L50.56 0H0Z"></path><path fill="#35495E" d="M50.56 0L128 133.12L204.8 0h-47.36L128 51.2L97.92 0H50.56Z"></path></svg>
\ No newline at end of file diff --git a/src-vue/src/assets/wallpaperflare.com_wallpaper.jpg b/src-vue/src/assets/wallpaperflare.com_wallpaper.jpg Binary files differnew file mode 100644 index 00000000..74a840cd --- /dev/null +++ b/src-vue/src/assets/wallpaperflare.com_wallpaper.jpg diff --git a/src-vue/src/components/NotificationButton.vue b/src-vue/src/components/NotificationButton.vue new file mode 100644 index 00000000..3835032d --- /dev/null +++ b/src-vue/src/components/NotificationButton.vue @@ -0,0 +1,81 @@ +<template> + <el-dropdown trigger="click" placement="bottom-end" max-height="280" popper-class="fc_popper"> + <el-badge v-if="notifications.length != 0" :value="notifications.length" :max="9" class="item" type="primary"> + <el-button color="white" icon="BellFilled" circle /> + </el-badge> + <el-button v-else color="white" icon="BellFilled" circle /> + <template #dropdown> + <el-dropdown-menu :key="counter"> + <el-alert + v-if="notifications.length != 0" + v-for="(notification, i) in notifications" + :key="i" + :title="notification.title" + :description="notification.text" + :type="notification.type" + show-icon + style="width: 300px" + @close.stop="removeNotification(i)" + /> + <el-result + v-else + icon="success" + :title="i18n.global.tc('notification.no_new.title')" + :sub-title="i18n.global.tc('notification.no_new.text')" + > + <template #icon> + </template> + </el-result> + </el-dropdown-menu> + </template> + </el-dropdown> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue'; +import {Notification} from '../plugins/modules/notifications'; +import {i18n} from "../main"; + +export default defineComponent({ + name: 'NotificationButton', + data: () => ({ + // This variable is used as a key for the dropdown menu, so we can force it to refresh when a item is deleted. + counter: 0 + }), + computed: { + i18n() { + return i18n + }, + notifications(): Notification[] { + return this.$store.state.notifications.notifications; + } + }, + methods: { + removeNotification(index: number) { + this.$store.commit('removeNotification', index); + // By refreshing the notifications list, we ensure the first notification get the index 0, ensuring this list + // is synchronized with the store list. + this.counter += 1; + } + } +}) +</script> + +<style scoped> +.el-dropdown { + height: 100%; + max-height: 300px; +} + +.el-button { + margin: auto 25px auto 0 !important; +} + +.el-alert { + margin: 5px 10px 5px 5px; +} + +.el-badge:deep(sup) { + transform: translate(-10px, 5px) !important; +} +</style> diff --git a/src-vue/src/i18n/lang/da.json b/src-vue/src/i18n/lang/da.json new file mode 100644 index 00000000..33486bce --- /dev/null +++ b/src-vue/src/i18n/lang/da.json @@ -0,0 +1,166 @@ +{ + "menu": { + "changelog": "Ændringslog", + "mods": "Mods", + "settings": "Indstillinger", + "dev": "Dev", + "play": "Spil" + }, + "generic": { + "yes": "Ja", + "no": "Nej", + "error": "Fejl", + "cancel": "afbryd", + "informationShort": "Info", + "downloading": "Henter", + "success": "Succes", + "extracting": "Udpakker", + "done": "Færdig" + }, + "play": { + "button": { + "select_game_dir": "Vælg Titanfall2 spil mappe", + "install": "Installere", + "installing": "Installer...", + "update": "Opdater", + "updating": "Opdatere...", + "ready_to_play": "Start spil", + "northstar_is_running": "Spillet køre" + }, + "unknown_version": "Ukendt version", + "see_patch_notes": "Se patch noter", + "players": "Spillere", + "servers": "Servere", + "northstar_running": "Northstar køre", + "ea_app_running": "EA appen køre", + "unable_to_load_playercount": "Kan ikke hente antallet af spillere" + }, + "mods": { + "local": { + "no_mods": "Ingen mods blev fundet.", + "delete_confirm": "Er du sikker på at du vil slette dette mod?", + "delete": "Slet", + "success_deleting": "Sletningen af {modName} lykkedes", + "part_of_ts_mod": "Dette Northstar mod er en del af et Thunderstore mod" + }, + "online": { + "no_match": "Der er ikke fundet nogen matchende mod.", + "try_another_search": "Prøv en anden søgning!" + }, + "menu": { + "local": "Lokal", + "online": "Online", + "filter": "Filter", + "search": "Søg", + "sort_mods": "Sorter mods", + "select_categories": "Vælg kategorier", + "sort": { + "name_asc": "navn (A til Z)", + "name_desc": "navn (Z til A)", + "date_asc": "Dato (fra ældste)", + "most_downloaded": "Mest hentet", + "top_rated": "bedst bedømt", + "date_desc": "Dato (fra nyeste)" + } + }, + "card": { + "button": { + "being_installed": "Installerer...", + "being_updated": "Opdaterer...", + "installed": "Installeret", + "install": "Installere", + "outdated": "Opdater" + }, + "by": "af", + "more_info": "Mere info", + "remove": "Fjern mod", + "remove_dialog_title": "Advarsel", + "remove_success": "Fjernet {modName}", + "install_success": "Installeret {modName}", + "remove_dialog_text": "Fjern Thunderstore mod?" + } + }, + "settings": { + "manage_install": "Administrer installation", + "choose_folder": "Vælg installationsmappe", + "open_game_folder": "Åben mappe", + "nb_ts_mods_per_page": "Antal Thunderstore-mods pr. side", + "nb_ts_mods_reset": "Nulstil til standard", + "language": "Sprog", + "language_select": "Vælg dit yndlingssprog", + "about": "Om:", + "flightcore_version": "FlightCore version:", + "testing": "Tester:", + "enable_test_channels": "Aktiver testudgivelseskanaler", + "dev_mode_enabled_title": "Pas på!", + "dev_mode_enabled_text": "Udviklertilstand aktiveret.", + "show_deprecated_mods": "Vis forældede Thunderstore-mods", + "show_deprecated_mods_desc2": "Pas på, sådanne mods er normalt forældet af en god grund.", + "profile": { + "active": "Aktiv profil", + "edit": "Rediger profiler", + "dialog": { + "title": "Profiler" + } + }, + "repair": { + "title": "Reparere", + "open_window": "Åbn reparationsvinduet", + "window": { + "title": "FlightCore reparationsvinduet", + "disable_all_but_core": "Deaktiver alle undtagen kernemods", + "disable_all_but_core_success": "Deaktiverede alle mods undtagen kernemods", + "disable_modsettings": "Deaktiver ModSettings mod", + "disable_modsettings_success": "Deaktiver ModSettings mod", + "force_reinstall_ns": "Tving geninstallation Northstar", + "force_delete_temp_dl": "Tving sletning af midlertidig download-mappe", + "delete_persistent_store": "Slet FlightCore persistent indhold", + "reinstall_title": "Tving geninstallation af Northstar", + "reinstall_text": "Vent lidt", + "reinstall_success": "Northstar blev geninstalleret", + "warning": "Dette vindue indeholder forskellige funktioner til at reparere almindelige problemer med Northstar og FlightCore.", + "kill_northstar_process": "Dræb, der kører Northstar/Titanfall2-processen" + } + }, + "nb_ts_mods_per_page_desc1": "Dette har en indvirkning på skærmydelsen, når du gennemser Thunderstore-mods.", + "nb_ts_mods_per_page_desc2": "Indstil denne værdi til 0 for at deaktivere paginering.", + "show_deprecated_mods_desc1": "Dette giver dig mulighed for at se forældede mods i online-mods-samlingen." + }, + "notification": { + "game_folder": { + "new": { + "title": "Ny spil mappe", + "text": "Spilmappen blev opdateret." + }, + "wrong": { + "title": "Forkert mappe", + "text": "Den valgte mappe er ikke en gyldig Titanfall2 Installation." + }, + "not_found": { + "title": "Titanfall2 ikke fundet!", + "text": "Vælg venligst installationsstedet manuelt" + } + }, + "profile": { + "invalid": { + "title": "Ugyldig profil", + "text": "Den profil, du forsøgte at skifte til, er ikke længere gyldig." + } + }, + "flightcore_outdated": { + "title": "FlightCore forældet!", + "text": "Opdater venligst FlightCore.\nKører forældet version {oldVersion}.\nNyeste er {newVersion}!" + } + }, + "channels": { + "release": { + "switch": { + "text": "Skiftet udgivelseskanal til \"{canal}\"." + } + }, + "names": { + "Northstar": "Northstar", + "NorthstarReleaseCandidate": "Northstar udgivelseskandidat" + } + } +} diff --git a/src-vue/src/i18n/lang/de.json b/src-vue/src/i18n/lang/de.json new file mode 100644 index 00000000..a360c124 --- /dev/null +++ b/src-vue/src/i18n/lang/de.json @@ -0,0 +1,177 @@ +{ + "menu": { + "play": "Spielen", + "changelog": "Versionhistorie", + "mods": "Mods", + "settings": "Einstellungen", + "dev": "Dev" + }, + "generic": { + "yes": "Ja", + "no": "Nein", + "error": "Fehler", + "cancel": "Abbrechen", + "informationShort": "Info", + "downloading": "Herunterladen", + "extracting": "Extrahieren", + "done": "Fertig", + "success": "Erfolg", + "confirm": "Bestätigen" + }, + "play": { + "button": { + "northstar_is_running": "Spiel läuft", + "select_game_dir": "Titanfall2 ordner wählen", + "install": "Installieren", + "installing": "Installiert...", + "update": "Aktualisieren", + "updating": "Aktualisiert...", + "ready_to_play": "Spiel starten" + }, + "unknown_version": "Unbekannte Version", + "see_patch_notes": "Siehe Patch-Notizen", + "players": "Spieler", + "servers": "Server", + "unable_to_load_playercount": "Spielerzahl konnte nicht geladen werden", + "northstar_running": "Northstar läuft:", + "ea_app_running": "EA App läuft:" + }, + "mods": { + "local": { + "no_mods": "Keine Mods gefunden.", + "delete_confirm": "Bist du dir sicher, dass du diesen Mod löschen möchtest?", + "delete": "Löschen", + "part_of_ts_mod": "Dieser Northstar Mod ist teil eines Thunderstore Mods", + "success_deleting": "{modName} erfolgreich gelöscht" + }, + "online": { + "no_match": "Keine passenden Mods gefunden.", + "try_another_search": "Versuche eine andere Suchanfrage!" + }, + "menu": { + "local": "Lokal", + "online": "Online", + "filter": "Filter", + "search": "Suche", + "sort_mods": "Mods sortieren", + "select_categories": "Kategorien wählen", + "sort": { + "name_asc": "Nach Name (A to Z)", + "name_desc": "Nach Name (Z to A)", + "date_asc": "Nach Datum (älteste zuerst)", + "date_desc": "Nach Datum (neuste zuerst)", + "most_downloaded": "Am meisten heruntergeladen", + "top_rated": "Am besten bewerted" + } + }, + "card": { + "button": { + "being_installed": "Installiert...", + "being_updated": "Aktualisiert...", + "installed": "Installiert", + "install": "Installieren", + "outdated": "Aktualisieren" + }, + "by": "von", + "more_info": "Mehr Info", + "remove": "Mod entfernen", + "remove_dialog_title": "Warnung", + "remove_dialog_text": "Thunderstore Mod entfernen?", + "remove_success": "{modName} entfernt", + "install_success": "{modName} installiert" + } + }, + "settings": { + "manage_install": "Installation verwalten", + "choose_folder": "Installationsordner wählen", + "open_game_folder": "Ordner öffnen", + "nb_ts_mods_per_page": "Anzahl an Thunderstore Mods pro Seite", + "nb_ts_mods_per_page_desc1": "Ändern dieser Einstellung kann die Leistung beim Suchen von Thunderstore Mods beeinflussen.", + "nb_ts_mods_per_page_desc2": "Setze diesen Wert auf 0 um alle Mods auf einer einzelnen Seite anzuzeigen.", + "nb_ts_mods_reset": "Standard wiederherstellen", + "language": "Sprache", + "language_select": "Bevorzugte Sprache wählen", + "about": "Über:", + "flightcore_version": "FlightCore Version:", + "testing": "Testen:", + "enable_test_channels": "Testversionen aktivieren", + "dev_mode_enabled_title": "Vorsicht!", + "dev_mode_enabled_text": "Entwicklermodus aktiviert.", + "repair": { + "title": "Reparieren", + "open_window": "Reparierfenster öffnen", + "window": { + "title": "FlightCore Reparierfenster", + "warning": "Dieses Fenster enthält verschiedene Funktionen um gängige Probleme mit Northstar und FlightCore zu beheben.", + "disable_all_but_core": "Alle außer notwendige Mods deaktivieren", + "disable_all_but_core_success": "Alle außer notwendige Mods wurden deaktiviert", + "force_reinstall_ns": "Northstar reinstallieren", + "force_delete_temp_dl": "Temporären FlightCore Downloadordner löschen", + "delete_persistent_store": "FlightCore Einstellungen zurücksetzen", + "kill_northstar_process": "Laufenden Northstar/Titanfall2 Prozess beenden", + "reinstall_title": "Northstar wird neu installiert", + "reinstall_text": "Bitte warten", + "reinstall_success": "Northstar erfolgreich neu installiert", + "disable_modsettings_success": "Der Mod ModSettings wurde deaktiviert", + "disable_modsettings": "Deaktiviere den ModSettings Mod" + } + }, + "show_deprecated_mods_desc1": "Damit werden veraltete Mods in der Online-Mods-Ansicht sichtbar.", + "show_deprecated_mods_desc2": "Aber Vorsicht, solche Mods sind normalerweise aus gutem Grund als veraltet markiert.", + "show_deprecated_mods": "Veraltete Thunderstore mods anzeigen", + "profile": { + "dialog": { + "title": "Profile", + "delete_confirm": "Sind Sie sich sicher, dass Sie dieses Profil löschen möchten?", + "delete": "Löschen", + "clone": "Duplizieren", + "create_empty": "Neues Profil", + "new_profile_name": "Neuen Profilnamen eingeben" + }, + "active": "Aktives Profil", + "edit": "Profile bearbeiten" + } + }, + "notification": { + "game_folder": { + "new": { + "title": "Neuer Spielordner", + "text": "Spielordner erfolgreich aktualisiert." + }, + "wrong": { + "title": "Falscher Ordner", + "text": "Der gewählte Ordner enthält keine valide Titanfall2 Installation." + }, + "not_found": { + "title": "Titanfall2 nicht gefunden!", + "text": "Bitte wähle den Installationsordner manuell aus" + } + }, + "flightcore_outdated": { + "title": "FlightCore veraltet!", + "text": "Bitte aktualisiere FlightCore.\nDu hast die veraltetet Version {oldVersion}.\nNeuste Version ist {newVersion}!" + }, + "profile": { + "invalid": { + "text": "Das Profil auf das Sie wechseln möchten ist nicht länger gültig.", + "title": "Ungültiges Profil" + } + }, + "no_new": { + "title": "Aktuell", + "text": "Hier gibt es nichts zu sehen!" + }, + "date_prefix": "auf" + }, + "channels": { + "release": { + "switch": { + "text": "Releasekanal zu \"{canal}\" gewechselt." + } + }, + "names": { + "Northstar": "Northstar", + "NorthstarReleaseCandidate": "Northstar Release Candidate" + } + } +} diff --git a/src-vue/src/i18n/lang/en.json b/src-vue/src/i18n/lang/en.json new file mode 100644 index 00000000..4c3da49f --- /dev/null +++ b/src-vue/src/i18n/lang/en.json @@ -0,0 +1,200 @@ +{ + "menu": { + "play": "Play", + "changelog": "Changelog", + "mods": "Mods", + "settings": "Settings", + "dev": "Dev" + }, + + "generic": { + "yes": "Yes", + "no": "No", + "error": "Error", + "confirm": "Confirm", + "cancel": "Cancel", + "informationShort": "Info", + "downloading": "Downloading", + "extracting": "Extracting", + "done": "Done", + "success": "Success" + }, + + "play": { + "button": { + "northstar_is_running": "Game is running", + "select_game_dir": "Select Titanfall2 game folder", + "install": "Install", + "installing": "Installing...", + "update": "Update", + "updating": "Updating...", + "ready_to_play": "Launch game" + }, + + "unknown_version": "Unknown version", + "see_patch_notes": "see patch notes", + "players": "players", + "servers": "servers", + "unable_to_load_playercount": "Unable to load playercount", + "northstar_running": "Northstar is running:", + "ea_app_running": "EA App is running:" + }, + + "mods": { + "local": { + "no_mods": "No mods were found.", + "delete_confirm": "Are you sure to delete this mod?", + "delete": "Delete", + "part_of_ts_mod": "This Northstar mod is part of a Thunderstore mod", + "success_deleting": "Success deleting {modName}" + }, + + "online": { + "no_match": "No matching mod has been found.", + "try_another_search": "Try another search!" + }, + + "menu": { + "local": "Local", + "online": "Online", + "filter": "Filter", + "search": "Search", + "sort_mods": "Sort mods", + "select_categories": "Select categories", + + "sort": { + "name_asc": "By name (A to Z)", + "name_desc": "By name (Z to A)", + "date_asc": "By date (from oldest)", + "date_desc": "By date (from newest)", + "most_downloaded": "Most downloaded", + "top_rated": "Top rated" + } + }, + + "card": { + "button": { + "being_installed": "Installing...", + "being_updated": "Updating...", + "installed": "Installed", + "install": "Install", + "outdated": "Update" + }, + + "by": "by", + "more_info": "More info", + "remove": "Remove mod", + "remove_dialog_title": "Warning", + "remove_dialog_text": "Delete Thunderstore mod?", + "remove_success": "Removed {modName}", + "install_success": "Installed {modName}" + } + }, + + "settings": { + "manage_install": "Manage installation", + "choose_folder": "Choose installation folder", + "open_game_folder": "Open Folder", + "nb_ts_mods_per_page": "Number of Thunderstore mods per page", + "nb_ts_mods_per_page_desc1": "This has an impact on display performances when browsing Thunderstore mods.", + "nb_ts_mods_per_page_desc2": "Set this value to 0 to disable pagination.", + "nb_ts_mods_reset": "Reset to default", + "language": "Language", + "language_select": "Select your favorite language", + "about": "About:", + "flightcore_version": "FlightCore version:", + "testing": "Testing:", + "enable_test_channels": "Enable testing release channels", + "dev_mode_enabled_title": "Watch out!", + "dev_mode_enabled_text": "Developer mode enabled.", + "show_deprecated_mods": "Show deprecated Thunderstore mods", + "show_deprecated_mods_desc1": "This allows you to see deprecated mods in the online mods collection.", + "show_deprecated_mods_desc2": "Watch out, such mods are usually deprecated for a good reason.", + "show_nsfw_mods": "Show NSFW Thunderstore mods", + + "profile": { + "active": "Active Profile", + "edit": "Edit Profiles", + + "dialog": { + "title": "Profiles", + "delete_confirm": "Are you sure to delete this profile?", + "delete": "Delete", + "clone": "Clone", + "new_profile_name": "Enter the new Profile name", + "create_empty": "New Profile" + } + }, + + "repair": { + "title": "Repair", + "open_window": "Open repair window", + + "window": { + "title": "FlightCore repair window", + "warning": "This window contains various functionality to repair common issues with Northstar and FlightCore.", + "disable_all_but_core": "Disable all but core mods", + "disable_all_but_core_success": "Disabled all mods but core", + "disable_modsettings": "Disable ModSettings mod", + "disable_modsettings_success": "Disabled ModSettings mod", + "force_reinstall_ns": "Force reinstall Northstar", + "force_delete_temp_dl": "Force delete temp download folder", + "delete_persistent_store": "Delete FlightCore persistent store", + "kill_northstar_process": "Kill running Northstar/Titanfall2 process", + "reinstall_title": "Force reinstalling Northstar", + "reinstall_text": "Please wait", + "reinstall_success": "Successfully reinstalled Northstar" + } + } + }, + + "notification": { + "date_prefix": "at", + "no_new": { + "title": "Up-to-date", + "text": "Nothing to see here!" + }, + + "game_folder": { + "new": { + "title": "New game folder", + "text": "Game folder was successfully updated." + }, + + "wrong": { + "title": "Wrong folder", + "text": "Selected folder is not a valid Titanfall2 install." + }, + + "not_found": { + "title": "Titanfall2 not found!", + "text": "Please manually select install location" + } + }, + + "profile": { + "invalid": { + "title": "Invalid Profile", + "text": "The profile you tried to switch to is no longer valid." + } + }, + + "flightcore_outdated": { + "title": "FlightCore outdated!", + "text": "Please update FlightCore.\nRunning outdated version {oldVersion}.\nNewest is {newVersion}!" + } + }, + + "channels": { + "release": { + "switch": { + "text": "Switched release channel to \"{canal}\"." + } + }, + + "names": { + "Northstar": "Northstar", + "NorthstarReleaseCandidate": "Northstar release candidate" + } + } +} diff --git a/src-vue/src/i18n/lang/es.json b/src-vue/src/i18n/lang/es.json new file mode 100644 index 00000000..2b4d255c --- /dev/null +++ b/src-vue/src/i18n/lang/es.json @@ -0,0 +1,175 @@ +{ + "menu": { + "mods": "Modificaciones", + "settings": "Opciones", + "dev": "Desarrollador", + "play": "Jugar", + "changelog": "Cambios" + }, + "generic": { + "yes": "Sí", + "no": "No", + "error": "Error", + "cancel": "Cancelar", + "informationShort": "Información", + "extracting": "Extrayendo", + "done": "Listo", + "success": "Éxito", + "downloading": "Descargando", + "confirm": "Confirmar" + }, + "play": { + "button": { + "northstar_is_running": "El juego ya se está ejecutando", + "install": "Instalar", + "update": "Actualizar", + "select_game_dir": "Seleccione carpeta base de Titanfall 2", + "ready_to_play": "Jugar ahora", + "installing": "Instalando...", + "updating": "Actualizando..." + }, + "ea_app_running": "La aplicación de EA ya se está ejecutando:", + "unknown_version": "Versión Desconocida", + "see_patch_notes": "Ver las notas del parche", + "players": "jugadores", + "servers": "servidores", + "northstar_running": "Northstar ya se está ejecutando:", + "unable_to_load_playercount": "Cantidad de jugadores no disponible" + }, + "mods": { + "local": { + "no_mods": "No hay mods encontrados.", + "delete_confirm": "¿Estás segur@ que quieres eliminar este mod?", + "delete": "Eliminar", + "success_deleting": "{modName} Ha sido eliminado correctamente", + "part_of_ts_mod": "Este mod de Northstar es parte de un mod de la ThunderStore" + }, + "online": { + "no_match": "No hay mods coincidentes.", + "try_another_search": "Intente otra busqueda!" + }, + "menu": { + "local": "Local", + "online": "En línea", + "filter": "FIltro", + "search": "Búsqueda", + "sort_mods": "Ordenar mods", + "select_categories": "Seleccionar categorías", + "sort": { + "name_asc": "Por nombre (de la A a la Z)", + "date_asc": "Por fecha (desde la más antigua)", + "date_desc": "Por fecha (desde la más reciente)", + "most_downloaded": "Los más descargados", + "top_rated": "Mejor valorados", + "name_desc": "Por nombre (de la Z a la A)" + } + }, + "card": { + "button": { + "being_installed": "Instalando...", + "being_updated": "Actualizando...", + "installed": "Instalado", + "outdated": "Actualizar", + "install": "Instalar" + }, + "by": "por", + "remove": "Quitar mod", + "remove_dialog_title": "Advertencia", + "remove_dialog_text": "Eliminar mod de la ThunderStore?", + "install_success": "{modName} Instalado", + "more_info": "Mas información", + "remove_success": "{modName} Ha sido eliminado" + } + }, + "settings": { + "manage_install": "Administrar instalación", + "choose_folder": "Elegir carpeta de instalación", + "open_game_folder": "Abrir carpeta", + "nb_ts_mods_per_page": "Numero de mods por página de ThunderStore", + "nb_ts_mods_per_page_desc2": "Poner valor en 0 para desactivar la paginación.", + "nb_ts_mods_reset": "Reestablecer por defecto", + "language": "Idioma", + "language_select": "Seleccionar idioma favorito", + "about": "Acerca de:", + "flightcore_version": "Versión de FlightCore:", + "testing": "Probando:", + "enable_test_channels": "Activar liberación de canales", + "dev_mode_enabled_title": "¡Cuidado!", + "dev_mode_enabled_text": "Modo de desarrollador activado.", + "show_deprecated_mods_desc1": "Esto permite ver mods obsoletos de la colección online de ThunderStore.", + "show_deprecated_mods_desc2": "Cuidado, estos mods suelen estar obsoletos por una buena razón.", + "profile": { + "active": "Perfil activo", + "edit": "Editar perfiles", + "dialog": { + "title": "Perfiles", + "delete_confirm": "Eliminar Perfil?", + "delete": "Eliminar", + "clone": "Duplicar" + } + }, + "repair": { + "title": "Reparar", + "window": { + "title": "Ventana de reparación de FlightCore", + "disable_all_but_core": "Desactivar todos los mods excepto los principales", + "disable_all_but_core_success": "Desactivados todos los mods excepto el núcleo", + "disable_modsettings": "Desactivar ModSettings", + "disable_modsettings_success": "ModSettings desactivado", + "force_reinstall_ns": "Forzar reinstalación de Northstar", + "force_delete_temp_dl": "Forzar la eliminación de la carpeta temporal de descargas", + "delete_persistent_store": "Borrar el almacén persistente de FlightCore", + "reinstall_title": "Forzar la reinstalación de Northstar", + "reinstall_text": "Espere, por favor", + "reinstall_success": "Northstar reinstalado con éxito", + "warning": "Esta ventana tiene varias funciones para reparar problemas comunes con Northstar y FlightCore.", + "kill_northstar_process": "Finalizar proceso de Northstar/Titanfall 2" + }, + "open_window": "Abrir la ventana de reparación" + }, + "nb_ts_mods_per_page_desc1": "Esto puede tener impactos en fluidez al buscar mods en la ThunderStore.", + "show_deprecated_mods": "Mostrar mods the ThunderStore obsoletos" + }, + "notification": { + "game_folder": { + "new": { + "title": "Nueva carpeta de juego", + "text": "La carpeta de juego fue actualizada exitosamente." + }, + "wrong": { + "title": "Carpeta equivocada", + "text": "La carpeta seleccionada no es una carpeta de Titanfall2 válida." + }, + "not_found": { + "title": "Titanfall 2 no encontrado!", + "text": "Por favor seleccione manualmente el lugar de instalación" + } + }, + "profile": { + "invalid": { + "title": "Perfil inválido", + "text": "El perfil de cambio anterior ya no es válido." + } + }, + "flightcore_outdated": { + "title": "FlightCore desactualizado!", + "text": "Por favor actualize FlightCore.\nEsta versión esta desactualizada {oldVersion}\nLa versión mas nueva es {newVersion}!" + }, + "no_new": { + "title": "Al día", + "text": "Nada que ver aquí!" + }, + "date_prefix": "en" + }, + "channels": { + "release": { + "switch": { + "text": "El canal seleccionado se cambió a \"{canal}\"." + } + }, + "names": { + "Northstar": "Northstar", + "NorthstarReleaseCandidate": "Candidato de nueva versión de Northstar" + } + } +} diff --git a/src-vue/src/i18n/lang/fr.json b/src-vue/src/i18n/lang/fr.json new file mode 100644 index 00000000..efc0815b --- /dev/null +++ b/src-vue/src/i18n/lang/fr.json @@ -0,0 +1,177 @@ +{ + "menu": { + "play": "Jouer", + "changelog": "Notes", + "mods": "Mods", + "settings": "Paramètres", + "dev": "Dev" + }, + "generic": { + "yes": "Oui", + "no": "Non", + "error": "Erreur", + "cancel": "Annuler", + "informationShort": "Info", + "downloading": "Téléchargement", + "extracting": "Extraction", + "done": "Fait", + "success": "Succès", + "confirm": "Confirmed" + }, + "play": { + "button": { + "northstar_is_running": "En cours d'utilisation", + "select_game_dir": "Sélectionner le dossier du jeu", + "install": "Installer", + "installing": "Installation...", + "update": "Mettre à jour", + "updating": "Mise à jour...", + "ready_to_play": "Jouer" + }, + "unknown_version": "Version inconnue", + "see_patch_notes": "voir les notes de version", + "players": "joueurs", + "servers": "serveurs", + "unable_to_load_playercount": "Impossible de charger les statistiques", + "northstar_running": "Northstar est en cours d'exécution :", + "ea_app_running": "EA App est en cours d'exécution :" + }, + "mods": { + "local": { + "no_mods": "Aucun mod trouvé.", + "delete_confirm": "Êtes-vous certain de vouloir supprimer ce mod ?", + "delete": "Supprimer", + "part_of_ts_mod": "Ce mod Northstar fait partie d'un mod Thunderstore", + "success_deleting": "Succès de la suppression de {modName}" + }, + "online": { + "no_match": "Aucun mod correspondant n'a été trouvé.", + "try_another_search": "Essayez une autre recherche !" + }, + "menu": { + "local": "Local", + "online": "En ligne", + "filter": "Filtrer", + "search": "Chercher", + "sort_mods": "Trier les mods", + "select_categories": "Choisir les catégories", + "sort": { + "name_asc": "Par nom (de A à Z)", + "name_desc": "Par nom (de Z à A)", + "date_asc": "Par date (du plus vieux)", + "date_desc": "Par date (du plus récent)", + "most_downloaded": "Plus téléchargés", + "top_rated": "Mieux notés" + } + }, + "card": { + "button": { + "being_installed": "Installation...", + "being_updated": "Mise à jour...", + "installed": "Installé", + "install": "Installer", + "outdated": "Mettre à jour" + }, + "by": "par", + "more_info": "Plus d'informations", + "remove": "Supprimer le mod", + "remove_dialog_title": "Attention", + "remove_dialog_text": "Voulez-vous vraiment supprimer ce mod Thunderstore ?", + "remove_success": "{modName} supprimé", + "install_success": "{modName} installé" + } + }, + "settings": { + "manage_install": "Gérer l'installation", + "choose_folder": "Choisir le dossier d'installation du jeu", + "open_game_folder": "Ouvrir le dossier du jeu", + "nb_ts_mods_per_page": "Nombre de mods Thunderstore par page", + "nb_ts_mods_per_page_desc1": "Ce paramètre a un impact sur les performances d'affichage des mods Thunderstore.", + "nb_ts_mods_per_page_desc2": "Réglez-le sur 0 pour désactiver la pagination.", + "nb_ts_mods_reset": "Valeur par défaut", + "language": "Langue", + "language_select": "Sélectionnez votre langue", + "about": "À propos", + "flightcore_version": "Version de FlightCore :", + "testing": "Tests :", + "enable_test_channels": "Activer le test de versions de pré-production", + "dev_mode_enabled_title": "Attention !", + "dev_mode_enabled_text": "Mode développeur activé.", + "repair": { + "title": "Dépannage", + "open_window": "Ouvrir la fenêtre de dépannage", + "window": { + "title": "Fenêtre de dépannage FlightCore", + "warning": "Cette fenêtre contient plusieurs fonctionnalité de résolution de problèmes courants avec Northstar et FlightCore.", + "disable_all_but_core": "Désactiver tous les mods (sauf ceux de Northstar)", + "disable_all_but_core_success": "Tous les mods sauf ceux de Northstar ont été désactivés", + "force_reinstall_ns": "Forcer la réinstallation de Northstar", + "force_delete_temp_dl": "Supprimer le dossier de téléchargement temporaire", + "delete_persistent_store": "Supprimer l'espace de stockage local de FlightCore", + "reinstall_title": "Forcer la réinstallation de Northstar", + "reinstall_text": "Veuillez patienter", + "reinstall_success": "Northstar réinstallé avec succès", + "disable_modsettings": "Désactiver le mod ModSettings", + "disable_modsettings_success": "Mod ModSettings désactivé", + "kill_northstar_process": "Arrêter le processus en cous de Northstar/Titanfall2" + } + }, + "show_deprecated_mods": "Montrer les mods Thunderstore dépréciés", + "show_deprecated_mods_desc1": "Ce paramètre vous permet d'afficher les mods Thunderstore dépréciés dans la collection de mods.", + "show_deprecated_mods_desc2": "Attention, les mods dépréciés le sont généralement pour une bonne raison.", + "profile": { + "active": "Profile actif", + "edit": "Éditer les profiles", + "dialog": { + "title": "Profiles", + "clone": "Cloner", + "delete": "Supprimer", + "delete_confirm": "Voulez-vous vraiment supprimer ce profil ?", + "create_empty": "nouveau profil", + "new_profile_name": "Entrez le nouveau nom du profil" + } + } + }, + "notification": { + "date_prefix": "à", + "no_new": { + "title": "Vous êtes à jour", + "text": "Rien à voir par ici !" + }, + "game_folder": { + "new": { + "title": "Nouveau dossier", + "text": "Le dossier du jeu a bien été mis à jour." + }, + "wrong": { + "title": "Mauvais dossier", + "text": "Le dossier sélectionné ne contient pas d'installation de Titanfall2." + }, + "not_found": { + "title": "Titanfall2 non trouvé !", + "text": "Veuillez sélectionner manuellement le dossier du jeu." + } + }, + "flightcore_outdated": { + "title": "Mise à jour disponible !", + "text": "Veuillez mettre à jour FlightCore.\nVersion actuelle : {oldVersion}.\nNouvelle version : {newVersion} !" + }, + "profile": { + "invalid": { + "text": "Le profile sur lequel vous essayez de basculer n'est plus valide.", + "title": "Profile invalide" + } + } + }, + "channels": { + "release": { + "switch": { + "text": "Le canal de téléchargement a été réglé sur \"{canal}\"." + } + }, + "names": { + "Northstar": "Northstar", + "NorthstarReleaseCandidate": "Version de pré-release" + } + } +} diff --git a/src-vue/src/i18n/lang/it.json b/src-vue/src/i18n/lang/it.json new file mode 100644 index 00000000..9da8ce8d --- /dev/null +++ b/src-vue/src/i18n/lang/it.json @@ -0,0 +1,175 @@ +{ + "generic": { + "yes": "Si", + "no": "No", + "error": "Errore", + "cancel": "Cancella", + "downloading": "Scaricando", + "extracting": "Estraendo", + "done": "Fatto", + "success": "Successo", + "informationShort": "Info", + "confirm": "Conferma" + }, + "play": { + "unknown_version": "Versione sconosciuta", + "unable_to_load_playercount": "Impossibile caricare numero giocatori", + "northstar_running": "Northstar sta andando:", + "origin_running": "Origin sta andando:", + "see_patch_notes": "guarda le note della patch", + "players": "Giocatori", + "servers": "Server", + "button": { + "northstar_is_running": "Il Gioco sta andando", + "install": "Installa", + "installing": "Installazione...", + "update": "Aggiorna", + "updating": "Aggiornamento...", + "ready_to_play": "Gioca", + "select_game_dir": "Seleziona la cartella di Titanfall 2" + }, + "ea_app_running": "EA App sta andando:" + }, + "mods": { + "local": { + "no_mods": "Nessuna mod è stata trovata.", + "delete_confirm": "Sei sicuro di voler eliminare questa mod?", + "part_of_ts_mod": "Questa Northstar mod è parte di una Thunderstore mod", + "success_deleting": "{modName} Eliminata con successo", + "delete": "Elimina" + }, + "online": { + "no_match": "Nessuna mod corrispondente trovata.", + "try_another_search": "Prova un'altra ricerca!" + }, + "menu": { + "local": "Locale", + "filter": "Filtra", + "online": "Online", + "search": "Cerca", + "sort_mods": "Sorteggia mods", + "select_categories": "Seleziona categorie", + "sort": { + "name_asc": "Per nome (da A alla Z)", + "name_desc": "Per nome (da Z alla A)", + "date_asc": "Per data (dal più vecchio)", + "date_desc": "Per data (dal più recente)", + "most_downloaded": "Più scaricate", + "top_rated": "Più votate" + } + }, + "card": { + "button": { + "being_updated": "Aggiornando...", + "installed": "Installato", + "being_installed": "Installando...", + "install": "Installa", + "outdated": "Aggiorna" + }, + "by": "per", + "more_info": "Più informazioni", + "remove": "Rimuovi mod", + "remove_dialog_title": "Attenzione", + "remove_dialog_text": "Eliminare Thunderstore mod?", + "remove_success": "{modName} Rimossa", + "install_success": "{modName} Installata" + } + }, + "menu": { + "mods": "Mods", + "settings": "Impostazioni", + "dev": "Dev", + "play": "Gioca", + "changelog": "Note" + }, + "notification": { + "game_folder": { + "wrong": { + "title": "Cartella errata", + "text": "La cartella selezionata non ha un'installazione di Titanfall2 valida." + }, + "new": { + "title": "Nuova cartella di gioco", + "text": "Cartella di gioco aggiornata con successo." + }, + "not_found": { + "title": "Titanfall2 non trovato!", + "text": "Per favore selezionare manualmente la posizione dell'installazione" + } + }, + "flightcore_outdated": { + "title": "FlightCore fuori data!", + "text": "Per favore aggiorna FlightCore.\nVersione in uso {oldVersion} fuori data.\nLa più recente è {newVersion}!" + }, + "no_new": { + "text": "Niente da vedere qui!", + "title": "Aggiornato" + }, + "profile": { + "invalid": { + "text": "Il profilo a cui hai provato ad accedere non è più valido.", + "title": "Profilo non valido" + } + } + }, + "settings": { + "manage_install": "Gestisci l'installazione", + "choose_folder": "Scegli la cartella dell'installazione", + "open_game_folder": "Apri Cartella", + "nb_ts_mods_per_page": "Numero di Thunderstore mods per pagina", + "nb_ts_mods_per_page_desc1": "Questo ha un impatto sulle performazioni schermo mentre si navigano le Thunderstore mods.", + "nb_ts_mods_per_page_desc2": "Cambiare questo valore a 0 per disattivare la paginazione.", + "nb_ts_mods_reset": "Resetta a default", + "language": "Lingua", + "language_select": "Seleziona la tua lingua preferito", + "about": "Al riguardo:", + "flightcore_version": "Versione FlighCore:", + "testing": "Testando:", + "enable_test_channels": "Abilita i canali del test di rilascio", + "dev_mode_enabled_title": "Attenzione!", + "dev_mode_enabled_text": "Modalità Sviluppatore attivata.", + "repair": { + "title": "Ripara", + "open_window": "Apri finestra di riparazione", + "window": { + "title": "Finestra riparazione di FlightCore", + "warning": "Questa finestra contiene varie funzionalità per riparare problemi comuni con Northstar e FlightCore.", + "disable_all_but_core": "Disattiva tutte le mods (eccetto quelle di Northstar)", + "disable_all_but_core_success": "Disattivate tutte le mods (eccetto quelle di Northstar)", + "force_reinstall_ns": "Forza reinstallazione di Northstar", + "force_delete_temp_dl": "Forza l'eliminazione della cartella dei download temporanei", + "delete_persistent_store": "Elimina lo spazio d'archiviazione persistente di FlightCore", + "reinstall_title": "Reinstallando Northstar forzatamente", + "reinstall_text": "Attendere per favore", + "reinstall_success": "Northstar reinstallato con successo", + "kill_northstar_process": "Ferma il processo Northstar/Titanfall2 in esecuzione", + "disable_modsettings_success": "ModSettings disabilitata", + "disable_modsettings": "Disabilita la mod ModSettings" + } + }, + "profile": { + "active": "Profilo attivo", + "dialog": { + "clone": "Clona", + "delete": "Elimina", + "delete_confirm": "Sei sicuro di voler eliminare questo profilo?", + "title": "Profili" + }, + "edit": "Modifica profilo" + }, + "show_deprecated_mods": "Mostra mod di Thunderstore deprecate", + "show_deprecated_mods_desc2": "Fai attenzione, alcune mod di solito sono deprecate per un buon motivo.", + "show_deprecated_mods_desc1": "Permette di vedere le mod deprecate nella collezione online." + }, + "channels": { + "release": { + "switch": { + "text": "Cambiato il canale di rilascio a \"{canal}\"." + } + }, + "names": { + "Northstar": "Northstar", + "NorthstarReleaseCandidate": "Northstar versione pre-rilascio" + } + } +} diff --git a/src-vue/src/i18n/lang/pl.json b/src-vue/src/i18n/lang/pl.json new file mode 100644 index 00000000..175d6eb3 --- /dev/null +++ b/src-vue/src/i18n/lang/pl.json @@ -0,0 +1,177 @@ +{ + "menu": { + "changelog": "Dziennik zmian", + "mods": "Mody", + "settings": "Ustawienia", + "dev": "Dev", + "play": "Graj" + }, + "generic": { + "yes": "Tak", + "no": "Nie", + "error": "Błąd", + "cancel": "Anuluj", + "downloading": "Pobieranie", + "extracting": "Wypakowywanie", + "done": "Gotowe", + "success": "Sukces", + "informationShort": "Informacja", + "confirm": "Potwierdź" + }, + "play": { + "button": { + "northstar_is_running": "Gra jest uruchomiona", + "select_game_dir": "Wybierz folder gry Titanfall2", + "install": "Zainstaluj", + "update": "Aktualizuj", + "updating": "Aktualizowanie...", + "ready_to_play": "Uruchom grę", + "installing": "Instalowanie..." + }, + "unknown_version": "Nieznana wersja", + "see_patch_notes": "zobacz listę zmian", + "players": "gracze", + "servers": "serwery", + "northstar_running": "Northstar jest uruchomiony:", + "ea_app_running": "EA App jest uruchomiony:", + "unable_to_load_playercount": "Nie można załadować liczby graczy" + }, + "mods": { + "local": { + "no_mods": "Nie znaleziono żadnych modów.", + "delete_confirm": "Czy na pewno chcesz usunąć ten mod?", + "delete": "Usuń", + "success_deleting": "Sukces usuwania {modName}", + "part_of_ts_mod": "Ten mod Northstar jest częścią moda Thunderstore" + }, + "online": { + "no_match": "Nie znaleziono pasującego moda.", + "try_another_search": "Spróbuj innego wyszukiwania!" + }, + "menu": { + "local": "Lokalne", + "online": "Online", + "filter": "Filtry", + "search": "Szukaj", + "sort_mods": "Sortowanie modów", + "select_categories": "Wybierz kategorie", + "sort": { + "name_asc": "Według nazwy (od A do Z)", + "name_desc": "Według nazwy (od Z do A)", + "date_desc": "Według daty (od najnowszej)", + "most_downloaded": "Najczęściej pobierane", + "top_rated": "Najwyżej ocenione", + "date_asc": "Według daty (od najstarszej)" + } + }, + "card": { + "button": { + "being_installed": "Instalowanie...", + "being_updated": "Aktualizowanie...", + "installed": "Zainstalowano", + "install": "Zainstaluj", + "outdated": "Aktualizuj" + }, + "by": "od", + "more_info": "Więcej informacji", + "remove": "Usuń moda", + "remove_dialog_title": "Ostrzeżenie", + "remove_dialog_text": "Usunąć mod Thunderstore?", + "remove_success": "Usunięto {modName}", + "install_success": "Zainstalowano {modName}" + } + }, + "settings": { + "manage_install": "Zarządzaj instalacją", + "choose_folder": "Wybierz folder instalacyjny", + "nb_ts_mods_per_page": "Liczba modów Thunderstore na stronie", + "nb_ts_mods_per_page_desc2": "Ustaw tę wartość na 0, aby wyłączyć paginację.", + "nb_ts_mods_reset": "Przywrócenie ustawień domyślnych", + "language": "Język", + "language_select": "Wybierz swój ulubiony język", + "about": "O:", + "flightcore_version": "Wersja FlightCore:", + "testing": "Testy:", + "enable_test_channels": "Włączenie kanałów wydań testowych", + "dev_mode_enabled_title": "Uważaj!", + "dev_mode_enabled_text": "Tryb deweloperski włączony.", + "repair": { + "title": "Naprawa", + "open_window": "Otwórz okno naprawy", + "window": { + "disable_all_but_core": "Wyłączenie wszystkich modów poza podstawowymi", + "disable_all_but_core_success": "Wyłączone wszystkie mody oprócz podstawowych", + "force_reinstall_ns": "Wymuś reinstalację Northstara", + "force_delete_temp_dl": "Wymuś usunięcie folderu tymczasowego pobierania", + "delete_persistent_store": "Usuń stały magazyn FlightCore", + "reinstall_title": "Wymuszona reinstalacja Northstara", + "reinstall_text": "Proszę czekać", + "reinstall_success": "Pomyślnie przeinstalowano Northstar", + "title": "Okno naprawy FlightCore", + "warning": "To okno zawiera różne funkcje do naprawy typowych problemów z Northstar i FlightCore.", + "disable_modsettings": "Wyłącz moda ModSettings", + "disable_modsettings_success": "Wyłączono moda ModSettings", + "kill_northstar_process": "Zamknij uruchomiony proces Northstar/Titanfall2" + } + }, + "nb_ts_mods_per_page_desc1": "Ma to wpływ na wydajność wyświetlania podczas przeglądania modów Thunderstore.", + "open_game_folder": "Otwórz folder", + "show_deprecated_mods_desc2": "Ostrożnie, mody są zazwyczaj oznaczone jako przestarzałe nie bez powodu.", + "show_deprecated_mods": "Pokaż przestarzałe mody Thunderstore", + "show_deprecated_mods_desc1": "Pozwala to zobaczyć przestarzałe mody w kolekcji modów online.", + "profile": { + "active": "Aktywny profil", + "dialog": { + "title": "Profile", + "delete": "Usuń", + "clone": "Klonuj", + "new_profile_name": "Wprowadź nową nazwę profilu", + "create_empty": "Nowy profil", + "delete_confirm": "Czy na pewno chcesz usunąć ten profil?" + }, + "edit": "Edytuj profile" + } + }, + "notification": { + "game_folder": { + "new": { + "title": "Nowy folder z grą", + "text": "Folder gry został pomyślnie zaktualizowany." + }, + "wrong": { + "title": "Niewłaściwy folder", + "text": "Wybrany folder nie jest poprawną instalacją Titanfall2." + }, + "not_found": { + "title": "Nie znaleziono Titanfall2!", + "text": "Proszę ręcznie wybrać lokalizację instalacji" + } + }, + "flightcore_outdated": { + "title": "FlightCore nieaktualny!", + "text": "Proszę zaktualizować FlightCore.\nUruchomiono przestarzałą wersję {oldVersion}.\nNajnowsza to {newVersion}!" + }, + "profile": { + "invalid": { + "title": "Nieprawidłowy profil", + "text": "Profil, na który próbowano się przełączyć, nie jest już prawidłowy." + } + }, + "no_new": { + "title": "Aktualny", + "text": "Nie ma tu nic do obejrzenia!" + }, + "date_prefix": "na" + }, + "channels": { + "release": { + "switch": { + "text": "Przełączono kanał wydań na \"{canal}\"." + } + }, + "names": { + "Northstar": "Northstar", + "NorthstarReleaseCandidate": "Kandydat do wydania Northstar" + } + } +} diff --git a/src-vue/src/i18n/lang/ru.json b/src-vue/src/i18n/lang/ru.json new file mode 100644 index 00000000..b0261299 --- /dev/null +++ b/src-vue/src/i18n/lang/ru.json @@ -0,0 +1,178 @@ +{ + "generic": { + "yes": "Да", + "no": "Нет", + "extracting": "Распаковывание", + "done": "Готово", + "success": "Успешно", + "error": "Ошибка", + "cancel": "Отмена", + "informationShort": "Информация", + "downloading": "Скачивание", + "confirm": "Подтвердить" + }, + "menu": { + "mods": "Моды", + "play": "Играть", + "settings": "Настройки", + "dev": "Разработчик", + "changelog": "Обновления" + }, + "play": { + "button": { + "northstar_is_running": "Игра запущена", + "install": "Установить", + "installing": "Установка...", + "updating": "Обновление...", + "ready_to_play": "Запустить игру", + "update": "Обновить", + "select_game_dir": "Выберите папку с Titanfall 2" + }, + "unknown_version": "Неизвестная версия", + "players": "игроков", + "servers": "серверов", + "unable_to_load_playercount": "Не можем загрузить количество игроков", + "northstar_running": "Northstar запущен:", + "ea_app_running": "EA App запущен:", + "see_patch_notes": "просмотреть список изменений" + }, + "mods": { + "local": { + "delete_confirm": "Вы уверены, что хотите удалить этот мод?", + "delete": "Удалить", + "success_deleting": "{modName} Успешно удален", + "no_mods": "Моды не найдены.", + "part_of_ts_mod": "Этот мод Northstar является частью мода на Thunderstore" + }, + "online": { + "no_match": "Не найдено совпадающих модов.", + "try_another_search": "Попробуйте другой запрос!" + }, + "menu": { + "online": "Онлайн", + "filter": "Фильтр", + "search": "Поиск", + "sort_mods": "Сортировать моды", + "sort": { + "name_asc": "По имени (от A до Z)", + "name_desc": "По имени (от Z до A)", + "date_asc": "По дате (со старейшего)", + "date_desc": "По дате (с новейшего)", + "top_rated": "Самый популярный", + "most_downloaded": "Самый загружаемый" + }, + "local": "Установленные", + "select_categories": "Выбрать категории" + }, + "card": { + "button": { + "being_installed": "Установка...", + "being_updated": "Обновление...", + "installed": "Установлен", + "install": "Установить", + "outdated": "Обновить" + }, + "by": "от", + "remove": "Удалить мод", + "remove_dialog_title": "Внимание", + "remove_dialog_text": "Удалить мод Thunderstore?", + "remove_success": "{modName} Удален", + "more_info": "Подробнее", + "install_success": "{modName} Установлен" + } + }, + "settings": { + "manage_install": "Управлять установкой", + "choose_folder": "Выберите папку установки", + "open_game_folder": "Открыть папку", + "nb_ts_mods_reset": "Вернуть по умолчанию", + "language": "Язык", + "language_select": "Выберите свой любимый язык", + "testing": "Тестирование:", + "enable_test_channels": "Включить каналы с тестовыми релизами", + "dev_mode_enabled_title": "Осторожно!", + "repair": { + "open_window": "Открыть окно фиксов", + "window": { + "title": "Окно фиксов FlightCore", + "force_reinstall_ns": "Принудительно переустановить Northstar", + "delete_persistent_store": "Удалить постоянное хранилище FlightCore", + "reinstall_title": "Принудительно переустанавливаем Northstar", + "reinstall_text": "Пожалуйста, подождите", + "disable_all_but_core_success": "Выключены все моды кроме главных", + "disable_all_but_core": "Выключить все моды, кроме главных", + "warning": "Это окно содержит различные функции для устранения часто возникающих проблем с Northstar и FlightCore.", + "force_delete_temp_dl": "Принудительно удалить папку с временными загрузками", + "reinstall_success": "Northstar успешно переустановлен", + "disable_modsettings": "Выключить мод ModSettings", + "disable_modsettings_success": "Выключен мод ModSettings", + "kill_northstar_process": "Закрыть запущенный Northstar/Titanfall 2" + }, + "title": "Фиксы" + }, + "nb_ts_mods_per_page_desc1": "Это влияет на производительность при просмотре модов с Thunderstore.", + "about": "Информация:", + "nb_ts_mods_per_page": "Количество модов Thunderstore на каждую страницу", + "nb_ts_mods_per_page_desc2": "Установите это значение на 0, чтобы отключить страницы.", + "flightcore_version": "Версия FlightCore:", + "dev_mode_enabled_text": "Включен режим разработчика.", + "show_deprecated_mods": "Показать устаревшие моды Thunderstore", + "show_deprecated_mods_desc1": "Это позволяет вам видеть устаревшие моды в меню онлайн модов.", + "show_deprecated_mods_desc2": "Внимание, такие моды обычно устаревшие по хорошей причине.", + "profile": { + "active": "Активный Профиль", + "edit": "Редактировать Профили", + "dialog": { + "title": "Профили", + "clone": "Копировать", + "delete": "Удалить", + "delete_confirm": "Вы уверены, что хотите удалить этот профиль?", + "new_profile_name": "Введите новое имя профиля", + "create_empty": "Новый профиль" + } + }, + "show_nsfw_mods": "Показывать NSFW-моды с Thunderstore" + }, + "notification": { + "game_folder": { + "new": { + "title": "Новая папка игры", + "text": "Папка игры успешно обновлена." + }, + "wrong": { + "title": "Неправильная папка", + "text": "Выбранная папка не является папкой с Titanfall 2." + }, + "not_found": { + "title": "Titanfall 2 не найден!", + "text": "Пожалуйста, вручную выберите место установки" + } + }, + "flightcore_outdated": { + "title": "FlightCore устарел!", + "text": "Пожалуйста, обновите FlightCore\nСейчас запущена старая версия - {oldVersion}.\nНовейшая версия - {newVersion}!" + }, + "profile": { + "invalid": { + "title": "Некорректный Профиль", + "text": "Профиль, на который вы пытаетесь переключиться, больше не является корректным." + } + }, + "no_new": { + "text": "Смотреть здесь нечего!", + "title": "Нет уведомлений" + }, + "date_prefix": "в" + }, + "channels": { + "release": { + "switch": { + "text": "Релизный канал переключен на \"{canal}\"." + } + }, + "names": { + "Northstar": "Northstar", + "NorthstarReleaseCandidate": "Пре-релизная версия Northstar" + } + } +} diff --git a/src-vue/src/i18n/lang/zh_Hans.json b/src-vue/src/i18n/lang/zh_Hans.json new file mode 100644 index 00000000..dca36f98 --- /dev/null +++ b/src-vue/src/i18n/lang/zh_Hans.json @@ -0,0 +1,169 @@ +{ + "menu": { + "mods": "模组", + "settings": "设置", + "dev": "开发者模式", + "play": "开始游玩", + "changelog": "更新日志" + }, + "generic": { + "error": "错误", + "cancel": "取消", + "yes": "是", + "no": "否", + "informationShort": "信息", + "downloading": "下载中", + "extracting": "解压中", + "done": "完成", + "success": "成功", + "confirm": "确认" + }, + "play": { + "button": { + "northstar_is_running": "游戏正在运行", + "select_game_dir": "选择Titanfall 2游戏目录", + "install": "安装", + "installing": "安装中...", + "update": "升级", + "ready_to_play": "启动游戏", + "updating": "升级中..." + }, + "unknown_version": "未知版本", + "see_patch_notes": "参阅相关补丁说明", + "servers": "服务器", + "players": "玩家", + "unable_to_load_playercount": "加载玩家数量失败", + "ea_app_running": "EA App运行状态:", + "northstar_running": "Northstar运行状态:" + }, + "mods": { + "local": { + "no_mods": "未找到模组。", + "delete_confirm": "你确定要删除该模组吗?", + "delete": "删除", + "part_of_ts_mod": "该Northstar模组来源于Thunderstore", + "success_deleting": "成功删除 {modName}" + }, + "online": { + "try_another_search": "尝试其他搜索方式!", + "no_match": "未找到相匹配的模组。" + }, + "menu": { + "local": "本地", + "search": "搜索", + "sort_mods": "模组排序", + "select_categories": "标签选择", + "sort": { + "date_desc": "日期降序", + "date_asc": "日期升序", + "name_desc": "按名称(Z到A)", + "most_downloaded": "最多下载", + "top_rated": "最高评分", + "name_asc": "按名称(A到Z)" + }, + "online": "线上", + "filter": "筛选" + }, + "card": { + "button": { + "being_installed": "安装中...", + "being_updated": "升级中...", + "installed": "已安装", + "install": "安装", + "outdated": "升级" + }, + "by": "作者:", + "remove": "移除模组", + "remove_dialog_title": "警告", + "remove_success": "已移除{modName}", + "install_success": "已安装 {modName}", + "more_info": "更多信息", + "remove_dialog_text": "删除该来自Thunderstore的模组?" + } + }, + "settings": { + "manage_install": "安装管理", + "choose_folder": "选择安装目录", + "open_game_folder": "打开文件夹", + "nb_ts_mods_per_page": "Thunderstore每页显示多少个模组", + "nb_ts_mods_per_page_desc2": "该值设为0时将不再显示页码。", + "nb_ts_mods_reset": "重置为默认值", + "language": "语言", + "language_select": "请选择你需要的语言", + "about": "关于:", + "flightcore_version": "FlightCore 版本:", + "testing": "测试选项:", + "enable_test_channels": "开启测试版本选项", + "nb_ts_mods_per_page_desc1": "该数值对加载Thunderstore页面时的速度有影响。", + "dev_mode_enabled_title": "看上面!", + "dev_mode_enabled_text": "开发者模式已启用。", + "show_deprecated_mods": "显示已弃用的Thunderstore模组", + "show_deprecated_mods_desc1": "该选项会使您可以在线上模组合集中看到已弃用的模组。", + "show_deprecated_mods_desc2": "请注意,这类模组被弃用一般是有原因的。", + "repair": { + "title": "修复", + "window": { + "title": "FlightCore 修复工具", + "warning": "此工具包含修复Northstar和FlightCore各种常见问题的功能。", + "disable_all_but_core": "除了核心模组以外禁用其他模组", + "disable_all_but_core_success": "已禁用除核心模组以外的所有模组", + "disable_modsettings": "禁用ModSettings模组", + "disable_modsettings_success": "已禁用ModSettings模组", + "force_delete_temp_dl": "强制删除临时下载目录", + "delete_persistent_store": "删除FlightCore永久存储文件", + "reinstall_text": "请耐心等待", + "reinstall_success": "成功重装Northstar", + "force_reinstall_ns": "强制重装Northstar", + "reinstall_title": "正在强制重装Northstar", + "kill_northstar_process": "终止正在运行的 Northstar/Titanfall2 进程" + }, + "open_window": "打开修复工具" + }, + "profile": { + "active": "当前用户配置", + "edit": "编辑用户配置", + "dialog": { + "title": "用户配置", + "delete_confirm": "你确定要删除此配置文件吗?", + "delete": "删除" + } + } + }, + "notification": { + "game_folder": { + "new": { + "title": "新的游戏目录", + "text": "已成功更新游戏目录。" + }, + "wrong": { + "title": "错误的文件夹", + "text": "所选文件夹不是有效的Titanfall2安装目录。" + }, + "not_found": { + "title": "未找到Titanfall2!", + "text": "请手动选择安装目录" + } + }, + "flightcore_outdated": { + "title": "FlightCore需要更新!", + "text": "请更新FlightCore.\n正在运行旧版本 {oldVersion}.\n最新版本为 {newVersion}!" + }, + "profile": { + "invalid": { + "title": "无效用户配置", + "text": "您尝试切换到的用户配置已失效。" + } + } + }, + "channels": { + "release": { + "switch": { + "text": "将资源版本切换至 \"{canal}\"." + } + }, + "names": { + "NorthstarReleaseCandidate": "Northstar测试版本", + "Northstar": "Northstar" + } + } +} diff --git a/src-vue/src/main.ts b/src-vue/src/main.ts index b670de8b..9d8fee83 100644 --- a/src-vue/src/main.ts +++ b/src-vue/src/main.ts @@ -1,4 +1,67 @@ -import { createApp } from "vue"; -import App from "./App.vue"; +import { createApp } from 'vue' +import { createI18n } from "vue-i18n"; +import App from './App.vue' +import ElementPlus from "element-plus"; +import * as ElementPlusIconsVue from '@element-plus/icons-vue' +import { store } from './plugins/store'; +import PlayView from "./views/PlayView.vue"; +import ChangelogView from "./views/ChangelogView.vue"; +import ModsView from "./views/ModsView.vue"; +import SettingsView from "./views/SettingsView.vue"; +import DeveloperView from "./views/DeveloperView.vue"; +import RepairView from "./views/RepairView.vue"; +import {createRouter, createWebHashHistory} from "vue-router"; +import en from "./i18n/lang/en.json"; +import fr from "./i18n/lang/fr.json"; +import da from "./i18n/lang/da.json"; +import de from "./i18n/lang/de.json"; +import es from "./i18n/lang/es.json"; +import pl from "./i18n/lang/pl.json"; +import ru from "./i18n/lang/ru.json"; +import it from "./i18n/lang/it.json"; +import zh_Hans from "./i18n/lang/zh_Hans.json"; -createApp(App).mount("#app"); + +const app = createApp(App); + +// internationalization +export const i18n = createI18n({ + locale: 'en', + fallbackLocale: 'en', + messages: { + en, fr, da, de, es, pl, ru, it, zh_Hans + } +}); +app.use(i18n); + +// styles +import 'element-plus/theme-chalk/index.css'; +import './style.css' + +app.use(ElementPlus); + +// icons +for (const [key, component] of Object.entries(ElementPlusIconsVue)) { + app.component(key, component); +} + +// style + + +// routes +const routes = [ + { path: '/', name: 'Main', component: async () => PlayView}, + { path: '/changelog', name: 'Changelog', component: async () => ChangelogView}, + { path: '/mods', name: 'Mods', component: async () => ModsView}, + { path: '/settings', name: 'Settings', component: async () => SettingsView}, + { path: '/dev', name: 'Dev', component: async () => DeveloperView}, + { path: '/repair', name: 'Repair', component: async () => RepairView}, +]; +export const router = createRouter({ + history: createWebHashHistory(), + routes, // short for `routes: routes` +}); +app.use(router); + + +app.mount('#app') diff --git a/src-vue/src/plugins/modules/notifications.ts b/src-vue/src/plugins/modules/notifications.ts new file mode 100644 index 00000000..ed57f8af --- /dev/null +++ b/src-vue/src/plugins/modules/notifications.ts @@ -0,0 +1,31 @@ +type NotificationType = 'success' | 'warning' | 'info' | 'error'; + +export interface Notification { + title: string; + text: string; + type: NotificationType; +} + +interface NotificationsStoreState { + notifications: Notification[]; +} + + +/** + * This notification module is meant to host the list of notifications that have been fired while the application was + * not focused. + * This list is then used by the [NotificationButton] component to display notifications to user. + **/ +export const notificationsModule = { + state: () => ({ + notifications: [] + }) as NotificationsStoreState, + mutations: { + addNotification(state: NotificationsStoreState, payload: Notification) { + state.notifications.push(payload); + }, + removeNotification(state: NotificationsStoreState, index: number): void { + state.notifications.splice(index, 1); + } + } + } diff --git a/src-vue/src/plugins/store.ts b/src-vue/src/plugins/store.ts new file mode 100644 index 00000000..d77fbc42 --- /dev/null +++ b/src-vue/src/plugins/store.ts @@ -0,0 +1,9 @@ +import { createStore } from 'vuex'; + + +/** + * This is called when application root component has been mounted. + * It invokes all Rust methods that are needed to initialize UI. + */ +async function _initializeApp(state: any) { +} diff --git a/src-vue/src/style.css b/src-vue/src/style.css new file mode 100644 index 00000000..d322a0dd --- /dev/null +++ b/src-vue/src/style.css @@ -0,0 +1,56 @@ +* { + box-sizing: border-box; +} + +html, body { + height: 100%; + width: 100%; +} + +body { + margin: 0; + font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', '微软雅黑', Arial, sans-serif; + --fc-menu_height: 50px; + user-select: none; +} + +#app { + position: relative; + height: 100%; + width: 100%; +} + +#fc_bg__container { + background: url(/src/assets/mp_colony020033.jpg) center no-repeat; + background-size: cover; + height: 100%; + width: 100%; + position: fixed; + filter: brightness(0.8); + scale: 1.03; +} + +.el-scrollbar { + --el-scrollbar-opacity: 0.5; + --el-scrollbar-hover-opacity: 0.7; +} + +.fc-container { + position: relative; + padding-top: var(--fc-menu_height); + height: 100%; + color: white; +} + +.noModMessage { + color: white; + margin: 30px 15px; +} + +.fc_popper { + width: auto !important; +} + +.el-popconfirm { + word-break: break-word; +} diff --git a/src-vue/src/utils/GameInstall.ts b/src-vue/src/utils/GameInstall.ts new file mode 100644 index 00000000..162d2860 --- /dev/null +++ b/src-vue/src/utils/GameInstall.ts @@ -0,0 +1,5 @@ +export interface GameInstall { + game_path: string; + profile: string, + install_type: string; +} diff --git a/src-vue/src/utils/NorthstarState.ts b/src-vue/src/utils/NorthstarState.ts new file mode 100644 index 00000000..2c8756b1 --- /dev/null +++ b/src-vue/src/utils/NorthstarState.ts @@ -0,0 +1,8 @@ +export enum NorthstarState { + GAME_NOT_FOUND = "GAME_NOT_FOUND", + INSTALL = "INSTALL", + INSTALLING = "INSTALLING", + MUST_UPDATE = "MUST_UPDATE", + UPDATING = "UPDATING", + READY_TO_PLAY = "READY_TO_PLAY" +}
\ No newline at end of file diff --git a/src-vue/src/utils/ReleaseCanal.ts b/src-vue/src/utils/ReleaseCanal.ts new file mode 100644 index 00000000..9363aa25 --- /dev/null +++ b/src-vue/src/utils/ReleaseCanal.ts @@ -0,0 +1,4 @@ +export enum ReleaseCanal { + RELEASE = <any>'Northstar', + RELEASE_CANDIDATE = <any>'NorthstarReleaseCandidate' +} diff --git a/src-vue/src/utils/SortOptions.d.ts b/src-vue/src/utils/SortOptions.d.ts new file mode 100644 index 00000000..b6f180d2 --- /dev/null +++ b/src-vue/src/utils/SortOptions.d.ts @@ -0,0 +1,8 @@ +export enum SortOptions { + NAME_ASC = 'name_asc', + NAME_DESC = 'name_desc', + DATE_ASC = 'date_asc', + DATE_DESC = 'date_desc', + MOST_DOWNLOADED = 'most_downloaded', + TOP_RATED = 'top_rated' +} diff --git a/src-vue/src/utils/Tabs.ts b/src-vue/src/utils/Tabs.ts new file mode 100644 index 00000000..5d31379c --- /dev/null +++ b/src-vue/src/utils/Tabs.ts @@ -0,0 +1,8 @@ +export enum Tabs { + PLAY = '/', + CHANGELOG = '/changelog', + SETTINGS = '/settings', + DEV = '/dev', + MODS = '/mods', + REPAIR = '/repair', +} diff --git a/src-vue/src/utils/filter.ts b/src-vue/src/utils/filter.ts new file mode 100644 index 00000000..b85b9623 --- /dev/null +++ b/src-vue/src/utils/filter.ts @@ -0,0 +1,26 @@ +/** + * Implements a fuzzy filter + * Iterates through chars of `search_term` and checks if each char exists in consecutive order in `text`. + * For example, this means that `text="Gecko"` and `search_term="geo"` will return `true` + * but using `text="Gecko"` and `search_term="goe"` will return `false` + * + * Implements a subset of "fuzzy string searching" + * https://en.wikipedia.org/wiki/Approximate_string_matching + */ +function fuzzy_filter(text: string, search_term: string): boolean { + const lowercase_text = text.toLowerCase(); + const lowercase_search_term = search_term.toLowerCase(); + + let previousIndex = -1; + for (let i = 0; i < lowercase_search_term.length; i++) { + const char = lowercase_search_term[i]; + const currentIndex = lowercase_text.indexOf(char, previousIndex + 1); + if (currentIndex === -1) { + return false; + } + previousIndex = currentIndex; + } + + return true; +} +export { fuzzy_filter }; diff --git a/src-vue/src/utils/thunderstore/ThunderstoreModStatus.ts b/src-vue/src/utils/thunderstore/ThunderstoreModStatus.ts new file mode 100644 index 00000000..f2351226 --- /dev/null +++ b/src-vue/src/utils/thunderstore/ThunderstoreModStatus.ts @@ -0,0 +1,7 @@ +export enum ThunderstoreModStatus { + INSTALLED, + BEING_INSTALLED, + BEING_UPDATED, + NOT_INSTALLED, + OUTDATED +} diff --git a/src-vue/src/utils/thunderstore/version.ts b/src-vue/src/utils/thunderstore/version.ts new file mode 100644 index 00000000..a111e08c --- /dev/null +++ b/src-vue/src/utils/thunderstore/version.ts @@ -0,0 +1,33 @@ +import {ThunderstoreMod} from "../../../../src-tauri/bindings/ThunderstoreMod"; +import {NorthstarMod} from "../../../../src-tauri/bindings/NorthstarMod"; +import {store} from "../../plugins/store"; + +/** + * Strips off a Thunderstore dependency string from its version + * (e.g. "taskinoz-WallrunningTitans-1.0.0" to + * "taskinoz-WallrunningTitans"). + **/ +function getThunderstoreDependencyStringPrefix(dependency: string): string { + const dependencyStringMembers = dependency.split('-'); + return `${dependencyStringMembers[0]}-${dependencyStringMembers[1]}`; +} + +function isThunderstoreModOutdated(mod: ThunderstoreMod): boolean { + // Ensure mod is up-to-date. + const tsModPrefix = getThunderstoreDependencyStringPrefix(mod.versions[0].full_name); + const matchingMods: NorthstarMod[] = store.state.installed_mods.filter((mod: NorthstarMod) => { + if (!mod.thunderstore_mod_string) return false; + return getThunderstoreDependencyStringPrefix(mod.thunderstore_mod_string!) === tsModPrefix; + }); + if (matchingMods.length !== 0) { + // There shouldn't be several mods with same dependency string, but we never know... + const matchingMod = matchingMods[0]; + // A mod is outdated if its dependency strings differs from Thunderstore dependency string + // (no need for semver check here). + // This assumes mod versions list is sorted from newest to oldest version. + return matchingMod.thunderstore_mod_string !== mod.versions[0].full_name; + } + return false; +} + +export { isThunderstoreModOutdated }; diff --git a/src-vue/src/views/ChangelogView.vue b/src-vue/src/views/ChangelogView.vue new file mode 100644 index 00000000..1c525a32 --- /dev/null +++ b/src-vue/src/views/ChangelogView.vue @@ -0,0 +1,10 @@ +<template> + <div class="fc-container"> + </div> +</template> + +<script lang="ts"> +</script> + +<style> +</style> diff --git a/src-vue/src/views/DeveloperView.vue b/src-vue/src/views/DeveloperView.vue new file mode 100644 index 00000000..3a187b18 --- /dev/null +++ b/src-vue/src/views/DeveloperView.vue @@ -0,0 +1,10 @@ +<template> + <div class="fc-container"> + </div> +</template> + +<script lang="ts"> +</script> + +<style scoped> +</style> diff --git a/src-vue/src/views/ModsView.vue b/src-vue/src/views/ModsView.vue new file mode 100644 index 00000000..2c55e401 --- /dev/null +++ b/src-vue/src/views/ModsView.vue @@ -0,0 +1,13 @@ +<template> + <div class="fc-container" style="display: flex"> + </div> +</template> + +<script lang="ts"> +import LocalModsView from "./mods/LocalModsView.vue"; +import ModsMenu from "../components/ModsMenu.vue"; + +</script> + +<style scoped> +</style> diff --git a/src-vue/src/views/PlayView.vue b/src-vue/src/views/PlayView.vue new file mode 100644 index 00000000..1f58c803 --- /dev/null +++ b/src-vue/src/views/PlayView.vue @@ -0,0 +1,10 @@ +<script lang="ts"> +</script> + +<template> + <div class="fc_launch__container"> + </div> +</template> + +<style scoped> +</style> diff --git a/src-vue/src/views/RepairView.vue b/src-vue/src/views/RepairView.vue new file mode 100644 index 00000000..3a187b18 --- /dev/null +++ b/src-vue/src/views/RepairView.vue @@ -0,0 +1,10 @@ +<template> + <div class="fc-container"> + </div> +</template> + +<script lang="ts"> +</script> + +<style scoped> +</style> diff --git a/src-vue/src/views/SettingsView.vue b/src-vue/src/views/SettingsView.vue new file mode 100644 index 00000000..3b0879d3 --- /dev/null +++ b/src-vue/src/views/SettingsView.vue @@ -0,0 +1,8 @@ +<template> +</template> + +<script lang="ts"> +</script> + +<style scoped> +</style> diff --git a/src-vue/src/views/mods/LocalModsView.vue b/src-vue/src/views/mods/LocalModsView.vue new file mode 100644 index 00000000..3b0879d3 --- /dev/null +++ b/src-vue/src/views/mods/LocalModsView.vue @@ -0,0 +1,8 @@ +<template> +</template> + +<script lang="ts"> +</script> + +<style scoped> +</style> diff --git a/src-vue/src/views/mods/ThunderstoreModsView.vue b/src-vue/src/views/mods/ThunderstoreModsView.vue new file mode 100644 index 00000000..b100b118 --- /dev/null +++ b/src-vue/src/views/mods/ThunderstoreModsView.vue @@ -0,0 +1,10 @@ +<template> + <div class="fc-container" style="padding: 0"> + </div> +</template> + +<script lang="ts"> +</script> + +<style scoped> +</style> |