mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-08-21 06:49:35 +02:00
implement import/export settings
This commit is contained in:
parent
35cd615363
commit
9f04d7d423
@ -16,6 +16,8 @@
|
|||||||
"exportSlotSelect": "Wähle einen Slot zum Exportieren.",
|
"exportSlotSelect": "Wähle einen Slot zum Exportieren.",
|
||||||
"importRunHistory": "Laufhistorie importieren",
|
"importRunHistory": "Laufhistorie importieren",
|
||||||
"exportRunHistory": "Laufhistorie exportieren",
|
"exportRunHistory": "Laufhistorie exportieren",
|
||||||
|
"importSettings": "Einstellungen importieren",
|
||||||
|
"exportSettings": "Einstellungen exportieren",
|
||||||
"importData": "Daten importieren",
|
"importData": "Daten importieren",
|
||||||
"exportData": "Daten exportieren",
|
"exportData": "Daten exportieren",
|
||||||
"consentPreferences": "Einwilligungspräferenzen",
|
"consentPreferences": "Einwilligungspräferenzen",
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
"exportSlotSelect": "Select a slot to export from.",
|
"exportSlotSelect": "Select a slot to export from.",
|
||||||
"importRunHistory": "Import Run History",
|
"importRunHistory": "Import Run History",
|
||||||
"exportRunHistory": "Export Run History",
|
"exportRunHistory": "Export Run History",
|
||||||
|
"importSettings": "Import Settings",
|
||||||
|
"exportSettings": "Export Settings",
|
||||||
"importData": "Import Data",
|
"importData": "Import Data",
|
||||||
"exportData": "Export Data",
|
"exportData": "Export Data",
|
||||||
"consentPreferences": "Consent Preferences",
|
"consentPreferences": "Consent Preferences",
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
"exportSlotSelect": "Selecciona una ranura para exportar.",
|
"exportSlotSelect": "Selecciona una ranura para exportar.",
|
||||||
"importRunHistory":"Importar Historial de partida",
|
"importRunHistory":"Importar Historial de partida",
|
||||||
"exportRunHistory":"Exportar Historial de partida",
|
"exportRunHistory":"Exportar Historial de partida",
|
||||||
|
"importSettings": "Importar Configuraciones",
|
||||||
|
"exportSettings": "Exportar Configuraciones",
|
||||||
"importData": "Importar Datos",
|
"importData": "Importar Datos",
|
||||||
"exportData": "Exportar Datos",
|
"exportData": "Exportar Datos",
|
||||||
"consentPreferences": "Consentimiento de datos",
|
"consentPreferences": "Consentimiento de datos",
|
||||||
|
@ -18,6 +18,8 @@
|
|||||||
"exportData": "Exporter données",
|
"exportData": "Exporter données",
|
||||||
"importRunHistory":"Importer historique",
|
"importRunHistory":"Importer historique",
|
||||||
"exportRunHistory":"Exporter historique",
|
"exportRunHistory":"Exporter historique",
|
||||||
|
"importSettings": "Importer paramètres",
|
||||||
|
"exportSettings": "Exporter paramètres",
|
||||||
"consentPreferences": "Gérer les cookies",
|
"consentPreferences": "Gérer les cookies",
|
||||||
"linkDiscord": "Lier à Discord",
|
"linkDiscord": "Lier à Discord",
|
||||||
"unlinkDiscord": "Délier Discord",
|
"unlinkDiscord": "Délier Discord",
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
"exportSlotSelect": "Seleziona uno slot da cui esportare.",
|
"exportSlotSelect": "Seleziona uno slot da cui esportare.",
|
||||||
"importRunHistory":"Importa run precedenti",
|
"importRunHistory":"Importa run precedenti",
|
||||||
"exportRunHistory":"Esporta run precedenti",
|
"exportRunHistory":"Esporta run precedenti",
|
||||||
|
"importSettings": "Importa impostazioni",
|
||||||
|
"exportSettings": "Esporta impostazioni",
|
||||||
"importData": "Importa dati",
|
"importData": "Importa dati",
|
||||||
"exportData": "Esporta dati",
|
"exportData": "Esporta dati",
|
||||||
"consentPreferences": "Consenti preferenze",
|
"consentPreferences": "Consenti preferenze",
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
"exportSlotSelect": "エクスポート元の スロットを 選んでください",
|
"exportSlotSelect": "エクスポート元の スロットを 選んでください",
|
||||||
"importRunHistory": "ラン歴をインポート",
|
"importRunHistory": "ラン歴をインポート",
|
||||||
"exportRunHistory": "ラン歴をエクスポート",
|
"exportRunHistory": "ラン歴をエクスポート",
|
||||||
|
"importSettings": "Import Settings",
|
||||||
|
"exportSettings": "Export Settings",
|
||||||
"importData": "データをインポート",
|
"importData": "データをインポート",
|
||||||
"exportData": "データをエクスポート",
|
"exportData": "データをエクスポート",
|
||||||
"consentPreferences": "同意設定",
|
"consentPreferences": "同意設定",
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
"exportSlotSelect": "내보낼 슬롯을 골라주세요.",
|
"exportSlotSelect": "내보낼 슬롯을 골라주세요.",
|
||||||
"importRunHistory":"플레이 이력 불러오기",
|
"importRunHistory":"플레이 이력 불러오기",
|
||||||
"exportRunHistory":"플레이 이력 내보내기",
|
"exportRunHistory":"플레이 이력 내보내기",
|
||||||
|
"importSettings": "설정 불러오기",
|
||||||
|
"exportSettings": "설정 내보내기",
|
||||||
"importData": "데이터 불러오기",
|
"importData": "데이터 불러오기",
|
||||||
"exportData": "데이터 내보내기",
|
"exportData": "데이터 내보내기",
|
||||||
"consentPreferences": "쿠키 설정 동의",
|
"consentPreferences": "쿠키 설정 동의",
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
"exportSlotSelect": "Selecione um slot para exportar.",
|
"exportSlotSelect": "Selecione um slot para exportar.",
|
||||||
"importRunHistory": "Importar Histórico de Jogos",
|
"importRunHistory": "Importar Histórico de Jogos",
|
||||||
"exportRunHistory": "Exportar Histórico de Jogos",
|
"exportRunHistory": "Exportar Histórico de Jogos",
|
||||||
|
"importSettings": "Importar configurações",
|
||||||
|
"exportSettings": "Exportar configurações",
|
||||||
"importData": "Importar dados",
|
"importData": "Importar dados",
|
||||||
"exportData": "Exportar dados",
|
"exportData": "Exportar dados",
|
||||||
"consentPreferences": "Opções de Privacidade",
|
"consentPreferences": "Opções de Privacidade",
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
"exportSlotSelect": "选择要导出的存档位。",
|
"exportSlotSelect": "选择要导出的存档位。",
|
||||||
"importRunHistory":"导入历史记录",
|
"importRunHistory":"导入历史记录",
|
||||||
"exportRunHistory":"导出历史记录",
|
"exportRunHistory":"导出历史记录",
|
||||||
|
"importSettings": "导入设置",
|
||||||
|
"exportSettings": "导出设置",
|
||||||
"importData": "导入数据",
|
"importData": "导入数据",
|
||||||
"exportData": "导出数据",
|
"exportData": "导出数据",
|
||||||
"consentPreferences": "同意偏好",
|
"consentPreferences": "同意偏好",
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
"exportSlotSelect": "選擇要導出的存檔位。",
|
"exportSlotSelect": "選擇要導出的存檔位。",
|
||||||
"importRunHistory":"導入歷史記錄",
|
"importRunHistory":"導入歷史記錄",
|
||||||
"exportRunHistory":"導出歷史記錄",
|
"exportRunHistory":"導出歷史記錄",
|
||||||
|
"importSettings": "導入設置",
|
||||||
|
"exportSettings": "導出設置",
|
||||||
"importData": "導入數據",
|
"importData": "導入數據",
|
||||||
"exportData": "導出數據",
|
"exportData": "導出數據",
|
||||||
"consentPreferences": "同意偏好",
|
"consentPreferences": "同意偏好",
|
||||||
|
@ -13,7 +13,7 @@ import { GameModes, getGameMode } from "../game-mode";
|
|||||||
import { BattleType } from "../battle";
|
import { BattleType } from "../battle";
|
||||||
import TrainerData from "./trainer-data";
|
import TrainerData from "./trainer-data";
|
||||||
import { trainerConfigs } from "../data/trainer-config";
|
import { trainerConfigs } from "../data/trainer-config";
|
||||||
import { SettingKeys, resetSettings, setSetting } from "./settings/settings";
|
import { Setting, SettingKeys, resetSettings, setSetting, settingIndex } from "./settings/settings";
|
||||||
import { achvs } from "./achv";
|
import { achvs } from "./achv";
|
||||||
import EggData from "./egg-data";
|
import EggData from "./egg-data";
|
||||||
import { Egg } from "../data/egg";
|
import { Egg } from "../data/egg";
|
||||||
@ -63,16 +63,12 @@ export const defaultStarterSpecies: Species[] = [
|
|||||||
|
|
||||||
const saveKey = "x0i2O7WRiANTqPmZ"; // Temporary; secure encryption is not yet necessary
|
const saveKey = "x0i2O7WRiANTqPmZ"; // Temporary; secure encryption is not yet necessary
|
||||||
|
|
||||||
export function getDataTypeKey(dataType: GameDataType, slotId: integer = 0): string {
|
export function getDataTypeKey(dataType: GameDataType, slotId: integer = 0, username?: string): string {
|
||||||
switch (dataType) {
|
switch (dataType) {
|
||||||
case GameDataType.SYSTEM:
|
case GameDataType.SYSTEM:
|
||||||
return "data";
|
return `data_${username}`;
|
||||||
case GameDataType.SESSION:
|
case GameDataType.SESSION:
|
||||||
let ret = "sessionData";
|
return `sessionData${slotId || ""}_${username}`;
|
||||||
if (slotId) {
|
|
||||||
ret += slotId;
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
case GameDataType.SETTINGS:
|
case GameDataType.SETTINGS:
|
||||||
return "settings";
|
return "settings";
|
||||||
case GameDataType.TUTORIALS:
|
case GameDataType.TUTORIALS:
|
||||||
@ -80,7 +76,7 @@ export function getDataTypeKey(dataType: GameDataType, slotId: integer = 0): str
|
|||||||
case GameDataType.SEEN_DIALOGUES:
|
case GameDataType.SEEN_DIALOGUES:
|
||||||
return "seenDialogues";
|
return "seenDialogues";
|
||||||
case GameDataType.RUN_HISTORY:
|
case GameDataType.RUN_HISTORY:
|
||||||
return "runHistoryData";
|
return `runHistoryData_${username}`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1339,7 +1335,7 @@ export class GameData {
|
|||||||
|
|
||||||
public tryExportData(dataType: GameDataType, slotId: integer = 0): Promise<boolean> {
|
public tryExportData(dataType: GameDataType, slotId: integer = 0): Promise<boolean> {
|
||||||
return new Promise<boolean>(resolve => {
|
return new Promise<boolean>(resolve => {
|
||||||
const dataKey: string = `${getDataTypeKey(dataType, slotId)}_${loggedInUser?.username}`;
|
const dataKey: string = getDataTypeKey(dataType, slotId, loggedInUser?.username);
|
||||||
const handleData = (dataStr: string) => {
|
const handleData = (dataStr: string) => {
|
||||||
switch (dataType) {
|
switch (dataType) {
|
||||||
case GameDataType.SYSTEM:
|
case GameDataType.SYSTEM:
|
||||||
@ -1370,7 +1366,8 @@ export class GameData {
|
|||||||
} else {
|
} else {
|
||||||
const data = localStorage.getItem(dataKey);
|
const data = localStorage.getItem(dataKey);
|
||||||
if (data) {
|
if (data) {
|
||||||
handleData(decrypt(data, bypassLogin));
|
const decryptedData = (dataType === GameDataType.SETTINGS) ? data : decrypt(data, bypassLogin);
|
||||||
|
handleData(decryptedData);
|
||||||
}
|
}
|
||||||
resolve(!!data);
|
resolve(!!data);
|
||||||
}
|
}
|
||||||
@ -1378,7 +1375,7 @@ export class GameData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public importData(dataType: GameDataType, slotId: integer = 0): void {
|
public importData(dataType: GameDataType, slotId: integer = 0): void {
|
||||||
const dataKey = `${getDataTypeKey(dataType, slotId)}_${loggedInUser?.username}`;
|
const dataKey = getDataTypeKey(dataType, slotId, loggedInUser?.username);
|
||||||
|
|
||||||
let saveFile: any = document.getElementById("saveFile");
|
let saveFile: any = document.getElementById("saveFile");
|
||||||
if (saveFile) {
|
if (saveFile) {
|
||||||
@ -1421,6 +1418,12 @@ export class GameData {
|
|||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case GameDataType.SETTINGS:
|
case GameDataType.SETTINGS:
|
||||||
|
valid = Object.entries(JSON.parse(dataStr))
|
||||||
|
.every(([k, v]: [string, number]) => {
|
||||||
|
const index: number = settingIndex(k);
|
||||||
|
return index === -1 || Setting[index].options.length > v;
|
||||||
|
});
|
||||||
|
break;
|
||||||
case GameDataType.TUTORIALS:
|
case GameDataType.TUTORIALS:
|
||||||
valid = true;
|
valid = true;
|
||||||
break;
|
break;
|
||||||
@ -1438,7 +1441,8 @@ export class GameData {
|
|||||||
|
|
||||||
this.scene.ui.showText(`Your ${dataName} data will be overridden and the page will reload. Proceed?`, null, () => {
|
this.scene.ui.showText(`Your ${dataName} data will be overridden and the page will reload. Proceed?`, null, () => {
|
||||||
this.scene.ui.setOverlayMode(Mode.CONFIRM, () => {
|
this.scene.ui.setOverlayMode(Mode.CONFIRM, () => {
|
||||||
localStorage.setItem(dataKey, encrypt(dataStr, bypassLogin));
|
const encryptedData = (dataType === GameDataType.SETTINGS) ? dataStr : encrypt(dataStr, bypassLogin);
|
||||||
|
localStorage.setItem(dataKey, encryptedData);
|
||||||
|
|
||||||
if (!bypassLogin && dataType < GameDataType.SETTINGS) {
|
if (!bypassLogin && dataType < GameDataType.SETTINGS) {
|
||||||
updateUserInfo().then(success => {
|
updateUserInfo().then(success => {
|
||||||
|
@ -244,6 +244,22 @@ export default class MenuUiHandler extends MessageUiHandler {
|
|||||||
},
|
},
|
||||||
keepOpen: true
|
keepOpen: true
|
||||||
});
|
});
|
||||||
|
manageDataOptions.push({
|
||||||
|
label: i18next.t("menuUiHandler:importSettings"),
|
||||||
|
handler: () => {
|
||||||
|
this.scene.gameData.importData(GameDataType.SETTINGS);
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
keepOpen: true
|
||||||
|
});
|
||||||
|
manageDataOptions.push({
|
||||||
|
label: i18next.t("menuUiHandler:exportSettings"),
|
||||||
|
handler: () => {
|
||||||
|
this.scene.gameData.tryExportData(GameDataType.SETTINGS);
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
keepOpen: true
|
||||||
|
});
|
||||||
if (Utils.isLocal || Utils.isBeta) {
|
if (Utils.isLocal || Utils.isBeta) {
|
||||||
manageDataOptions.push({
|
manageDataOptions.push({
|
||||||
label: i18next.t("menuUiHandler:importData"),
|
label: i18next.t("menuUiHandler:importData"),
|
||||||
|
Loading…
Reference in New Issue
Block a user