public void handleHaltDocking(List <CommunicationDataStructureValue> responseData)
    {
        int    id            = 0;
        int    dockingWithId = 0;
        string reason        = "unknown-connection";

        foreach (CommunicationDataStructureValue data in responseData)
        {
            if (data.getName() == "id")
            {
                id = int.Parse(data.getValue());
            }
            else if (data.getName() == "reason")
            {
                reason = data.getValue();
            }
            else if (data.getName() == "dockingWithId")
            {
                dockingWithId = int.Parse(data.getValue());
            }
        }
        if (id != 0 && id == Communication.currentNode.id)
        {
            Display.printDebug("[Incoming] Halt docking reason " + reason);
            DockingProcedure procedure = Docking.getDroneDockingProcedure(dockingWithId);
            if (procedure != null)
            {
                procedure.haltDocking(reason, false);
            }
            Communication.currentNode.navHandle.activeDockingProcedure = null;
        }
    }
Exemple #2
0
 public void handleDockedStep(DockingProcedure procedure) {
     this.navHandle.gyroHandle.disableOverride();
     this.navHandle.thrusterStatus(false);
     Communication.currentNode.status = "docked";
     if (Communication.getTimestamp() - procedure.connectionStart > 10) {
         if (Communication.currentNode.battery > 25) { // Do not disengage if battery too low.
             if (Communication.currentNode.playerCommand != "recall") {
                 procedure.haltDocking("docking-timeout");
                 this.navHandle.thrusterStatus(true);
             } else {
                 this.navHandle.thrusterStatus(false);
             }
         }
     }
 }
 public void handleDockingAccepted(string data)
 {
     if (Communication.currentNode.type == "mothership")
     {
         return;                                                 // Motherships handle docking requests
     }
     string[] dataSplitted = data.Split('_');
     if (dataSplitted.Count() == 2)
     {
         int id = int.Parse(dataSplitted[0]);
         if (Communication.currentNode.id != id)
         {
             return;                                     // If not my id
         }
         int masterId  = int.Parse(dataSplitted[1]);
         int nodeIndex = this.getNodeIndexById(masterId);
         if (nodeIndex == -1)
         {
             Communication.connectedNodes.Add(masterId);
             Drone node = new Drone(masterId);
             node.initNavigation(this.myGrid);
             Communication.connectedNodesData.Add(node);
             nodeIndex = this.getNodeIndexById(masterId);
         }
         if (Docking.dockingWithDrone(masterId))
         {
             DockingProcedure procedure = Docking.getDroneDockingProcedure(masterId);
             procedure.haltDocking("docking-already-in-progress");
         }
         DockingProcedure dock = new DockingProcedure(masterId);
         dock.initDocking();
         dock.approveDocking();
         dock.setNavHandle(Communication.currentNode.navHandle);
         Docking.activeDockingProcedures.Add(dock);
         Communication.currentNode.navHandle.activeDockingProcedure = dock;
     }
 }