From dd456743f83519eac7c1cfebe2b904f44b1253c0 Mon Sep 17 00:00:00 2001 From: cha0s Date: Sun, 14 Jul 2024 02:38:59 -0500 Subject: [PATCH] fix: dialogues and entities on ECS change --- app/ecs-components/interlocutor.js | 5 +++++ app/react-components/dom/entities.jsx | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/app/ecs-components/interlocutor.js b/app/ecs-components/interlocutor.js index f9587b0..881e6fa 100644 --- a/app/ecs-components/interlocutor.js +++ b/app/ecs-components/interlocutor.js @@ -16,6 +16,11 @@ export default class Interlocutor extends Component { return class InterlocutorInstance extends super.instanceFromSchema() { dialogues = {}; id = 0; + destroy() { + for (const key in this.dialogues) { + this.dialogues[key].onClose(); + } + } dialogue(specification) { Component.markChange(this.entity, 'dialogue', {[this.id++]: specification}); } diff --git a/app/react-components/dom/entities.jsx b/app/react-components/dom/entities.jsx index afa9a7e..003f1a3 100644 --- a/app/react-components/dom/entities.jsx +++ b/app/react-components/dom/entities.jsx @@ -1,5 +1,6 @@ import {useState} from 'react'; +import {usePacket} from '@/context/client.js'; import {useEcs, useEcsTick} from '@/context/ecs.js'; import {parseLetters} from '@/dialogue.js'; @@ -8,6 +9,9 @@ import Entity from './entity.jsx'; export default function Entities({camera, scale, setMonopolizers}) { const [ecs] = useEcs(); const [entities, setEntities] = useState({}); + usePacket('EcsChange', async () => { + setEntities({}); + }, [setEntities]); useEcsTick((payload) => { if (!ecs) { return;