feat: Enhance turtle management by broadcasting removal notifications and cleaning up stale turtles
This commit is contained in:
@@ -49,11 +49,21 @@ export const useTurtleStore = create((set, get) => ({
|
||||
if (data.turtle.surroundings && data.turtle.position && data.turtle.facing !== undefined) {
|
||||
get().updateBlocksFromSurroundings(data.turtle);
|
||||
}
|
||||
} else if (data.type === 'turtle_disconnected') {
|
||||
} else if (data.type === 'turtle_removed' || data.type === 'turtle_disconnected') {
|
||||
console.log(`🔌 Turtle ${data.turtleID} removed`);
|
||||
set(state => {
|
||||
const newTurtles = { ...state.turtles };
|
||||
delete newTurtles[data.turtleID];
|
||||
return { turtles: newTurtles };
|
||||
|
||||
// If the removed turtle was selected, deselect it
|
||||
const newSelectedId = state.selectedTurtleId === data.turtleID
|
||||
? null
|
||||
: state.selectedTurtleId;
|
||||
|
||||
return {
|
||||
turtles: newTurtles,
|
||||
selectedTurtleId: newSelectedId
|
||||
};
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
|
||||
Reference in New Issue
Block a user