예제 #1
0
        private void Start()
        {
            if (icon == null)
            {
                icon = new Texture2D(38, 38, TextureFormat.ARGB32, false);

                string path = Path.Combine(new DirectoryInfo(KSPUtil.ApplicationRootPath).FullName, "GameData/BasicDeltaV/Resources/AppIcon.png").Replace("\\", "/");

                if (File.Exists(path))
                {
                    icon.LoadImage(File.ReadAllBytes(path));
                }
            }

            instance = this;

            if (buttonAdder != null)
            {
                StopCoroutine(buttonAdder);
            }

            buttonAdder = AddButton();
            StartCoroutine(buttonAdder);

            GameEvents.OnGameSettingsApplied.Add(Reposition);
        }
예제 #2
0
        private void Start()
        {
            _settings = HighLogic.CurrentGame.Parameters.CustomParams <BasicDeltaV_GameParameters>();

            panelManager = gameObject.AddComponent <BasicDVPanelManager>();

            _inFlight = _settings.AllowFlight || _settings.DisableStockDeltaV;

            if (!_vesselDeltaVFlagAssigned)
            {
                AssignDeltaVFlag();
                _vesselDeltaVFlagAssigned = true;
            }

            if (HighLogic.LoadedSceneIsEditor)
            {
                _simpleRestrictions  = false;
                _complexRestrictions = false;
                _readoutsAvailable   = true;

                _currentBody = BodyFromName(BasicDeltaV_Settings.Instance.CelestialBody);

                GameEvents.onEditorShipModified.Add(DeactivateEditorDeltaV);

                GameEvents.onPartPriorityChanged.Add(TriggerSimulator);
                GameEvents.onPartResourceListChange.Add(TriggerSimulator);
                GameEvents.onPartCrossfeedStateChange.Add(TriggerSimulator);
                GameEvents.onPartFuelLookupStateChange.Add(TriggerSimulator);

                GameEvents.onPartModuleAdjusterAdded.Add(TriggerSimulator);
                GameEvents.onPartModuleAdjusterRemoved.Add(TriggerSimulator);
                GameEvents.onPartResourceFlowStateChange.Add(TriggerSimulator);

                GameEvents.StageManager.OnGUIStageAdded.Add(TriggerSimulator);
                GameEvents.StageManager.OnGUIStageRemoved.Add(TriggerSimulator);
                GameEvents.StageManager.OnStagingSeparationIndices.Add(TriggerSimulator);
            }
            else if (HighLogic.LoadedSceneIsFlight)
            {
                if (!_inFlight)
                {
                    Destroy(gameObject);
                    return;
                }

                GameEvents.onVesselCrewWasModified.Add(CrewModified);
                GameEvents.onVesselChange.Add(CrewModified);
                GameEvents.onStageActivate.Add(OnStage);

                CheckVesselCrew(FlightGlobals.ActiveVessel);

                DeactivateDeltaV(FlightGlobals.ActiveVessel);

                _currentBody = FlightGlobals.currentMainBody;

                StartCoroutine(WaitForFlightController());
            }

            GameEvents.StageManager.OnGUIStageSequenceModified.Add(OnStageModify);

            if (_currentBody == null)
            {
                _currentBody = Planetarium.fetch.Home;
            }

            Assembly assembly = AssemblyLoader.loadedAssemblies.GetByAssembly(Assembly.GetExecutingAssembly()).assembly;
            var      ainfoV   = Attribute.GetCustomAttribute(assembly, typeof(AssemblyInformationalVersionAttribute)) as AssemblyInformationalVersionAttribute;

            switch (ainfoV == null)
            {
            case true: _version = ""; break;

            default: _version = ainfoV.InformationalVersion; break;
            }

            SimManager.vectoredThrust = BasicDeltaV_Settings.Instance.VectoredThrust;

            appLauncher  = gameObject.AddComponent <BasicDeltaV_AppLauncher>();
            panelHandler = gameObject.AddComponent <BasicDeltaV_PanelManager>();

            StartCoroutine(WaitForStageManager());

            _loaded = true;
        }