/// <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."); }
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(); } }