23 lines
1.2 KiB
Markdown
23 lines
1.2 KiB
Markdown
# tx-teleport-example
|
||
|
||
Пример вынесенного кода по безопасной работе с транзакциями мира и телепортами.
|
||
|
||
## Что внутри
|
||
|
||
- `txflow/interfaces.go`: минимальные интерфейсы (`World`, `Tx`, `Entity`, `Handle`), чтобы код не зависел от конкретного движка.
|
||
- `txflow/adapter.go`: адаптер игрока с:
|
||
- `WithPlayerTx(...)` (предпочитает текущий `Tx`, fallback через `ExecWorld`),
|
||
- очередью телепортов (`queue + process`),
|
||
- безопасным разделением same-world и cross-world телепорта.
|
||
|
||
## Зачем
|
||
|
||
Ключевая цель: не блокировать world transaction loop повторным `ExecWorld` изнутри уже выполняющейся транзакции.
|
||
|
||
## Интеграция
|
||
|
||
1. Подключить свои реализации интерфейсов из проекта.
|
||
2. Создавать `txflow.Adapter` на игрока.
|
||
3. Все операции игрока (сообщения, инвентарь, телепорт) запускать через `WithPlayerTx` или `Teleport`.
|
||
|