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

Commit

Permalink
fix(ui): Time skip max button missing
Browse files Browse the repository at this point in the history
Resolves #122
  • Loading branch information
oliversalzburg committed Oct 12, 2022
1 parent dd69472 commit 447e3ea
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 34 deletions.
5 changes: 1 addition & 4 deletions packages/userscript/source/TimeControlManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -375,10 +375,7 @@ export class TimeControlManager {
const cyclesPerEra = this._host.gamePage.calendar.cyclesPerEra;
const factor = this._host.gamePage.challenges.getChallenge("1000Years").researched ? 5 : 10;
// How many times/years we can skip before we reach our max heat.
let canSkip = Math.min(
Math.floor((heatMax - heatNow) / factor),
this.settings.timeSkip.maximum
);
let canSkip = Math.min(Math.floor((heatMax - heatNow) / factor), this.settings.timeSkip.max);
// The amount of skips to perform.
let willSkip = 0;
// If the cycle has more years remaining than we can even skip, skip all of them.
Expand Down
28 changes: 21 additions & 7 deletions packages/userscript/source/options/Settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,20 @@ export class SettingLimited extends Setting {
}
}

export class SettingTrigger extends Setting {
trigger: number;

constructor(enabled = false, trigger = 1) {
super(enabled);
this.trigger = trigger;
}

load(setting: SettingTrigger) {
super.load(setting);
this.trigger = setting.trigger;
}
}

export class SettingMax extends Setting {
max: number;

Expand Down Expand Up @@ -68,16 +82,16 @@ export class SettingLimitedMax extends SettingLimited implements SettingMax {
}
}

export class SettingTrigger extends Setting {
trigger: number;
export class SettingTriggerMax extends SettingTrigger implements SettingMax {
max: number;

constructor(enabled = false, trigger = 1) {
super(enabled);
this.trigger = trigger;
constructor(enabled = false, trigger = 1, max = -1) {
super(enabled, trigger);
this.max = max;
}

load(setting: SettingTrigger) {
load(setting: SettingTriggerMax) {
super.load(setting);
this.trigger = setting.trigger;
this.max = setting.max;
}
}
2 changes: 1 addition & 1 deletion packages/userscript/source/options/SettingsStorage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ type SetMaxBuildingItem = `set-${AllItems}-max`;
type SetMaxEmbassyItem = `set-build-${Race}-max`;
type SetMaxJobItem = `set-${Job}-max`;
type SetMaxResourceItem = `set-${Resource}-max`;
type SetMaxTimeSkip = `set-timeSkip-maximum`;
type SetMaxTimeSkip = `set-timeSkip-max`;
type SetMinResetBuildingItem = `set-reset-build-${Exclude<BonfireItem, "unicornPasture">}-min`;
type SetMinResetFaithItem = `set-reset-faith-${FaithItem | UnicornItem}-min`;
type SetMinResetSpaceItem = `set-reset-space-${SpaceBuildings}-min`;
Expand Down
8 changes: 4 additions & 4 deletions packages/userscript/source/options/TimeSkipSettings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { LegacyStorage } from "./SettingsStorage";
import { CycleIndices } from "./TimeControlSettings";

export class TimeSkipSettings extends SettingTrigger {
maximum = 50;
max = 50;

spring = true;
summer = false;
Expand All @@ -27,7 +27,7 @@ export class TimeSkipSettings extends SettingTrigger {

load(settings: TimeSkipSettings) {
super.load(settings);
this.maximum = settings.maximum;
this.max = settings.max;

this.autumn = settings.autumn;
this.spring = settings.spring;
Expand All @@ -42,7 +42,7 @@ export class TimeSkipSettings extends SettingTrigger {
static toLegacyOptions(settings: TimeSkipSettings, subject: LegacyStorage) {
subject.items["toggle-timeSkip"] = settings.enabled;
subject.items["set-timeSkip-trigger"] = settings.trigger;
subject.items["set-timeSkip-maximum"] = settings.maximum;
subject.items["set-timeSkip-max"] = settings.max;
subject.items["toggle-timeSkip-autumn"] = settings.autumn;
subject.items["toggle-timeSkip-spring"] = settings.spring;
subject.items["toggle-timeSkip-summer"] = settings.summer;
Expand All @@ -59,7 +59,7 @@ export class TimeSkipSettings extends SettingTrigger {
options.enabled = subject.items["toggle-timeSkip"] ?? options.enabled;

options.trigger = subject.items["set-timeSkip-trigger"] ?? options.trigger;
options.maximum = subject.items["set-timeSkip-maximum"] ?? options.maximum;
options.max = subject.items["set-timeSkip-max"] ?? options.max;
options.autumn = subject.items["toggle-timeSkip-autumn"] ?? options.autumn;
options.spring = subject.items["toggle-timeSkip-spring"] ?? options.spring;
options.summer = subject.items["toggle-timeSkip-summer"] ?? options.summer;
Expand Down
24 changes: 6 additions & 18 deletions packages/userscript/source/ui/TimeSkipSettingsUi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,44 +2,32 @@ import { TimeSkipSettings } from "../options/TimeSkipSettings";
import { ucfirst } from "../tools/Format";
import { UserScript } from "../UserScript";
import { CyclesList } from "./components/CyclesList";
import { MaxButton } from "./components/MaxButton";
import { Panel } from "./components/Panel";
import { SeasonsList } from "./components/SeasonsList";
import { SettingListItem } from "./components/SettingListItem";
import { SettingsPanel } from "./components/SettingsPanel";

export class TimeSkipSettingsUi extends SettingsPanel<TimeSkipSettings> {
private readonly _items: Array<SettingListItem>;
private readonly _maximum: SettingListItem;
private readonly _maximum: MaxButton;
private readonly _cycles: Panel<CyclesList>;
private readonly _seasons: Panel<SeasonsList>;

constructor(host: UserScript, settings: TimeSkipSettings) {
super(host, host.engine.i18n("option.time.skip"), settings);
const label = host.engine.i18n("option.time.skip");
super(host, label, settings);

this._list.addEventListener("enableAll", () => {
this._items.forEach(item => (item.settings.enabled = true));
this.refreshUi();
});
this._list.addEventListener("disableAll", () => {
this._items.forEach(item => (item.settings.enabled = false));
this.refreshUi();
});
this._list.addEventListener("reset", () => {
this.settings.load(new TimeSkipSettings());
this.refreshUi();
});

this._maximum = new SettingListItem(
this._host,
this._host.engine.i18n("ui.maximum"),
this.settings,
{
onCheck: () =>
this._host.engine.imessage("status.auto.enable", [this._host.engine.i18n("ui.maximum")]),
onUnCheck: () =>
this._host.engine.imessage("status.auto.disable", [this._host.engine.i18n("ui.maximum")]),
}
);
this._maximum = new MaxButton(this._host, label, this.settings);
this._cycles = new Panel(
this._host,
ucfirst(this._host.engine.i18n("ui.cycles")),
Expand All @@ -53,7 +41,7 @@ export class TimeSkipSettingsUi extends SettingsPanel<TimeSkipSettings> {
"M15.3 28.3q-.85 0-1.425-.575-.575-.575-.575-1.425 0-.85.575-1.425.575-.575 1.425-.575.85 0 1.425.575.575.575.575 1.425 0 .85-.575 1.425-.575.575-1.425.575Zm8.85 0q-.85 0-1.425-.575-.575-.575-.575-1.425 0-.85.575-1.425.575-.575 1.425-.575.85 0 1.425.575.575.575.575 1.425 0 .85-.575 1.425-.575.575-1.425.575Zm8.5 0q-.85 0-1.425-.575-.575-.575-.575-1.425 0-.85.575-1.425.575-.575 1.425-.575.85 0 1.425.575.575.575.575 1.425 0 .85-.575 1.425-.575.575-1.425.575ZM9 44q-1.2 0-2.1-.9Q6 42.2 6 41V10q0-1.2.9-2.1Q7.8 7 9 7h3.25V4h3.25v3h17V4h3.25v3H39q1.2 0 2.1.9.9.9.9 2.1v31q0 1.2-.9 2.1-.9.9-2.1.9Zm0-3h30V19.5H9V41Zm0-24.5h30V10H9Zm0 0V10v6.5Z"
);

this._items = [this._maximum];
this.element.append(this._maximum.element);

this.addChildren([this._maximum, this._cycles, this._seasons]);
}
Expand Down

0 comments on commit 447e3ea

Please sign in to comment.