From 3f30fa3eec9c2e2acf9a984ccefb9529a25e688a Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Tue, 7 Jul 2026 05:50:37 -0400 Subject: feat: add insert/remove room to context menu in admin web GUI to 'push' or 'pull' map rooms --- internal/admin/server.go | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'internal/admin/server.go') diff --git a/internal/admin/server.go b/internal/admin/server.go index 6ad20f5..17835db 100644 --- a/internal/admin/server.go +++ b/internal/admin/server.go @@ -20,6 +20,7 @@ import ( "net" "net/http" "path/filepath" + "os" "strconv" "strings" "time" @@ -120,6 +121,8 @@ func NewServer(cfg *config.Config, useTLS bool, accountStore *player.AccountStor apiMux.HandleFunc("/api/room-dirs/rename", s.handleRenameRoomDir) apiMux.HandleFunc("/api/room-dirs/create", s.handleCreateRoomDir) apiMux.HandleFunc("/api/rooms/link", s.handleRoomLink) + apiMux.HandleFunc("/api/rooms/insert", s.handleRoomInsert) + apiMux.HandleFunc("/api/rooms/remove", s.handleRoomRemove) apiMux.HandleFunc("/api/rooms/move", s.handleRoomMove) apiMux.HandleFunc("/api/rooms/rename", s.handleRoomRename) apiMux.HandleFunc("/api/rooms", s.handleRooms) @@ -619,6 +622,12 @@ func (s *AdminServer) rebuildAfterUndo(change *ChangeDesc) { if idStr := strings.TrimSuffix(name, ".yaml"); idStr != name { if id, err := strconv.Atoi(idStr); err == nil && id > 0 { s.world.ClearRoomState(id) + // If the room file is now gone (true after undo-of-create and + // redo-of-delete), drop any in-memory mob instances for it so + // they don't keep ticking against a room that no longer exists. + if _, statErr := os.Stat(p); os.IsNotExist(statErr) && s.mobStore != nil { + s.mobStore.RemoveMobsInRoom(id) + } } } } -- cgit v1.2.3