Skip to content

refactor: ObjDecayManager как composition в WorldObjects#3103

Merged
bylins merged 1 commit intomasterfrom
refactor/decay-manager-composition
Apr 5, 2026
Merged

refactor: ObjDecayManager как composition в WorldObjects#3103
bylins merged 1 commit intomasterfrom
refactor/decay-manager-composition

Conversation

@kvirund
Copy link
Copy Markdown
Collaborator

@kvirund kvirund commented Apr 5, 2026

Summary

ObjDecayManager перенесён из глобальной переменной в member WorldObjects. Доступ через world_objects.decay_manager().

Мотивация

Раньше WorldObjects и ObjDecayManager были независимыми реестрами. Удаление объекта требовало аккуратного вызова remove() на обоих — забытый вызов → dangling pointer в decay queue.

Что изменилось

  • WorldObjects владеет ObjDecayManager через composition
  • WorldObjects::remove() автоматически вызывает m_decay_manager.remove(obj) — гарантия cleanup
  • Убран глобальный extern ObjDecayManager obj_decay_manager
  • Убран явный obj_decay_manager.remove() из ExtractObjFromWorld (теперь redundant)
  • Все call sites: obj_decay_manager.xxx()world_objects.decay_manager().xxx()

Файлы (10)

  • world_objects.h/cpp — новый member + автоматический cleanup в remove()
  • handler.cpp, obj_save.cpp, do_get.cpp, obj_data.cpp, game_limits.cpp — замена вызовов
  • obj_decay_manager.h/cpp — убран extern
  • tests/obj_decay_manager.cpp — обновлены вызовы

Test plan

  • 352 теста проходят
  • Кодировка всех файлов корректна (pre-commit hook)
  • grep -r "obj_decay_manager\." src/ — только include файла, нет прямых вызовов

🤖 Generated with Claude Code

ObjDecayManager is now owned by WorldObjects instead of being a
standalone global. Access via world_objects.decay_manager().

WorldObjects::remove() automatically calls decay_manager().remove(),
guaranteeing cleanup and preventing dangling pointers in the decay
queue when objects are removed from the world.

The explicit obj_decay_manager.remove() call in ExtractObjFromWorld
is removed as it's now redundant.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@bylins bylins merged commit 1e03de4 into master Apr 5, 2026
20 checks passed
@bylins bylins deleted the refactor/decay-manager-composition branch April 5, 2026 19:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants