Esempio n. 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="BuildMenuManager"/> class.
        /// </summary>
        /// <param name="spriteBatch">The sprite batch.</param>
        /// <param name="camera">The camera.</param>
        /// <param name="playingStateInterface">The playing state interface.</param>
        /// <param name="assetManager">The asset manager.</param>
        /// <param name="terrainManager">The terrain manager.</param>
        public BuildMenuManager(SpriteBatch spriteBatch, Camera camera, PlayingStateInterface playingStateInterface, AssetManager assetManager,
                                TerrainManager terrainManager, JobManager jobManager)
        {
            // Setters
            _spriteBatch           = spriteBatch;
            _camera                = camera;
            _playingStateInterface = playingStateInterface;
            _playingStateInterface.OnMenuClicked    += OnRemoval;
            _playingStateInterface.OnSubMenuClicked += OnBuildWall;
            _assetManager   = assetManager;
            _terrainManager = terrainManager;
            _jobManager     = jobManager;

            _selectWallArea = new SelectWallArea(_assetManager, _camera, _spriteBatch, _terrainManager);
            _selectWallArea.OnSelectionSelected  += OnSelectionSelected;
            _selectWallArea.OnSelectionCancelled += OnSelectionCancelled;

            _selectAreaRemoval = new SelectedAreaRemoval(_assetManager, _camera, _spriteBatch, _terrainManager);
            _selectAreaRemoval.OnSelectionRemovalSelected += OnRemoveSelected;
            _selectAreaRemoval.OnSelectionCancelled       += OnSelectionCancelled;

            _selectingType = SelectingAreaType.None;

            _buildSelectionName = "";
        }
Esempio n. 2
0
        /// <summary>
        /// Called when player clicks [remove].
        /// </summary>
        /// <param name="element">The element.</param>
        /// <param name="mouseState">State of the mouse.</param>
        private void OnRemoval(string element, MouseState mouseState)
        {
            GameState.State = GameStateType.SELECTING;

            if (_selectingType != SelectingAreaType.Removal)
            {
                _selectAreaRemoval.SelectArea(mouseState);
                _selectingType = SelectingAreaType.Removal;
            }
            else
            {
                _selectAreaRemoval.CancelSelection();
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Called when player clicks [build wall].
        /// </summary>
        /// <param name="element">The element.</param>
        /// <param name="mouseState">State of the mouse.</param>
        private void OnBuildWall(string element, MouseState mouseState)
        {
            GameState.State = GameStateType.SELECTING;

            // If the player isn't selecting something already and wants to build a wood/brick/stone wall
            if (_selectingType != SelectingAreaType.Wall && element == GameText.BuildMenu.BUILDWOODWALL || element == GameText.BuildMenu.BUILDBRICKWALL || element == GameText.BuildMenu.BUILDSTONEWALL)
            {
                // Save the element name the player wants to build (ie stone wall)
                _buildSelectionName = element;
                _selectWallArea.SelectArea(mouseState);
                // Player is now selecting an area, set bool to true
                _selectingType = SelectingAreaType.Wall;
            }
            else
            {
                _selectWallArea.CancelSelection();
            }
        }
Esempio n. 4
0
        private void OnRemoveSelected(Dictionary <Rectangle, Texture2D> selectedTiles)
        {
            // For each rectangle in selected tiles rectangle
            foreach (var rectangle in selectedTiles.Keys)
            {
                // Get the tile by selecting the start position of the rectangle
                Tile tile = ChunkManager.TileAtWorldPosition(rectangle.X, rectangle.Y);

                if (tile != null && tile.IsOccupied)
                {
                    if (tile.Flora != null)
                    {
                        _terrainManager.RemoveFlora(tile);
                    }
                    else if (tile.Wall != null)
                    {
                        _terrainManager.RemoveWall(tile);
                    }
                }
            }

            _selectingType  = SelectingAreaType.None;
            GameState.State = GameStateType.PLAYING;
        }
Esempio n. 5
0
        /// <summary>
        /// Called when a [selection is selected].
        /// </summary>
        /// <param name="selectedTiles">The selected tiles.</param>
        private void OnSelectionSelected(Dictionary <Rectangle, Texture2D> selectedTiles)
        {
            // If the name of the element that was passed through OnBuildWall is build wood/brick/stone
            if (_buildSelectionName == GameText.BuildMenu.BUILDWOODWALL || _buildSelectionName == GameText.BuildMenu.BUILDBRICKWALL || _buildSelectionName == GameText.BuildMenu.BUILDSTONEWALL)
            {
                // For each rectangle in selected tiles rectangle
                foreach (var rectangle in selectedTiles.Keys)
                {
                    // Get the tile by selecting the start position of the rectangle
                    Tile tile = ChunkManager.TileAtWorldPosition(rectangle.X, rectangle.Y);

                    if (tile != null)
                    {
                        Wall wall;
                        if (_buildSelectionName == GameText.BuildMenu.BUILDWOODWALL)
                        {
                            wall = new Wall(tile.Position, LinkedSpriteType.WoodWall);
                            _jobManager.CreateJob(wall, tile);
                        }
                        else if (_buildSelectionName == GameText.BuildMenu.BUILDBRICKWALL)
                        {
                            wall = new Wall(tile.Position, LinkedSpriteType.BrickWall);
                            _jobManager.CreateJob(wall, tile);
                        }
                        else if (_buildSelectionName == GameText.BuildMenu.BUILDSTONEWALL)
                        {
                            wall = new Wall(tile.Position, LinkedSpriteType.StoneWall);
                            _jobManager.CreateJob(wall, tile);
                        }
                    }
                }
            }

            _selectingType  = SelectingAreaType.None;
            GameState.State = GameStateType.PLAYING;
        }
Esempio n. 6
0
 /// <summary>
 /// Called when [selection is cancelled].
 /// </summary>
 private void OnSelectionCancelled()
 {
     _selectingType  = SelectingAreaType.None;
     GameState.State = GameStateType.PLAYING;
 }