Exemplo n.º 1
0
        public override void OnFixedUpdate()
        {
            double Altitude = Misc.GetTrueAltitude(vessel);

            if (IsDetecting && this.vessel != null && this.vessel.gameObject.activeSelf && Altitude <= this.DetectingHeight)
            {
                var energyRequest = PowerConsumption * TimeWarp.fixedDeltaTime;
                var energyDrawn   = this.part.RequestResource("ElectricCharge", energyRequest);
                this.powerRatio = energyDrawn / energyRequest;
                TimerEcho      += Time.deltaTime * (1 + Math.Log(TimeWarp.CurrentRate)) * this.powerRatio;

                var TimerThreshold = this.DetectingPeriod * (1 + Altitude * 0.000002d);

                if (TimerEcho >= TimerThreshold)
                {
                    var detected = false;
                    var cell     = MapOverlay.GetCellUnder(vessel.mainBody, vessel.transform.position);
                    if (resources.All(r => KethaneData.Current.Scans[r][vessel.mainBody.name][cell]))
                    {
                        return;
                    }
                    foreach (var resource in resources)
                    {
                        KethaneData.Current.Scans[resource][vessel.mainBody.name][cell] = true;
                        if (KethaneData.Current.GetCellDeposit(resource, vessel.mainBody, cell) != null)
                        {
                            detected = true;
                        }
                    }
                    MapOverlay.Instance.RefreshCellColor(cell, vessel.mainBody);
                    TimerEcho = 0;
                    if (vessel == FlightGlobals.ActiveVessel && ScanningSound)
                    {
                        (detected ? PingDeposit : PingEmpty).Play();
                    }
                }
            }
            else
            {
                this.powerRatio = 0;
            }
        }
Exemplo n.º 2
0
        public void Start()
        {
            if (Instance != null)
            {
                Destroy(Instance.gameObject);
            }

            Instance = this;

            setUpMesh();

            if (HighLogic.LoadedScene == GameScenes.MAINMENU)
            {
                gameObject.renderer.enabled = startMenuOverlay();
            }
            else if (HighLogic.LoadedScene == GameScenes.FLIGHT || HighLogic.LoadedScene == GameScenes.TRACKSTATION)
            {
                startMapOverlay();
            }
        }
Exemplo n.º 3
0
 public ICellResource GetDepositUnder(string resourceName, Vessel vessel)
 {
     return(GetCellDeposit(resourceName, vessel.mainBody, MapOverlay.GetCellUnder(vessel.mainBody, vessel.transform.position)));
 }
Exemplo n.º 4
0
        public void Start()
        {
            Instance = this;

            setUpMesh();

            if (HighLogic.LoadedScene == GameScenes.LOADING || HighLogic.LoadedScene == GameScenes.MAINMENU)
            {
                var objects = GameObject.FindSceneObjectsOfType(typeof(GameObject));
                if (objects.Any(o => o.name == "LoadingBuffer")) { return; }
                var kerbin = objects.OfType<GameObject>().Where(b => b.name == "Kerbin").SingleOrDefault();

                if (kerbin == null)
                {
                    Debug.LogWarning("[Kethane] Couldn't find Kerbin!");
                    return;
                }

                gameObject.layer = kerbin.layer;
                gameObject.transform.parent = kerbin.transform;
                gameObject.transform.localPosition = Vector3.zero;
                gameObject.transform.localRotation = Quaternion.identity;
                gameObject.transform.localScale = Vector3.one * 1020;

                gameObject.renderer.enabled = true;

                var random = new System.Random();
                var colors = new Color32[mesh.vertexCount];

                foreach (var cell in grid)
                {
                    var rand = random.Next(100);
                    Color32 color;
                    if (rand < 16)
                    {
                        color = rand < 4 ? new Color32(21, 176, 26, 255) : colorEmpty;
                        foreach (var neighbor in cell.Neighbors)
                        {
                            if (random.Next(2) < 1)
                            {
                                setCellColor(neighbor, color, colors);
                            }
                        }
                    }
                    else
                    {
                        color = colorUnknown;
                    }

                    setCellColor(cell, color, colors);
                }

                mesh.colors32 = colors;

                return;
            }

            KethaneController.LoadKethaneDeposits();
            resource = KethaneController.ResourceDefinitions.Where(d => d.Resource == "Kethane").Single();

            gameObject.layer = 10;
            ScaledSpace.AddScaledSpaceTransform(gameObject.transform);

            var node = ConfigNode.Load(KSPUtil.ApplicationRootPath + "GameData/Kethane/Grid.cfg");
            if (node == null) { return; }
            foreach (var body in FlightGlobals.Bodies)
            {
                double result;
                if (double.TryParse(node.GetValue(body.name), out result))
                {
                    bodyRadii[body] = result;
                }
            }
        }