예제 #1
0
        private void RefreshGuidanceMode()
        {
            switch (_guidanceIndex)
            {
            case 1:
                GuidanceMode  = GuidanceModes.AAMPure;
                GuidanceLabel = "AAM";
                break;

            case 2:
                GuidanceMode  = GuidanceModes.AGM;
                GuidanceLabel = "AGM/STS";
                break;

            case 3:
                GuidanceMode  = GuidanceModes.Cruise;
                GuidanceLabel = "Cruise";
                break;

            case 4:
                GuidanceMode  = GuidanceModes.AGMBallistic;
                GuidanceLabel = "Ballistic";
                break;
            }

            if (Fields["CruiseAltitude"] != null)
            {
                Fields["CruiseAltitude"].guiActive       = _guidanceIndex == 3;
                Fields["CruiseAltitude"].guiActiveEditor = _guidanceIndex == 3;
            }

            Misc.RefreshAssociatedWindows(part);
        }
예제 #2
0
        private void UpdateTargetingMode(TargetingModes newTargetingMode)
        {
            if (newTargetingMode == TargetingModes.Radar)
            {
                Fields["ActiveRadarRange"].guiActive       = true;
                Fields["ActiveRadarRange"].guiActiveEditor = true;
            }
            else
            {
                Fields["ActiveRadarRange"].guiActive       = false;
                Fields["ActiveRadarRange"].guiActiveEditor = false;
            }
            this.TargetingMode   = newTargetingMode;
            this._targetingLabel = newTargetingMode.ToString();

            Misc.RefreshAssociatedWindows(part);
        }
예제 #3
0
        public override void FireMissile()
        {
            if (!HasFired)
            {
                GameEvents.onPartDie.Add(PartDie);
                BDATargetManager.FiredMissiles.Add(this);

                foreach (var wpm in vessel.FindPartModulesImplementing <MissileFire>())
                {
                    Team = wpm.team;
                    break;
                }

                SourceVessel = vessel;
                SetTargeting();



                Jettison();

                AddTargetInfoToVessel();

                vessel.vesselName = GetShortName();
                vessel.vesselType = VesselType.Station;

                TimeFired = Time.time;

                MissileState = MissileStates.Drop;
                Misc.RefreshAssociatedWindows(part);

                if (StageToTriggerOnProximity == 0)
                {
                    ArmingExplosive();
                }

                HasFired = true;
            }
        }
예제 #4
0
        public void StartGuidance()
        {
            if (hasFired)
            {
                return;
            }

            if (vessel.targetObject != null && vessel.targetObject.GetVessel() != null)
            {
                targetVessel = vessel.targetObject.GetVessel();
            }
            else if (parentVessel != null && parentVessel.targetObject != null && parentVessel.targetObject.GetVessel() != null)
            {
                targetVessel = parentVessel.targetObject.GetVessel();
            }
            else
            {
                return;
            }

            if (!hasFired && targetVessel != null)
            {
                hasFired            = true;
                guidanceActive      = true;
                vessel.OnFlyByWire += GuidanceSteer;
                vessel.SetReferenceTransform(part);
                GameObject velocityObject = new GameObject("velObject");
                velocityObject.transform.position = transform.position;
                velocityObject.transform.parent   = transform;
                velocityTransform = velocityObject.transform;

                Events["StartGuidance"].guiActive = false;
                Misc.RefreshAssociatedWindows(part);

                vessel.OnJustAboutToBeDestroyed += RemoveGuidance;
                part.OnJustAboutToBeDestroyed   += RemoveGuidance;
            }
        }
예제 #5
0
        void RefreshGuidanceMode()
        {
            switch (guidanceMode)
            {
            case 1:
                guidanceLabel = "AAM";
                break;

            case 2:
                guidanceLabel = "AGM/STS";
                break;

            case 3:
                guidanceLabel = "Cruise";
                break;
            }

            Fields["cruiseAltitude"].guiActive       = (guidanceMode == 3);
            Fields["cruiseAltitude"].guiActiveEditor = (guidanceMode == 3);


            Misc.RefreshAssociatedWindows(part);
        }