예제 #1
0
        private void OnPartCouple(GameEvents.FromToAction <Part, Part> data)
        {
            if (_isDockingInProgress)
            {
                var vm1 = (KCTVesselTracker)data.from.vessel.vesselModules.Find(vm => vm is KCTVesselTracker);
                var vm2 = (KCTVesselTracker)data.to.vessel.vesselModules.Find(vm => vm is KCTVesselTracker);

                uint id1 = data.from.vessel.rootPart.launchID;
                uint id2 = data.to.vessel.rootPart.launchID;

                var dict1 = vm1.DockedVesselData ?? new Dictionary <uint, KCTVesselData>()
                {
                    { id1, KCTVesselData.Parse(vm1) }
                };
                var dict2 = vm2.DockedVesselData ?? new Dictionary <uint, KCTVesselData>()
                {
                    { id2, KCTVesselData.Parse(vm2) }
                };
                var combinedDict = new[] { dict1, dict2 }.SelectMany(dict => dict)
                .ToLookup(pair => pair.Key, pair => pair.Value)
                .ToDictionary(group => group.Key, group => group.First());

                vm1.DockedVesselData = vm2.DockedVesselData = combinedDict;
            }
        }
예제 #2
0
        protected override void OnLoad(ConfigNode node)
        {
            base.OnLoad(node);

            foreach (ConfigNode n in node.GetNodes("DATA"))
            {
                Data.Load(n);
            }

            foreach (ConfigNode n in node.GetNodes("DOCKED_DATA"))
            {
                uint launchID = default;
                if (!n.TryGetValue("launchID", ref launchID))
                {
                    continue;
                }

                DockedVesselData           = DockedVesselData ?? new Dictionary <uint, KCTVesselData>();
                DockedVesselData[launchID] = new KCTVesselData(n);
            }
        }