@kitten-science/kitten-scientists
Version:
Add-on for the wonderful incremental browser game: https://kittensgame.com/web/
217 lines • 5.55 kB
JavaScript
import { isNil } from "@oliversalzburg/js-utils/data/nil.js";
export class Setting {
enabled;
constructor(enabled = false) {
this.enabled = enabled;
}
load(setting) {
if (isNil(setting)) {
return;
}
this.enabled = setting.enabled ?? this.enabled;
}
serialize() {
return this;
}
}
export class SettingLimited extends Setting {
limited;
constructor(enabled = false, limited = false) {
super(enabled);
this.limited = limited;
}
load(setting) {
if (isNil(setting)) {
return;
}
super.load(setting);
this.limited = setting.limited ?? this.limited;
}
}
/**
* A setting that also includes a trigger value.
* Trigger values range from 0 to 1. They reflect a percentage.
*/
export class SettingTrigger extends Setting {
trigger;
constructor(enabled = false, trigger = -1) {
super(enabled);
this.trigger = trigger;
}
load(setting) {
if (isNil(setting)) {
return;
}
super.load(setting);
this.trigger = setting.trigger ?? this.trigger;
}
}
/**
* A setting that also includes an absolute value trigger.
* Trigger values range from 0 to Infinity, while -1 designates Infinity explicitly.
*/
export class SettingThreshold extends Setting {
trigger;
constructor(enabled = false, threshold = 1) {
super(enabled);
this.trigger = threshold;
}
load(setting) {
if (isNil(setting)) {
return;
}
super.load(setting);
this.trigger = setting.trigger ?? this.trigger;
}
}
export class SettingMax extends Setting {
max;
constructor(enabled = false, max = 0) {
super(enabled);
this.max = max;
}
load(setting) {
if (isNil(setting)) {
return;
}
super.load(setting);
this.max = setting.max ?? this.max;
}
}
export class SettingLimitedMax extends SettingLimited {
max;
constructor(enabled = false, limited = false, max = 0) {
super(enabled, limited);
this.max = max;
}
load(setting) {
if (isNil(setting)) {
return;
}
super.load(setting);
this.max = setting.max ?? this.max;
}
}
export class SettingLimitedMaxTrigger extends SettingLimitedMax {
trigger;
constructor(enabled = false, limited = false, max = 0, trigger = -1) {
super(enabled, limited, max);
this.trigger = trigger;
}
load(setting) {
if (isNil(setting)) {
return;
}
super.load(setting);
this.trigger = setting.trigger ?? this.trigger;
}
}
export class SettingLimitedTrigger extends SettingLimited {
trigger;
constructor(enabled = false, limited = false, trigger = -1) {
super(enabled, limited);
this.trigger = trigger;
}
load(setting) {
if (isNil(setting)) {
return;
}
super.load(setting);
this.trigger = setting.trigger ?? this.trigger;
}
}
export class SettingTriggerMax extends SettingTrigger {
max;
constructor(enabled = false, trigger = -1, max = 0) {
super(enabled, trigger);
this.max = max;
}
load(setting) {
if (isNil(setting)) {
return;
}
super.load(setting);
this.max = setting.max ?? this.max;
}
}
export class SettingThresholdMax extends SettingThreshold {
max;
constructor(enabled = false, trigger = 1, max = 0) {
super(enabled, trigger);
this.max = max;
}
load(setting) {
if (isNil(setting)) {
return;
}
super.load(setting);
this.max = setting.max ?? this.max;
}
}
export class SettingOptions {
#options;
selected;
get options() {
return this.#options;
}
constructor(selected, options = new Array()) {
// Make sure the provided selected value exists in options.
if (isNil(options.find(option => option.value === selected))) {
throw new Error("Provided selected value is not in provided options.");
}
this.selected = selected;
this.#options = options;
}
load(setting) {
if (isNil(setting)) {
return;
}
this.selected = setting.selected ?? this.selected;
}
}
export class SettingBuy extends Setting {
buy;
constructor(enabled = false, buy = -1) {
super(enabled);
this.buy = buy;
}
load(setting) {
if (isNil(setting)) {
return;
}
super.load(setting);
this.buy = setting.buy ?? this.buy;
}
}
export class SettingSell extends Setting {
sell;
constructor(enabled = false, sell = -1) {
super(enabled);
this.sell = sell;
}
load(setting) {
if (isNil(setting)) {
return;
}
super.load(setting);
this.sell = setting.sell ?? this.sell;
}
}
export class SettingBuySellThreshold extends SettingThreshold {
buy;
sell;
constructor(enabled = false, buy = 950.0, sell = 1000.0, trigger = 1) {
super(enabled, trigger);
this.buy = buy;
this.sell = sell;
}
load(setting) {
if (isNil(setting)) {
return;
}
super.load(setting);
this.buy = setting.buy ?? this.buy;
this.sell = setting.sell ?? this.sell;
}
}
//# sourceMappingURL=Settings.js.map