Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Описание
Переносит код обработки взрыва в subsystem, по примеру https://github.com/tgstation/tgstation (не порт).
Так же сделаны микро оптимизации имеющегося кода обработки взрыва.
Взрывы обрабатываются согласно приоритету. Приоритетом является количество обрабатываемых турфов. Чем меньше взрыв, тем приоритетнее он обработается(реализовано на очереди с приоритетами на основе бинарной кучи)
Обработка турфов в рамках одного происходит последовательно(на основе очереди на связных списках).
Так же с https://github.com/tgstation/tgstation был перенесен более оптимальный прок для отбора обрабатываемых турфов.
Причина создания ПР / Почему это хорошо для игры
Исполнять такую ресурсозатратную операцию как взрыв не в сабсистеме чревато проблемами. В целом перенос в сабсистему сделал обработку плавнее и стабильнее.
Тесты
Запустил локалку, вызвал дропбомб 255. Во время обработки взрыва запустил несколько ракет с малыми взрывами. Все обработалось корректно(насколько это возможно при полном разрушении станции). Понадобится тестмердж, чтобы убедиться в отсутствии критических багов.