Resolve dock binding from daemon assignments
This commit is contained in:
parent
56440aedbf
commit
25736359ca
2 changed files with 38 additions and 10 deletions
|
|
@ -7782,6 +7782,7 @@ static void RequireMainMenuContinueRunState(string root)
|
|||
"RestoreDroppedPickupsFromDaemonZoneState",
|
||||
"TryGetDaemonEntitySnapshot(",
|
||||
"TryGetDaemonParentSnapshot(",
|
||||
"TryResolveDaemonDockingBay(",
|
||||
"IsCurrentEntityObservedUndocked(",
|
||||
"parentSnapshot.DockingBayAssignments",
|
||||
"dockedEntitySnapshot.ChildEntityIndices",
|
||||
|
|
@ -7837,7 +7838,10 @@ static void RequireMainMenuContinueRunState(string root)
|
|||
"entity.EntityHostility[target]",
|
||||
"entity.VisibleEntities.Add(target)",
|
||||
"entity.VisibleEnemies.Add(target)",
|
||||
"entity.VisibleFriendlies.Add(target)"
|
||||
"entity.VisibleFriendlies.Add(target)",
|
||||
"currentEntity.Parent.DockingBays",
|
||||
"currentEntity.Parent is OrbitalEntity",
|
||||
"DoDock(currentEntity.Parent, dockingBay)"
|
||||
};
|
||||
|
||||
var forbiddenGameplayHits = forbiddenGameplaySymbols
|
||||
|
|
|
|||
|
|
@ -2842,16 +2842,12 @@ public class ActionGameManager : MonoBehaviour
|
|||
Entity currentEntity,
|
||||
IReadOnlyList<AetheriaRuntimeActionBarBindingSnapshot> actionBarBindings)
|
||||
{
|
||||
if (currentEntity.Parent != null)
|
||||
if (TryResolveDaemonDockingBay(currentEntity, out var dockParent, out var dockingBay))
|
||||
{
|
||||
var dockingBay = currentEntity.Parent.DockingBays.FirstOrDefault(bay => bay.DockedShip == currentEntity);
|
||||
if (dockingBay != null && currentEntity.Parent is OrbitalEntity)
|
||||
{
|
||||
CurrentEntity = currentEntity;
|
||||
RestoreActionBarBindingsFromTypedRun(actionBarBindings);
|
||||
DoDock(currentEntity.Parent, dockingBay);
|
||||
return;
|
||||
}
|
||||
CurrentEntity = currentEntity;
|
||||
RestoreActionBarBindingsFromTypedRun(actionBarBindings);
|
||||
DoDock(dockParent, dockingBay);
|
||||
return;
|
||||
}
|
||||
|
||||
BindToEntity(
|
||||
|
|
@ -3154,6 +3150,34 @@ public class ActionGameManager : MonoBehaviour
|
|||
!TryGetDaemonParentSnapshot(CurrentEntity, out _, out _);
|
||||
}
|
||||
|
||||
private bool TryResolveDaemonDockingBay(
|
||||
Entity child,
|
||||
out Entity dockParent,
|
||||
out EquippedDockingBay dockingBay)
|
||||
{
|
||||
dockParent = null;
|
||||
dockingBay = null;
|
||||
if (!TryGetDaemonParentSnapshot(child, out var parentSnapshot, out var parent) ||
|
||||
!(parent is OrbitalEntity) ||
|
||||
parent.DockingBays == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var assignments = parentSnapshot.DockingBayAssignments ?? Array.Empty<int>();
|
||||
for (var bayIndex = 0; bayIndex < assignments.Count && bayIndex < parent.DockingBays.Count; bayIndex++)
|
||||
{
|
||||
if (assignments[bayIndex] != child.DaemonEntityIndex)
|
||||
continue;
|
||||
|
||||
dockParent = parent;
|
||||
dockingBay = parent.DockingBays[bayIndex];
|
||||
return dockingBay != null;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private bool TryQueryDaemonEntityContact(
|
||||
Entity observer,
|
||||
Entity target,
|
||||
|
|
|
|||
Loading…
Reference in a new issue