refactor(interaction): add selection interaction owner
Introduce a tested controller for selection mutations, target-mode interception, outbound ordering, Use/PickUp lifetime, and live-incarnation cleanup, plus narrow movement and WorldSession transport adapters.
This commit is contained in:
parent
e74f2ca99a
commit
fa8d5232cc
5 changed files with 754 additions and 1 deletions
|
|
@ -34,12 +34,27 @@ internal readonly record struct InteractionApproach(
|
|||
float TargetRadius,
|
||||
float TargetHeight);
|
||||
|
||||
internal interface IWorldSelectionQuery
|
||||
{
|
||||
uint? PickAtCursor(bool includeSelf);
|
||||
uint? PickAt(float mouseX, float mouseY, bool includeSelf);
|
||||
void BeginLightingPulse(uint serverGuid);
|
||||
bool IsCurrent(uint serverGuid, uint localEntityId);
|
||||
string Describe(uint serverGuid);
|
||||
bool IsCreature(uint serverGuid);
|
||||
bool IsHostileMonster(uint serverGuid);
|
||||
ClosestCombatTarget? FindClosestHostileMonster();
|
||||
bool IsUseable(uint serverGuid);
|
||||
bool IsPickupable(uint serverGuid);
|
||||
bool TryGetApproach(uint serverGuid, out InteractionApproach approach);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Read-only owner for retail world selection and interaction classification.
|
||||
/// It consumes the canonical live-entity runtime but never mutates selection,
|
||||
/// movement, inventory, or network state.
|
||||
/// </summary>
|
||||
internal sealed class WorldSelectionQuery
|
||||
internal sealed class WorldSelectionQuery : IWorldSelectionQuery
|
||||
{
|
||||
private const uint LargeUseObjectFlags = 0x1000u | 0x4000u | 0x40000u | 0x2000u;
|
||||
private const uint StuckObjectFlag = 0x0004u;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue