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.",
|
||||
"importRunHistory": "Laufhistorie importieren",
|
||||
"exportRunHistory": "Laufhistorie exportieren",
|
||||
"importSettings": "Einstellungen importieren",
|
||||
"exportSettings": "Einstellungen exportieren",
|
||||
"importData": "Daten importieren",
|
||||
"exportData": "Daten exportieren",
|
||||
"consentPreferences": "Einwilligungspräferenzen",
|
||||
|
@ -16,6 +16,8 @@
|
||||
"exportSlotSelect": "Select a slot to export from.",
|
||||
"importRunHistory": "Import Run History",
|
||||
"exportRunHistory": "Export Run History",
|
||||
"importSettings": "Import Settings",
|
||||
"exportSettings": "Export Settings",
|
||||
"importData": "Import Data",
|
||||
"exportData": "Export Data",
|
||||
"consentPreferences": "Consent Preferences",
|
||||
|
@ -16,6 +16,8 @@
|
||||
"exportSlotSelect": "Selecciona una ranura para exportar.",
|
||||
"importRunHistory":"Importar Historial de partida",
|
||||
"exportRunHistory":"Exportar Historial de partida",
|
||||
"importSettings": "Importar Configuraciones",
|
||||
"exportSettings": "Exportar Configuraciones",
|
||||
"importData": "Importar Datos",
|
||||
"exportData": "Exportar Datos",
|
||||
"consentPreferences": "Consentimiento de datos",
|
||||
|
@ -18,6 +18,8 @@
|
||||
"exportData": "Exporter données",
|
||||
"importRunHistory":"Importer historique",
|
||||
"exportRunHistory":"Exporter historique",
|
||||
"importSettings": "Importer paramètres",
|
||||
"exportSettings": "Exporter paramètres",
|
||||
"consentPreferences": "Gérer les cookies",
|
||||
"linkDiscord": "Lier à Discord",
|
||||
"unlinkDiscord": "Délier Discord",
|
||||
|
@ -16,6 +16,8 @@
|
||||
"exportSlotSelect": "Seleziona uno slot da cui esportare.",
|
||||
"importRunHistory":"Importa run precedenti",
|
||||
"exportRunHistory":"Esporta run precedenti",
|
||||
"importSettings": "Importa impostazioni",
|
||||
"exportSettings": "Esporta impostazioni",
|
||||
"importData": "Importa dati",
|
||||
"exportData": "Esporta dati",
|
||||
"consentPreferences": "Consenti preferenze",
|
||||
|
@ -16,6 +16,8 @@
|
||||
"exportSlotSelect": "エクスポート元の スロットを 選んでください",
|
||||
"importRunHistory": "ラン歴をインポート",
|
||||
"exportRunHistory": "ラン歴をエクスポート",
|
||||
"importSettings": "Import Settings",
|
||||
"exportSettings": "Export Settings",
|
||||
"importData": "データをインポート",
|
||||
"exportData": "データをエクスポート",
|
||||
"consentPreferences": "同意設定",
|
||||
|
@ -16,6 +16,8 @@
|
||||
"exportSlotSelect": "내보낼 슬롯을 골라주세요.",
|
||||
"importRunHistory":"플레이 이력 불러오기",
|
||||
"exportRunHistory":"플레이 이력 내보내기",
|
||||
"importSettings": "설정 불러오기",
|
||||
"exportSettings": "설정 내보내기",
|
||||
"importData": "데이터 불러오기",
|
||||
"exportData": "데이터 내보내기",
|
||||
"consentPreferences": "쿠키 설정 동의",
|
||||
|
@ -16,6 +16,8 @@
|
||||
"exportSlotSelect": "Selecione um slot para exportar.",
|
||||
"importRunHistory": "Importar Histórico de Jogos",
|
||||
"exportRunHistory": "Exportar Histórico de Jogos",
|
||||
"importSettings": "Importar configurações",
|
||||
"exportSettings": "Exportar configurações",
|
||||
"importData": "Importar dados",
|
||||
"exportData": "Exportar dados",
|
||||
"consentPreferences": "Opções de Privacidade",
|
||||
|
@ -16,6 +16,8 @@
|
||||
"exportSlotSelect": "选择要导出的存档位。",
|
||||
"importRunHistory":"导入历史记录",
|
||||
"exportRunHistory":"导出历史记录",
|
||||
"importSettings": "导入设置",
|
||||
"exportSettings": "导出设置",
|
||||
"importData": "导入数据",
|
||||
"exportData": "导出数据",
|
||||
"consentPreferences": "同意偏好",
|
||||
|
@ -16,6 +16,8 @@
|
||||
"exportSlotSelect": "選擇要導出的存檔位。",
|
||||
"importRunHistory":"導入歷史記錄",
|
||||
"exportRunHistory":"導出歷史記錄",
|
||||
"importSettings": "導入設置",
|
||||
"exportSettings": "導出設置",
|
||||
"importData": "導入數據",
|
||||
"exportData": "導出數據",
|
||||
"consentPreferences": "同意偏好",
|
||||
|
@ -13,7 +13,7 @@ import { GameModes, getGameMode } from "../game-mode";
|
||||
import { BattleType } from "../battle";
|
||||
import TrainerData from "./trainer-data";
|
||||
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 EggData from "./egg-data";
|
||||
import { Egg } from "../data/egg";
|
||||
@ -63,16 +63,12 @@ export const defaultStarterSpecies: Species[] = [
|
||||
|
||||
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) {
|
||||
case GameDataType.SYSTEM:
|
||||
return "data";
|
||||
return `data_${username}`;
|
||||
case GameDataType.SESSION:
|
||||
let ret = "sessionData";
|
||||
if (slotId) {
|
||||
ret += slotId;
|
||||
}
|
||||
return ret;
|
||||
return `sessionData${slotId || ""}_${username}`;
|
||||
case GameDataType.SETTINGS:
|
||||
return "settings";
|
||||
case GameDataType.TUTORIALS:
|
||||
@ -80,7 +76,7 @@ export function getDataTypeKey(dataType: GameDataType, slotId: integer = 0): str
|
||||
case GameDataType.SEEN_DIALOGUES:
|
||||
return "seenDialogues";
|
||||
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> {
|
||||
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) => {
|
||||
switch (dataType) {
|
||||
case GameDataType.SYSTEM:
|
||||
@ -1370,7 +1366,8 @@ export class GameData {
|
||||
} else {
|
||||
const data = localStorage.getItem(dataKey);
|
||||
if (data) {
|
||||
handleData(decrypt(data, bypassLogin));
|
||||
const decryptedData = (dataType === GameDataType.SETTINGS) ? data : decrypt(data, bypassLogin);
|
||||
handleData(decryptedData);
|
||||
}
|
||||
resolve(!!data);
|
||||
}
|
||||
@ -1378,7 +1375,7 @@ export class GameData {
|
||||
}
|
||||
|
||||
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");
|
||||
if (saveFile) {
|
||||
@ -1421,6 +1418,12 @@ export class GameData {
|
||||
});
|
||||
break;
|
||||
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:
|
||||
valid = true;
|
||||
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.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) {
|
||||
updateUserInfo().then(success => {
|
||||
|
@ -244,6 +244,22 @@ export default class MenuUiHandler extends MessageUiHandler {
|
||||
},
|
||||
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) {
|
||||
manageDataOptions.push({
|
||||
label: i18next.t("menuUiHandler:importData"),
|
||||
|
Loading…
Reference in New Issue
Block a user