public void onPartUnpack(Part part) { Pump p = Pumps.FirstOrDefault(pump => pump.partID == part.uid && pump.vesselID == part.vessel.id); if (p != null) { p.part = part; PumpNetwork network = PumpNetwork.FindNetwork(part.vessel); if (network != null) { } } }
public void ConnectVessel(Vessel from, Vessel to) { if (!Connections.ContainsKey(from)) { Connections.Add(from, new List <Vessel>()); } if (!Connections.ContainsKey(to)) { Connections.Add(to, new List <Vessel>()); } if (!Connections[from].Contains(to)) { Connections[from].Add(to); } if (!Connections[to].Contains(from)) { Connections[to].Add(from); } if (!ConnectedVessels.Contains(from)) { PumpNetwork origNetwork = Networks.FirstOrDefault(pn => pn.VesselInNetwork(from)); if (origNetwork != null) { ConnectedVessels.AddRange(origNetwork.ConnectedVessels); Pumps.AddRange(origNetwork.Pumps); foreach (var kvp in origNetwork.Connections) { Connections.Add(kvp.Key, kvp.Value); } Networks.Remove(origNetwork); } else { ConnectedVessels.Add(from); } } }
public void DisconnectVessel(Vessel from, Vessel to) { Connections[from].Remove(to); Connections[to].Remove(from); bool connected = WalkGraph(from).Contains(to); if (!connected) { PumpNetwork newNet = new PumpNetwork(); newNet.ConnectedVessels = WalkGraph(to).ToList(); ConnectedVessels = WalkGraph(from).ToList(); ILookup <Vessel, Pump> vp = Pumps.ToLookup(p => p.part.vessel); newNet.Pumps = newNet.ConnectedVessels.SelectMany(v => vp[v]).ToList(); Pumps = ConnectedVessels.SelectMany(v => vp[v]).ToList(); foreach (var v in Connections.Keys.ToList()) { if (!ConnectedVessels.Contains(v)) { newNet.Connections.Add(v, Connections[v]); Connections.Remove(v); } } } }
public void DisconnectVessel(Vessel from, Vessel to) { Connections[from].Remove(to); Connections[to].Remove(from); bool connected = WalkGraph(from).Contains(to); if(!connected) { PumpNetwork newNet = new PumpNetwork(); newNet.ConnectedVessels = WalkGraph(to).ToList(); ConnectedVessels = WalkGraph(from).ToList(); ILookup<Vessel, Pump> vp = Pumps.ToLookup(p => p.part.vessel); newNet.Pumps = newNet.ConnectedVessels.SelectMany(v => vp[v]).ToList(); Pumps = ConnectedVessels.SelectMany(v => vp[v]).ToList(); foreach(var v in Connections.Keys.ToList()) { if(!ConnectedVessels.Contains(v)) { newNet.Connections.Add(v, Connections[v]); Connections.Remove(v); } } } }