protected void OnMapViewFiltersModified(MapViewFiltering.VesselTypeFilter filter)
        {
            if (filter == MapViewFiltering.VesselTypeFilter.None)
            {
                if (contract == null)
                {
                    return;
                }

                // Reset state of renderers
                foreach (OrbitData obData in orbits)
                {
                    ContractConfiguratorParameters parms = HighLogic.CurrentGame.Parameters.CustomParams <ContractConfiguratorParameters>();

                    if (parms != null && obData != null)
                    {
                        if (contract.ContractState == Contract.State.Active && parms.DisplayActiveOrbits ||
                            contract.ContractState == Contract.State.Offered && parms.DisplayOfferedOrbits)
                        {
                            obData.SetupRenderer();
                        }
                        else
                        {
                            obData.CleanupRenderer();
                        }
                    }
                }
            }
        }
示例#2
0
        public static bool IsFilterEnabled(Vessel vessel)
        {
            //For non-tracking station scenes we only allow a fixed set of vessels.
            if (HighLogic.LoadedScene != GameScenes.TRACKSTATION)
            {
                switch (vessel.vesselType)
                {
                case VesselType.Base:
                case VesselType.Lander:
                case VesselType.Plane:
                case VesselType.Probe:
                case VesselType.Relay:
                case VesselType.Rover:
                case VesselType.Ship:
                    return(true);

                default:
                    return(false);
                }
            }

            //For the tracking station, we rely upon the filter buttons.
            MapViewFiltering.VesselTypeFilter vesselTypeFilter = MapViewFiltering.vesselTypeFilter;

            if (vesselTypeFilter == MapViewFiltering.VesselTypeFilter.All)
            {
                return(true);
            }
            if (vesselTypeFilter == MapViewFiltering.VesselTypeFilter.None)
            {
                return(false);
            }

            switch (vessel.vesselType)
            {
            case VesselType.Base:
                return((vesselTypeFilter & MapViewFiltering.VesselTypeFilter.Bases) > 0 ? true : false);

            case VesselType.Lander:
                return((vesselTypeFilter & MapViewFiltering.VesselTypeFilter.Landers) > 0 ? true : false);

            case VesselType.Plane:
                return((vesselTypeFilter & MapViewFiltering.VesselTypeFilter.Plane) > 0 ? true : false);

            case VesselType.Probe:
                return((vesselTypeFilter & MapViewFiltering.VesselTypeFilter.Probes) > 0 ? true : false);

            case VesselType.Relay:
                return((vesselTypeFilter & MapViewFiltering.VesselTypeFilter.Relay) > 0 ? true : false);

            case VesselType.Rover:
                return((vesselTypeFilter & MapViewFiltering.VesselTypeFilter.Rovers) > 0 ? true : false);

            case VesselType.Ship:
                return((vesselTypeFilter & MapViewFiltering.VesselTypeFilter.Ships) > 0 ? true : false);

            default:
                return(false);
            }
        }
示例#3
0
        private void OnMapViewFiltersModified(MapViewFiltering.VesselTypeFilter filterType)
        {
            _instantStart = true;

            //if (_TrackedVesselWidgets == null || _TrackedVesselWidgets.Count <= 1)
            StartCoroutine(WaitForUpdate(3));
        }
示例#4
0
 protected void OnMapViewFiltersModified(MapViewFiltering.VesselTypeFilter filter)
 {
     if (filter == MapViewFiltering.VesselTypeFilter.None)
     {
         // Reset state of renderers
         foreach (WaypointData wpData in waypoints)
         {
             WaypointManager.RemoveWaypoint(wpData.waypoint);
             wpData.isAdded = false;
             AddWayPoint(wpData);
         }
     }
 }
示例#5
0
        private void onMapEntered()
        {
            this.pluginConfiguration.load();

            MapViewFiltering.VesselTypeFilter stateToRestore = (MapViewFiltering.VesselTypeFilter) this.pluginConfiguration.GetValue(ManeuverQueue.configurationFiltersKey, (int)MapViewFiltering.VesselTypeFilter.All);
            if (stateToRestore != MapViewFiltering.VesselTypeFilter.All)
            {
                MapViewFiltering.SetFilter(stateToRestore);
                this.pluginConfiguration.SetValue(ManeuverQueue.configurationFiltersKey, ManeuverQueue.savedFilterState);
                this.pluginConfiguration.save();
            }

            GameEvents.OnMapEntered.Remove(this.onMapEntered);
        }
示例#6
0
        protected void Start()
        {
            const float WINDOW_VERTICAL_POSITION = 36;

            this.pluginConfiguration.load();

            if (MapViewFiltering.vesselTypeFilter != MapViewFiltering.VesselTypeFilter.All)
            {
                ManeuverQueue.savedFilterState = MapViewFiltering.vesselTypeFilter;
            }
            else
            {
                ManeuverQueue.savedFilterState = (MapViewFiltering.VesselTypeFilter) this.pluginConfiguration.GetValue(ManeuverQueue.configurationFiltersKey, (int)MapViewFiltering.VesselTypeFilter.All);
            }

            this.pluginConfiguration.SetValue(ManeuverQueue.configurationFiltersKey, (int)MapViewFiltering.VesselTypeFilter.All);
            this.pluginConfiguration.save();

            this.spaceTrackingScene = (SpaceTracking)UnityEngine.Object.FindObjectOfType(typeof(SpaceTracking));

            this.sideBarRect = GetSideBarRect();

            this.windowPos = new Rect(this.sideBarRect.xMax, WINDOW_VERTICAL_POSITION, 10, 10);

            this.windowStyle = new GUIStyle(HighLogic.Skin.window)
            {
                margin  = new RectOffset(),
                padding = new RectOffset(5, 5, 5, 5)
            };

            GameEvents.onGameSceneSwitchRequested.Add(this.onGameSceneSwitchRequested);

            GameEvents.onVesselDestroy.Add(this.onVesselDestroy);
            GameEvents.onVesselCreate.Add(this.onVesselCreate);
            GameEvents.onKnowledgeChanged.Add(this.onKnowledgeChanged);
            GameEvents.OnMapViewFiltersModified.Add(this.onMapViewFiltersModified);

            ManeuverQueue.filterModeLabels = Enum.GetValues(typeof(FilterMode)).Cast <FilterMode>().Where(
                x => x != FilterMode.Undefined).Select(
                x => ManeuverQueue.LabelForFilterMode(x)).ToArray();

            this.currentMode = (FilterMode)this.pluginConfiguration.GetValue(ManeuverQueue.configurationModeKey, (int)FilterMode.Default);

            this.render = true;
        }
示例#7
0
        protected void SetVesselList(List <Vessel> vessels, MapViewFiltering.VesselTypeFilter filters)
        {
            if (this.spaceTrackingScene == null)
            {
                return;
            }

            this.spaceTrackingScene.GetType().GetField("trackedVessels", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(this.spaceTrackingScene, vessels);

            MethodInfo clearMethod     = this.spaceTrackingScene.GetType().GetMethod("ClearUIList", BindingFlags.NonPublic | BindingFlags.Instance);
            MethodInfo constructMethod = this.spaceTrackingScene.GetType().GetMethod("ConstructUIList", BindingFlags.NonPublic | BindingFlags.Instance);

            clearMethod.Invoke(this.spaceTrackingScene, new object[0]);
            constructMethod.Invoke(this.spaceTrackingScene, new object[0]);

            MapViewFiltering.SetFilter(filters);

            this.ResetWidgetsForActiveVessel();
        }
 protected void OnMapViewFiltersModified(MapViewFiltering.VesselTypeFilter filter)
 {
     if (filter == MapViewFiltering.VesselTypeFilter.None)
     {
         // Reset state of renderers
         foreach (OrbitData obData in orbits)
         {
             if (contract.ContractState == Contract.State.Active && ContractConfiguratorSettings.Instance.DisplayActiveOrbits ||
                 contract.ContractState == Contract.State.Offered && ContractConfiguratorSettings.Instance.DisplayOfferedOrbits)
             {
                 obData.SetupRenderer();
             }
             else
             {
                 obData.CleanupRenderer();
             }
         }
     }
 }
示例#9
0
 private void onMapViewFiltersModified(MapViewFiltering.VesselTypeFilter data)
 {
     this.needsWidgetColorRender = true;
 }