/// <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 TabInfo(GameData.GameData gameData, float columnSizePercent = 0.25f) : base(columnSizePercent) { _gameData = gameData; // make new text styles _styleWorldInfo = new GUIStyle(Text.textAreaReadOnlyStyles[1]) { alignment = TextAnchor.UpperLeft, wordWrap = true, richText = true }; _styleFilterInfo = new GUIStyle(Text.textFieldStyles[1]) { alignment = TextAnchor.UpperLeft, wordWrap = true, richText = true }; // make sure world info is generated once again when the tile pre-filter has finished its job. PrepareLanding.Instance.TileFilter.OnPrefilterDone += RebuildWorldInfo; }
public TabGodMode(GameData.GameData gameData, float columnSizePercent) : base(columnSizePercent) { _gameData = gameData; PrepareLanding.Instance.EventHandler.WorldGeneratedOrLoaded += ExecuteOnWorldGeneratedOrLoaded; }
public TabTemperature(GameData.GameData gameData, float columnSizePercent = 0.25f) : base(columnSizePercent) { _gameData = gameData; }
public MainWindow(GameData.GameData gameData) { doCloseButton = false; // explicitly disable close button, we'll draw it ourselves doCloseX = true; optionalTitle = "Prepare Landing"; // Do not translate MinimizedWindow.WindowLabel = optionalTitle; MinimizedWindow.AddMinimizedWindowContent += AddMinimizedWindowContent; /* * GUI utilities (tabs) */ _tabGuiUtilities.Clear(); _tabGuiUtilities.Add(new TabTerrain(gameData, 0.30f)); _tabGuiUtilities.Add(new TabTemperature(gameData, 0.30f)); _tabGuiUtilities.Add(new TabFilteredTiles(0.48f)); _tabGuiUtilities.Add(new TabInfo(gameData, 0.48f)); _tabGuiUtilities.Add(new TabOptions(gameData, 0.35f)); _tabGuiUtilities.Add(new TabLoadSave(gameData, 0.48f)); #if TAB_OVERLAYS _tabGuiUtilities.Add(new TabOverlays(gameData, 0.50f)); #endif _tabGuiUtilities.Add(new TabGodMode(gameData, 0.30f)); TabController.Clear(); TabController.AddTabRange(_tabGuiUtilities); /* * Bottom buttons */ #region BOTTOM_BUTTONS var buttonFilterTiles = new ButtonDescriptor("PLMWBB_FilterTiles".Translate(), delegate { SoundDefOf.TickLow.PlayOneShotOnCamera(); // reset starting display index _tileDisplayIndexStart = 0; // reset selected index _selectedTileIndex = -1; // do the tile filtering PrepareLanding.Instance.TileFilter.Filter(); }); var buttonResetFilters = new ButtonDescriptor("PLMWBB_ResetFilters".Translate(), delegate { SoundDefOf.TickLow.PlayOneShotOnCamera(); gameData.UserData.ResetAllFields(); }); var buttonMinimize = new ButtonDescriptor("PLMWBB_Minimize".Translate(), delegate { SoundDefOf.TickHigh.PlayOneShotOnCamera(); Minimize(); }); var buttonSelectRandomSite = new ButtonDescriptor("PLMWBB_SelectRandom".Translate(), delegate { SoundDefOf.Click.PlayOneShotOnCamera(); var tileId = PrepareLanding.Instance.TileFilter.RandomFilteredTile(); if (tileId == Tile.Invalid) { return; } Find.WorldInterface.SelectedTile = tileId; Find.WorldCameraDriver.JumpTo(Find.WorldGrid.GetTileCenter(Find.WorldInterface.SelectedTile)); }); _buttonCloseDescriptor = new ButtonDescriptor("CloseButton".Translate(), delegate { SoundDefOf.TickHigh.PlayOneShotOnCamera(); // reset starting display index _tileDisplayIndexStart = 0; // reset selected index _selectedTileIndex = -1; ForceClose(); }, displayState: DisplayState.Entry | DisplayState.MapInitializing); _bottomButtonsDescriptorList = new List <ButtonDescriptor> { buttonFilterTiles, buttonResetFilters, buttonSelectRandomSite, buttonMinimize, _buttonCloseDescriptor }; #endregion BOTTOM_BUTTONS /* * Minimized window buttons */ #region MINIMIZED_WINDOW_BUTTONS //TODO: this is exactly the same code than in TabFilterTiles.cs: find a way to refactor the code. var buttonListStart = new ButtonDescriptor("<<", delegate { // reset starting display index _tileDisplayIndexStart = 0; }, "PLMWFTIL_GoToStartOfTileList".Translate()); var buttonPreviousPage = new ButtonDescriptor("<", delegate { if (_tileDisplayIndexStart >= MaxDisplayedTileWhenMinimized) { _tileDisplayIndexStart -= MaxDisplayedTileWhenMinimized; } else { Messages.Message("PLMWFTIL_ReachedListStart".Translate(), MessageTypeDefOf.RejectInput); } }, "PLMWFTIL_GoToPreviousListPage".Translate()); var buttonNextPage = new ButtonDescriptor(">", delegate { var matchingTilesCount = PrepareLanding.Instance.TileFilter.AllMatchingTiles.Count; _tileDisplayIndexStart += MaxDisplayedTileWhenMinimized; if (_tileDisplayIndexStart > matchingTilesCount) { Messages.Message($"{"PLMWFTIL_NoMoreTilesAvailable".Translate()} {matchingTilesCount}).", MessageTypeDefOf.RejectInput); _tileDisplayIndexStart -= MaxDisplayedTileWhenMinimized; } }, "PLMWFTIL_GoToNextListPage".Translate()); var buttonListEnd = new ButtonDescriptor(">>", delegate { var matchingTilesCount = PrepareLanding.Instance.TileFilter.AllMatchingTiles.Count; var tileDisplayIndexStart = matchingTilesCount - matchingTilesCount % MaxDisplayedTileWhenMinimized; if (tileDisplayIndexStart == _tileDisplayIndexStart) { Messages.Message($"{"PLMWFTIL_NoMoreTilesAvailable".Translate()} {matchingTilesCount}).", MessageTypeDefOf.RejectInput); } _tileDisplayIndexStart = tileDisplayIndexStart; }, "PLMWFTIL_GoToEndOfList".Translate()); _minimizedWindowButtonsDescriptorList = new List <ButtonDescriptor> { buttonListStart, buttonPreviousPage, buttonNextPage, buttonListEnd }; #endregion MINIMIZED_WINDOW_BUTTONS }
/// <summary> /// Filters Terrain tab constructor. /// </summary> /// <param name="gameData">Instance of game data.</param> /// <param name="columnSizePercent">Size of a column (in percent of the tab).</param> public TabTerrain(GameData.GameData gameData, float columnSizePercent = 0.25f) : base(columnSizePercent) { _gameData = gameData; }
public TabOptions(GameData.GameData gameData, float columnSizePercent = 0.25f) : base(columnSizePercent) { _gameData = gameData; }
public TabOverlays(GameData.GameData gameData, float columnSizePercent) : base(columnSizePercent) { _gameData = gameData; }
public TabLoadSave(GameData.GameData gameData, float columnSizePercent = 0.25f) : base(columnSizePercent) { _gameData = gameData; LoadSaveMode = LoadSaveMode.Unknown; _stylePresetInfo = new GUIStyle(Text.textFieldStyles[1]) { alignment = TextAnchor.UpperLeft, wordWrap = true, richText = true }; // setup default name // TODO check if possible to get logged in user if non steam rimworld _presetAuthorSave = SteamManager.Initialized ? SteamUtility.SteamPersonaName : "Your_Name"; #region LIST_BUTTONS var buttonListStart = new ButtonDescriptor("<<", delegate { // reset starting display index _listDisplayStartIndex = 0; }, "PLMWLODSAV_GoToStartOfItemList".Translate()); var buttonPreviousPage = new ButtonDescriptor("<", delegate { if (_listDisplayStartIndex >= MaxItemsToDisplay) { _listDisplayStartIndex -= MaxItemsToDisplay; } else { Messages.Message("PLMWLODSAV_ReachedListStart".Translate(), MessageTypeDefOf.RejectInput); } }, "PLMWLODSAV_GoToPreviousListPage".Translate()); var buttonNextPage = new ButtonDescriptor(">", delegate { var presetFilesCount = _gameData.PresetManager.AllPresetFiles.Count; _listDisplayStartIndex += MaxItemsToDisplay; if (_listDisplayStartIndex > presetFilesCount) { Messages.Message($"{"PLMWLODSAV_NoMoreItemsAvailable".Translate()} {presetFilesCount}).", MessageTypeDefOf.RejectInput); _listDisplayStartIndex -= MaxItemsToDisplay; } }, "PLMWLODSAV_GoToNextListPage".Translate()); var buttonListEnd = new ButtonDescriptor(">>", delegate { var presetFilesCount = _gameData.PresetManager.AllPresetFiles.Count; var displayIndexStart = presetFilesCount - presetFilesCount % MaxItemsToDisplay; if (displayIndexStart == _listDisplayStartIndex) { Messages.Message($"{"PLMWLODSAV_NoMoreItemsAvailable".Translate()} {presetFilesCount}).", MessageTypeDefOf.RejectInput); } _listDisplayStartIndex = displayIndexStart; }, "PLMWLODSAV_GoToEndOfList".Translate()); _buttonList = new List <ButtonDescriptor> { buttonListStart, buttonPreviousPage, buttonNextPage, buttonListEnd }; #endregion }