Exemplo n.º 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.");
        }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
        public TabGodMode(GameData.GameData gameData, float columnSizePercent) : base(columnSizePercent)
        {
            _gameData = gameData;

            PrepareLanding.Instance.EventHandler.WorldGeneratedOrLoaded += ExecuteOnWorldGeneratedOrLoaded;
        }
Exemplo n.º 4
0
 public TabTemperature(GameData.GameData gameData, float columnSizePercent = 0.25f) :
     base(columnSizePercent)
 {
     _gameData = gameData;
 }
Exemplo n.º 5
0
        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
        }
Exemplo n.º 6
0
 /// <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;
 }
Exemplo n.º 7
0
 public TabOptions(GameData.GameData gameData, float columnSizePercent = 0.25f) :
     base(columnSizePercent)
 {
     _gameData = gameData;
 }
Exemplo n.º 8
0
 public TabOverlays(GameData.GameData gameData, float columnSizePercent) : base(columnSizePercent)
 {
     _gameData = gameData;
 }
Exemplo n.º 9
0
        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
        }