示例#1
0
        /// <summary>
        ///     Main mod class constructor. Sets up the static instance.
        /// </summary>
        public PrepareLanding()
        {
            Logger.Message("Enter constructor.");
            if (Instance == null)
            {
                Instance = this;
            }

            // initialize events
            EventHandler = new RimWorldEventHandler();

            // global game options
            GameOptions = new GameOptions(Settings, EventHandler);

            // instance used to keep track of (or override) game ticks.
            GameTicks = new GameTicks();

            // Holds various mod options (shown on the 'option' tab on the GUI).
            var filterOptions = new FilterOptions();

            GameData = new GameData.GameData(filterOptions);

            TileFilter = new WorldTileFilter(GameData.UserData);

            // instantiate the tile highlighter
            TileHighlighter = new TileHighlighter(filterOptions);

            Logger.Message("Exit constructor.");
        }
示例#2
0
        public override void Filter(List <int> inputList)
        {
            base.Filter(inputList);

            if (!IsFilterActive)
            {
                return;
            }

            // partial state means "I don't care if they can graze now or not", so all tiles match
            if (UserData.ChosenAnimalsCanGrazeNowState == MultiCheckboxState.Partial)
            {
                _filteredTiles.AddRange(inputList);
                return;
            }

            try
            {
                GameTicks.PushTickAbs();
                foreach (var tileId in inputList)
                {
                    var canGrazeNow = VirtualPlantsUtility.EnvironmentAllowsEatingVirtualPlantsNowAt(tileId);
                    if (UserData.ChosenAnimalsCanGrazeNowState == MultiCheckboxState.On)
                    {
                        if (canGrazeNow)
                        {
                            _filteredTiles.Add(tileId);
                        }
                    }

                    if (UserData.ChosenAnimalsCanGrazeNowState == MultiCheckboxState.Off)
                    {
                        if (!canGrazeNow)
                        {
                            _filteredTiles.Add(tileId);
                        }
                    }
                }
            }
            finally
            {
                GameTicks.PopTickAbs();
            }
        }