export default class Item { constructor() { this.id = "item"; this.name = "An item"; this.description = "You see nothing special about this item"; this.usable = true; this.takeable = true; this.useCallback = null; this.takeCallback = null; this.context = null; } async onUse() { if (this.useCallback) return this.useCallback(this.context); } async onTake() { if (this.takeCallback) return this.takeCallback(); } addUseCallback(callback) { this.useCallback = callback.bind(this); } addTakeCallback(callback) { this.takeCallback = callback.bind(this); } }