Skip to content
This repository has been archived by the owner on Oct 25, 2022. It is now read-only.

Commit

Permalink
feat: Integrate with KG save manager for loading
Browse files Browse the repository at this point in the history
  • Loading branch information
oliversalzburg committed Oct 16, 2022
1 parent 4888adb commit a37e16a
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 14 deletions.
13 changes: 1 addition & 12 deletions packages/userscript/source/Engine.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,18 +102,7 @@ export class Engine {
return language in this._i18nData;
}

load(settings: {
engine: EngineSettings;
bonfire: BonfireSettings;
religion: ReligionSettings;
science: ScienceSettings;
space: SpaceSettings;
time: TimeSettings;
timeControl: TimeControlSettings;
trade: TradeSettings;
village: VillageSettings;
workshop: WorkshopSettings;
}) {
stateLoad(settings: EngineState) {
this.settings.load(settings.engine);
this.bonfireManager.load(settings.bonfire);
this.religionManager.load(settings.religion);
Expand Down
25 changes: 23 additions & 2 deletions packages/userscript/source/UserScript.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import JQuery from "jquery";
import { Engine, SupportedLanguages } from "./Engine";
import { Engine, EngineState, SupportedLanguages } from "./Engine";

import { BonfireSettings } from "./options/BonfireSettings";
import { EngineSettings } from "./options/EngineSettings";
Expand Down Expand Up @@ -130,7 +130,7 @@ export class UserScript {
}

loadLegacyOptions(source: LegacyStorage) {
this.engine.load({
this.engine.stateLoad({
bonfire: BonfireSettings.fromLegacyOptions(source),
engine: EngineSettings.fromLegacyOptions(source),
religion: ReligionSettings.fromLegacyOptions(source),
Expand Down Expand Up @@ -190,6 +190,9 @@ export class UserScript {
getSettings() {
return this.engine.stateSerialize();
}
setSetting(settings: EngineState) {
this.engine.stateLoad(settings);
}

/**
* Experimental save manager for Kitten Game.
Expand All @@ -203,6 +206,24 @@ export class UserScript {
}

private _saveManager = {
load: (saveData: Record<string, unknown>) => {
if ("ks" in saveData === false) {
return;
}

const ksData = saveData.ks as { state?: Array<EngineState> };
if ("state" in ksData === false) {
return;
}

const state = ksData.state;
if (!Array.isArray(state)) {
return;
}

cwarn("EXPERIMENTAL: Loading Kitten Scientists setting from save data...");
this.engine.stateLoad(state[0]);
},
save: (saveData: Record<string, unknown>) => {
cwarn("EXPERIMENTAL: Injecting Kitten Scientists settings into save data...");
saveData.ks = { state: [this.getSettings()] };
Expand Down

0 comments on commit a37e16a

Please sign in to comment.