public DockRequestResult MidwayDock(ShipBase requester, out DockSessionBase session, int direction) { Debug.LogError("Midway dock " + ID); if (direction == -1) { if (_dockingStageA > 0 || _sessionA != null) { session = null; return(DockRequestResult.Busy); } DockingEffectA.SetStage(2); _dockingStageA = 3; _sessionA = new TLTransitSession(requester, -1, this); session = _sessionA; _sessionA.StartMidwaySession(); return(DockRequestResult.Accept); } else if (direction == 1) { if (_dockingStageB > 0 || _sessionB != null) { session = null; return(DockRequestResult.Busy); } DockingEffectB.SetStage(2); _dockingStageB = 3; _sessionB = new TLTransitSession(requester, 1, this); session = _sessionB; _sessionB.StartMidwaySession(); return(DockRequestResult.Accept); } session = null; return(DockRequestResult.Deny); }
public int GetTLSessionDockingStage(TLTransitSession session) { if (_sessionA == session) { return(_dockingStageA); } if (_sessionB == session) { return(_dockingStageB); } return(-1); }
public bool IsSessionOnMe(TLTransitSession session) { if (_sessionA == session) { return(true); } if (_sessionB == session) { return(true); } return(false); }
public void AssignLiveSession(int direction, TLTransitSession session) { if (direction < 0) { _sessionA = session; DockingEffectA.SetStage(1); _dockingStageA = 3; _dockingTimerA = 0; } else { _sessionB = session; DockingEffectB.SetStage(1); _dockingStageB = 3; _dockingTimerB = 0; } }
public void ClearSession(int direction) { //Debug.Log("Clearing session, direction " + direction + " I am " + ID); if (direction < 0) { _sessionA = null; DockingEffectA.SetStage(0); _dockingStageA = 0; _dockingTimerA = 0; } else { _sessionB = null; DockingEffectB.SetStage(0); _dockingStageB = 0; _dockingTimerB = 0; } }
public override DockRequestResult Dock(ShipBase requester, out DockSessionBase session) { //determine direction from requester's location float angleA = Vector3.Angle(TriggerA.transform.forward, TriggerA.transform.position - requester.transform.position); float angleB = Vector3.Angle(TriggerB.transform.forward, TriggerB.transform.position - requester.transform.position); if (angleA < 90 && IsTerminalAorB >= 0) { //Debug.Log("Docking requested to go to A"); //direction is going towards A //check if anyone is already docking A if (_dockingStageA > 0 || _sessionA != null) { session = null; return(DockRequestResult.Busy); } DockingEffectA.SetStage(1); _dockingStageA = 1; _sessionA = new TLTransitSession(requester, -1, this); session = _sessionA; return(DockRequestResult.Accept); } else if (angleB < 90 && IsTerminalAorB <= 0) { Debug.Log("Docking requested to go to B"); //directoin is going towards B if (_dockingStageB > 0 || _sessionB != null) { session = null; return(DockRequestResult.Busy); } DockingEffectB.SetStage(1); _dockingStageB = 1; _sessionB = new TLTransitSession(requester, 1, this); session = _sessionB; return(DockRequestResult.Accept); } session = null; return(DockRequestResult.Deny); }