Checkpoint current interactive fiction state
This commit is contained in:
@@ -32,6 +32,8 @@ class PersistenceManagerModule extends BaseModule {
|
||||
tts: {
|
||||
enabled: false,
|
||||
preferred_handler: 'none',
|
||||
speed: 1.0,
|
||||
language: 'en-us',
|
||||
voice: '',
|
||||
'elevenlabs-tts_api_key': '',
|
||||
'elevenlabs-tts_api_url': 'https://api.elevenlabs.io/v1',
|
||||
@@ -260,6 +262,11 @@ class PersistenceManagerModule extends BaseModule {
|
||||
if (!this.preferences[category]) {
|
||||
this.preferences[category] = {};
|
||||
}
|
||||
|
||||
if (Object.prototype.hasOwnProperty.call(this.preferences[category], setting) &&
|
||||
Object.is(this.preferences[category][setting], value)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Store value
|
||||
this.preferences[category][setting] = value;
|
||||
@@ -612,7 +619,17 @@ class PersistenceManagerModule extends BaseModule {
|
||||
if (element.dataset.prefTransform) {
|
||||
try {
|
||||
// Check if it's a range transformer in format 'range:min,max'
|
||||
if (element.dataset.prefTransform.startsWith('range:')) {
|
||||
if (element.dataset.prefTransform === 'centered-speed') {
|
||||
transformer = {
|
||||
toElement: (value) => Math.round(((Number(value) || 1) * 50) + 50),
|
||||
toPreference: (value) => Math.max(0.5, Math.min(2.0, (parseInt(value, 10) - 50) / 50))
|
||||
};
|
||||
} else if (element.dataset.prefTransform === 'multiplier-percent') {
|
||||
transformer = {
|
||||
toElement: (value) => Math.round((Number(value) || 1) * 100),
|
||||
toPreference: (value) => Math.max(0.25, Math.min(4.0, parseInt(value, 10) / 100))
|
||||
};
|
||||
} else if (element.dataset.prefTransform.startsWith('range:')) {
|
||||
const rangeValues = element.dataset.prefTransform.substring(6).split(',');
|
||||
if (rangeValues.length === 2) {
|
||||
const min = parseFloat(rangeValues[0]);
|
||||
|
||||
Reference in New Issue
Block a user