Reduce size of system data by shortening keys
parent
7a47c62535
commit
34d91edab1
|
@ -118,6 +118,14 @@ export interface DexAttrProps {
|
||||||
formIndex: integer;
|
formIndex: integer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const systemShortKeys = {
|
||||||
|
seenAttr: '$sa',
|
||||||
|
caughtAttr: '$ca',
|
||||||
|
seenCount: '$s' ,
|
||||||
|
caughtCount: '$c',
|
||||||
|
ivs: '$i'
|
||||||
|
};
|
||||||
|
|
||||||
export class GameData {
|
export class GameData {
|
||||||
private scene: BattleScene;
|
private scene: BattleScene;
|
||||||
|
|
||||||
|
@ -256,6 +264,15 @@ export class GameData {
|
||||||
}) as SystemSaveData;
|
}) as SystemSaveData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private convertSystemDataStr(dataStr: string, shorten: boolean = false): string {
|
||||||
|
const fromKeys = shorten ? Object.keys(systemShortKeys) : Object.values(systemShortKeys);
|
||||||
|
const toKeys = shorten ? Object.values(systemShortKeys) : Object.keys(systemShortKeys);
|
||||||
|
for (let k in fromKeys)
|
||||||
|
dataStr = dataStr.replace(new RegExp(`${fromKeys[k].replace('$', '\\$')}`, 'g'), toKeys[k]);
|
||||||
|
|
||||||
|
return dataStr;
|
||||||
|
}
|
||||||
|
|
||||||
public saveSetting(setting: Setting, valueIndex: integer): boolean {
|
public saveSetting(setting: Setting, valueIndex: integer): boolean {
|
||||||
let settings: object = {};
|
let settings: object = {};
|
||||||
if (localStorage.hasOwnProperty('settings'))
|
if (localStorage.hasOwnProperty('settings'))
|
||||||
|
@ -439,7 +456,12 @@ export class GameData {
|
||||||
|
|
||||||
public exportData(dataType: GameDataType): void {
|
public exportData(dataType: GameDataType): void {
|
||||||
const dataKey: string = getDataTypeKey(dataType);
|
const dataKey: string = getDataTypeKey(dataType);
|
||||||
const dataStr = atob(localStorage.getItem(dataKey));
|
let dataStr = atob(localStorage.getItem(dataKey));
|
||||||
|
switch (dataType) {
|
||||||
|
case GameDataType.SYSTEM:
|
||||||
|
dataStr = this.convertSystemDataStr(dataStr, true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
const encryptedData = AES.encrypt(dataStr, saveKey);
|
const encryptedData = AES.encrypt(dataStr, saveKey);
|
||||||
const blob = new Blob([ encryptedData.toString() ], {type: 'text/json'});
|
const blob = new Blob([ encryptedData.toString() ], {type: 'text/json'});
|
||||||
const link = document.createElement('a');
|
const link = document.createElement('a');
|
||||||
|
@ -467,11 +489,12 @@ export class GameData {
|
||||||
|
|
||||||
reader.onload = (_ => {
|
reader.onload = (_ => {
|
||||||
return e => {
|
return e => {
|
||||||
const dataStr = AES.decrypt(e.target.result.toString(), saveKey).toString(enc.Utf8);
|
let dataStr = AES.decrypt(e.target.result.toString(), saveKey).toString(enc.Utf8);
|
||||||
let valid = false;
|
let valid = false;
|
||||||
try {
|
try {
|
||||||
switch (dataType) {
|
switch (dataType) {
|
||||||
case GameDataType.SYSTEM:
|
case GameDataType.SYSTEM:
|
||||||
|
dataStr = this.convertSystemDataStr(dataStr);
|
||||||
const systemData = this.parseSystemData(dataStr);
|
const systemData = this.parseSystemData(dataStr);
|
||||||
valid = !!systemData.dexData && !!systemData.timestamp;
|
valid = !!systemData.dexData && !!systemData.timestamp;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue