1
0
mirror of https://github.com/sehugg/8bitworkshop.git synced 2024-06-20 08:29:30 +00:00

scripting: don't need $$reset (i think?)

This commit is contained in:
Steven Hugg 2021-08-22 14:46:57 -05:00
parent 8fc94aad25
commit 65a16db7b7
2 changed files with 11 additions and 21 deletions

View File

@ -25,7 +25,6 @@ export function $$loadData(data: {}) {
// object that can load state from backing store // object that can load state from backing store
export interface Loadable { export interface Loadable {
// called during script, from io.data.load() // called during script, from io.data.load()
$$reset() : void;
$$setstate?(newstate: {}) : void; $$setstate?(newstate: {}) : void;
// called after script, from io.data.save() // called after script, from io.data.save()
$$getstate() : {}; $$getstate() : {};
@ -39,9 +38,8 @@ export namespace data {
object.$$setstate(override); object.$$setstate(override);
} else if (override) { } else if (override) {
Object.assign(object, override); Object.assign(object, override);
} else if (object.$$reset) { } else if (object.$$getstate) {
object.$$reset(); save(object, key); // $$reset not needed
data.save(object, key);
} }
return object; return object;
} }
@ -155,9 +153,6 @@ export class InteractionRecord implements Loadable {
private $$callback private $$callback
) { ) {
} }
$$reset() {
this.$$setstate({interactid: ++$$seq})
}
$$setstate(newstate: {interactid: number}) { $$setstate(newstate: {interactid: number}) {
this.interactid = newstate.interactid; this.interactid = newstate.interactid;
this.interacttarget.$$interact = this; this.interacttarget.$$interact = this;
@ -193,9 +188,8 @@ export function interact(object: any, callback) : InteractionRecord {
// TODO: what if this isn't top level? // TODO: what if this isn't top level?
export class Mutable<T> implements Loadable { export class Mutable<T> implements Loadable {
value : T; value : T;
constructor(public readonly initial : T) { } constructor(public readonly initial : T) {
$$reset() { this.value = initial;
this.value = this.initial;
} }
$$setstate(newstate) { $$setstate(newstate) {
this.value = newstate.value; this.value = newstate.value;

View File

@ -13,18 +13,16 @@ export class ScriptUISliderType implements ScriptUIType {
readonly max: number, readonly max: number,
readonly step: number readonly step: number
) { ) {
this.value = min;
} }
} }
export class ScriptUISlider extends ScriptUISliderType implements io.Loadable { export class ScriptUISlider extends ScriptUISliderType implements io.Loadable {
initvalue: number; initvalue: number;
initial(value: number) { initial(value: number) {
this.initvalue = value; this.value = value;
return this; return this;
} }
$$reset() {
this.value = this.initvalue != null ? this.initvalue : this.min;
}
$$getstate() { $$getstate() {
return { value: this.value }; return { value: this.value };
} }
@ -39,23 +37,21 @@ export function slider(min: number, max: number, step?: number) {
export class ScriptUISelectType<T> implements ScriptUIType { export class ScriptUISelectType<T> implements ScriptUIType {
readonly uitype = 'select'; readonly uitype = 'select';
value: T; value: T;
index: number = -1; index: number;
constructor( constructor(
readonly options: T[] readonly options: T[]
) { ) {
this.value = null;
this.index = -1;
} }
} }
export class ScriptUISelect<T> extends ScriptUISelectType<T> implements io.Loadable { export class ScriptUISelect<T> extends ScriptUISelectType<T> implements io.Loadable {
initindex : number;
initial(index: number) { initial(index: number) {
this.initindex = index; this.index = index;
this.value = this.options[index];
return this; return this;
} }
$$reset() {
this.index = this.initindex >= 0 ? this.initindex : -1;
this.value = null;
}
$$getstate() { $$getstate() {
return { value: this.value, index: this.index }; return { value: this.value, index: this.index };
} }