public static float TotalBarracksPool(StaticInstance staticInstance)
        {
            float fKerbals = 0f;

            foreach (StaticInstance instance in StaticDatabase.GetAllStatics())
            {
                //if ((string)obj.model.getSetting("DefaultFacilityType") == "None") continue;

                if (instance.FacilityType != "Barracks")
                {
                    if (instance.model.DefaultFacilityType != "Barracks")
                    {
                        continue;
                    }
                }

                var dist = Vector3.Distance(staticInstance.position, instance.position);
                if (dist > 5000f)
                {
                    continue;
                }

                Barracks foundBarracks = instance.gameObject.GetComponent <Barracks>();

                fKerbals = fKerbals + foundBarracks.StaffAvailable;
            }

            return(fKerbals);
        }
Exemple #2
0
        private void SetGroup()
        {
            slaveList = new List <AnimateOnSunRise> ();

            if (staticInstance.Group == "Ungrouped")
            {
                master   = this;
                isMaster = true;
                return;
            }

            bool findMaster = false;

            foreach (StaticInstance sInstance in StaticDatabase.GetAllStatics())
            {
                if (sInstance != staticInstance)
                {
                    if (sInstance.Group == staticInstance.Group)
                    {
                        AnimateOnSunRise module = sInstance.gameObject.GetComponentInChildren <AnimateOnSunRise> ();
                        if (module != null)
                        {
                            if (module.isMaster)
                            {
                                master     = module;
                                findMaster = true;
                                isMaster   = false;
                                break;
                            }
                            else
                            {
                                slaveList.Add(module);
                            }
                        }
                    }
                }
            }

            if (!findMaster)
            {
                master   = this;
                isMaster = true;
            }
        }
        void SetLocalsGroup(string sGroup, float fRange)
        {
            if (sGroup == "")
            {
                return;
            }

            foreach (StaticInstance obj in StaticDatabase.GetAllStatics())
            {
                if (obj.pqsCity.sphere == FlightGlobals.currentMainBody.pqsController)
                {
                    var dist = Vector3.Distance(FlightGlobals.ActiveVessel.GetTransform().position, obj.gameObject.transform.position);
                    if (dist < fRange)
                    {
                        StaticDatabase.ChangeGroup(obj, sGroup);
                    }
                }
            }
        }
Exemple #4
0
        void Awake()
        {
            // Version Check
            Debug.Log("[SigmaLog] Version Check:   KKtoSD v0.1.5");

            // Check if KK is installed
            if (AssemblyLoader.loadedAssemblies.FirstOrDefault(a => a.name == "KerbalKonstructs") == null)
            {
                return;
            }

            // Get the groups from KK
            StaticInstance[] KKStatics = StaticDatabase.GetAllStatics();

            // Send the groups to SD
            foreach (StaticInstance KKStatic in KKStatics)
            {
                CelestialBody planet = KKStatic?.CelestialBody;
                string        group  = KKStatic?.Group;
                PQSCity       mod    = KKStatic?.pqsCity;

                if (planet == null || string.IsNullOrEmpty(group) || mod == null)
                {
                    continue;
                }


                if (!PQSCityGroups.ExternalExceptions.ContainsKey(planet))
                {
                    PQSCityGroups.ExternalExceptions.Add(planet, new Dictionary <string, List <object> >());
                }

                if (!PQSCityGroups.ExternalExceptions[planet].ContainsKey(group))
                {
                    PQSCityGroups.ExternalExceptions[planet].Add(group, new List <object>());
                }

                if (!PQSCityGroups.ExternalExceptions[planet][group].Contains(mod))
                {
                    PQSCityGroups.ExternalExceptions[planet][group].Add(mod);
                }
            }
        }
        /// <summary>
        /// saves the facility settings to the cfg file
        /// </summary>
        internal static void SaveFacilities(ConfigNode facilityNodes)
        {
            foreach (StaticInstance instance in StaticDatabase.GetAllStatics())
            {
                if (!instance.hasFacilities)
                {
                    continue;
                }

                ConfigNode instanceNode = facilityNodes.AddNode(CareerUtils.KeyFromString(instance.RadialPosition.ToString()));
                instanceNode.SetValue("FacilityName", instance.gameObject.name, true);
                instanceNode.SetValue("FacilityType", instance.facilityType.ToString(), true);

                for (int i = 0; i < instance.myFacilities.Count; i++)
                {
                    ConfigNode facnode = instanceNode.AddNode(instance.myFacilities[i].FacilityType);
                    facnode.SetValue("Index", i, true);
                    instance.myFacilities[i].SaveCareerConfig(facnode);
                }
            }
        }
        public static StaticInstance NearestBarracks(StaticInstance staticInstance, bool bUnassigned = true)
        {
            StaticInstance soNearest = null;
            float          fKerbals  = 0f;

            foreach (StaticInstance instance in StaticDatabase.GetAllStatics())
            {
                //if ((string)obj.model.getSetting("DefaultFacilityType") == "None") continue;

                if (instance.FacilityType != "Barracks")
                {
                    if (instance.model.DefaultFacilityType != "Barracks")
                    {
                        continue;
                    }
                }

                if (instance.CelestialBody.name == FlightGlobals.currentMainBody.name)
                {
                    var dist = Vector3.Distance(staticInstance.position, instance.position);
                    if (dist > 5000f)
                    {
                        continue;
                    }
                }
                else
                {
                    continue;
                }

                Barracks foundBarracks = instance.gameObject.GetComponent <Barracks>();
                if (bUnassigned)
                {
                    fKerbals = foundBarracks.StaffAvailable;

                    if (fKerbals < 1)
                    {
                        continue;
                    }
                    else
                    {
                        soNearest = instance;
                        break;
                    }
                }
                else
                {
                    if (foundBarracks.StaffCurrent == 1)
                    {
                        continue;
                    }

                    if ((foundBarracks.StaffCurrent - 1f) == foundBarracks.StaffAvailable)
                    {
                        continue;
                    }
                    else
                    {
                        soNearest = instance;
                        break;
                    }
                }
            }

            return(soNearest);
        }