mirror of
https://github.com/DaanVandenBosch/phantasmal-world.git
synced 2025-04-08 01:01:36 +08:00
40 lines
1.3 KiB
TypeScript
40 lines
1.3 KiB
TypeScript
import { EntityListView } from "./EntityListView";
|
|
import {
|
|
object_data,
|
|
OBJECT_TYPES,
|
|
ObjectType,
|
|
} from "../../core/data_formats/parsing/quest/object_types";
|
|
import { quest_editor_store } from "../stores/QuestEditorStore";
|
|
import { Episode } from "../../core/data_formats/parsing/quest/Episode";
|
|
|
|
export class ObjectListView extends EntityListView<ObjectType> {
|
|
constructor() {
|
|
super("quest_editor_ObjectListView");
|
|
|
|
this.disposables(
|
|
quest_editor_store.current_quest.observe(this.filter_objects),
|
|
quest_editor_store.current_area.observe(this.filter_objects),
|
|
);
|
|
|
|
this.filter_objects();
|
|
this.finalize_construction(ObjectListView.prototype);
|
|
}
|
|
|
|
private filter_objects = (): void => {
|
|
const quest = quest_editor_store.current_quest.val;
|
|
const area = quest_editor_store.current_area.val;
|
|
|
|
const episode = quest ? quest.episode : Episode.I;
|
|
const area_id = area ? area.id : 0;
|
|
|
|
this.entities.val = OBJECT_TYPES.filter(object => {
|
|
const data = object_data(object);
|
|
|
|
if (data.area_ids == undefined) return true;
|
|
|
|
const area_ids = data.area_ids[episode];
|
|
return area_ids && area_ids.includes(area_id);
|
|
});
|
|
};
|
|
}
|