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; } }
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; } }