diff --git a/src/ui/components/abstract/ScriptObject.ts b/src/ui/components/abstract/ScriptObject.ts index 29e07fd..f768db8 100644 --- a/src/ui/components/abstract/ScriptObject.ts +++ b/src/ui/components/abstract/ScriptObject.ts @@ -11,8 +11,8 @@ class ScriptObject extends FrameScriptObject { _name: string | null; - constructor(_dummy: unknown) { - super(_dummy); + constructor(..._args: unknown[]) { + super(..._args); this._name = null; } diff --git a/src/ui/components/abstract/ScriptRegion.ts b/src/ui/components/abstract/ScriptRegion.ts index bc9bdfa..d166538 100644 --- a/src/ui/components/abstract/ScriptRegion.ts +++ b/src/ui/components/abstract/ScriptRegion.ts @@ -18,8 +18,8 @@ class ScriptRegion extends multipleClasses(ScriptObject, LayoutFrame) { _parent: Frame | null; - constructor(_dummy: unknown) { - super(_dummy); + constructor(..._args: unknown[]) { + super(_args); this._parent = null; } diff --git a/src/ui/components/simple/Frame.ts b/src/ui/components/simple/Frame.ts index 83f0515..7838815 100644 --- a/src/ui/components/simple/Frame.ts +++ b/src/ui/components/simple/Frame.ts @@ -66,7 +66,7 @@ class Frame extends ScriptRegion { strataLink: LinkedListLink; constructor(parent: Frame | null) { - super(null); + super(); this.id = 0; this.flags = 0; @@ -189,7 +189,7 @@ class Frame extends ScriptRegion { } } - // TODO: Seems to be necessary with split getter/setters + inheritance + // Note: Seems to be necessary with split getter/setters + inheritance get parent() { return this._parent; } diff --git a/src/ui/components/simple/Region.ts b/src/ui/components/simple/Region.ts index b35977f..d78058a 100644 --- a/src/ui/components/simple/Region.ts +++ b/src/ui/components/simple/Region.ts @@ -5,7 +5,7 @@ import { LinkedListLink } from '../../../utils'; import Frame from './Frame'; -abstract class Region extends ScriptRegion { +class Region extends ScriptRegion { drawLayerType: DrawLayerType | null; shown: boolean; visible: boolean; @@ -17,7 +17,7 @@ abstract class Region extends ScriptRegion { regionLink: LinkedListLink; constructor(frame: Frame, drawLayerType: DrawLayerType, show: boolean) { - super(null); + super(); this.drawLayerType = null; this.shown = false; @@ -34,7 +34,9 @@ abstract class Region extends ScriptRegion { } } - abstract draw(_batch: RenderBatch): void; + draw(_batch: RenderBatch) { + throw new Error(`${this.constructor.name} must implement 'draw'`); + } onRegionChanged() { // TODO: Implementation diff --git a/src/ui/scripting/FrameScriptObject.ts b/src/ui/scripting/FrameScriptObject.ts index 439bcfd..49aca39 100644 --- a/src/ui/scripting/FrameScriptObject.ts +++ b/src/ui/scripting/FrameScriptObject.ts @@ -32,7 +32,7 @@ class FrameScriptObject { luaRef: lua_Ref | null; scripts: ScriptRegistry; - constructor(_dummy: unknown) { + constructor(..._args: unknown[]) { this.luaRef = null; this.scripts = new ScriptRegistry(); diff --git a/src/utils/inheritance.ts b/src/utils/inheritance.ts index 2d3876f..87e5f8e 100644 --- a/src/utils/inheritance.ts +++ b/src/utils/inheritance.ts @@ -16,9 +16,9 @@ const multipleClasses = < } const cls = class extends base { - constructor(..._args: any[]) { + constructor(...args: any[]) { // Create an instance of the base class - super(); + super(...args); // Construct temporary throw-away instance of other class and assign own properties // Warning: using `this` as a reference in other class' constructor will not work correctly