2024-05-05 15:30:00 +01:00
|
|
|
import BattleScene from "../battle-scene";
|
2024-04-01 02:14:35 +01:00
|
|
|
import { TextStyle, getTextColor } from "./text";
|
2024-05-23 16:03:10 +01:00
|
|
|
import { Mode } from "./ui";
|
2024-05-05 15:30:00 +01:00
|
|
|
import {Button} from "../enums/buttons";
|
2023-03-28 19:54:52 +01:00
|
|
|
|
2024-06-08 06:07:23 +01:00
|
|
|
/**
|
|
|
|
* A basic abstract class to act as a holder and processor for UI elements.
|
|
|
|
*/
|
2023-03-28 19:54:52 +01:00
|
|
|
export default abstract class UiHandler {
|
|
|
|
protected scene: BattleScene;
|
|
|
|
protected mode: integer;
|
|
|
|
protected cursor: integer = 0;
|
2023-03-29 05:31:25 +01:00
|
|
|
public active: boolean = false;
|
2023-03-28 19:54:52 +01:00
|
|
|
|
2024-06-08 06:07:23 +01:00
|
|
|
/**
|
|
|
|
* @param {BattleScene} scene The same scene as everything else.
|
|
|
|
* @param {Mode} mode The mode of the UI element. These should be unique.
|
|
|
|
*/
|
2023-03-28 19:54:52 +01:00
|
|
|
constructor(scene: BattleScene, mode: Mode) {
|
|
|
|
this.scene = scene;
|
|
|
|
this.mode = mode;
|
|
|
|
}
|
|
|
|
|
|
|
|
abstract setup(): void;
|
|
|
|
|
2023-12-30 23:41:25 +00:00
|
|
|
show(_args: any[]): boolean {
|
2023-03-28 19:54:52 +01:00
|
|
|
this.active = true;
|
2023-12-30 23:41:25 +00:00
|
|
|
|
|
|
|
return true;
|
2023-03-28 19:54:52 +01:00
|
|
|
}
|
|
|
|
|
2023-11-12 05:31:40 +00:00
|
|
|
abstract processInput(button: Button): boolean;
|
2023-03-28 19:54:52 +01:00
|
|
|
|
|
|
|
getUi() {
|
|
|
|
return this.scene.ui;
|
|
|
|
}
|
|
|
|
|
2024-04-01 02:14:35 +01:00
|
|
|
getTextColor(style: TextStyle, shadow: boolean = false): string {
|
|
|
|
return getTextColor(style, shadow, this.scene.uiTheme);
|
|
|
|
}
|
|
|
|
|
2023-03-31 04:02:35 +01:00
|
|
|
getCursor(): integer {
|
|
|
|
return this.cursor;
|
|
|
|
}
|
|
|
|
|
2023-03-28 19:54:52 +01:00
|
|
|
setCursor(cursor: integer): boolean {
|
|
|
|
const changed = this.cursor !== cursor;
|
2024-05-23 16:03:10 +01:00
|
|
|
if (changed) {
|
2023-03-28 19:54:52 +01:00
|
|
|
this.cursor = cursor;
|
2024-05-23 16:03:10 +01:00
|
|
|
}
|
2023-03-28 19:54:52 +01:00
|
|
|
|
|
|
|
return changed;
|
|
|
|
}
|
|
|
|
|
|
|
|
clear() {
|
|
|
|
this.active = false;
|
|
|
|
}
|
2024-05-23 16:03:10 +01:00
|
|
|
}
|