/// <summary> /// Adds the components. /// </summary> public void Initialize() { _assetManager = new AssetManager(Game); _assetManager.Initialize(); _frameRateCounter = new FrameRateCounter(_assetManager, _spriteBatch); _camera = new Camera(Game); _chunkManager = new ChunkManager(Game, _spriteBatch, _camera, _assetManager); _mouseManager = new MouseManager(_camera); _playingStateInterface = new PlayingStateInterface(Game, _assetManager, _spriteBatch); _playingStateInterface.Initialize(); _terrainManager = new TerrainManager(_spriteBatch, _camera, _assetManager); _chunkManager.Initialize(); _jobManager = new JobManager(_terrainManager); _buildMenuManager = new BuildMenuManager(_spriteBatch, _camera, _playingStateInterface, _assetManager, _terrainManager, _jobManager); _npcManager = new NPCManager(_camera, _assetManager, _spriteBatch); _npcManager.Initialize(); _graph = new Graph(); }
/// <summary> /// Keeping up to date with the mouse clicks. /// </summary> /// <param name="currentMouseState">State of the current mouse.</param> public static void UpdateMouseClicks(MouseState currentMouseState) { if (currentMouseState.LeftButton == ButtonState.Pressed && _previousMouseState.LeftButton == ButtonState.Released) { // Only display info when not selecting/building stuff if (!IsMouseOverMenu() && GameState.State == GameStateType.PLAYING) { SelectionInfo selection = SelectedTileInfo(GetWorldMousePosition()); if (selection != null) { PlayingStateInterface.SelectedTileInfo(selection); } else { _playerSelection = null; } } } if (currentMouseState.RightButton == ButtonState.Pressed && _previousMouseState.RightButton == ButtonState.Released) { if (!IsMouseOverMenu() && GameState.State == GameStateType.PLAYING) { if (_playerSelection != null) { if (_playerSelection.Entities.Count != 0) { // Create an array where all items should fit in Minion[] minions = new Minion[_playerSelection.Entities.Count]; int count = 0; foreach (ISelectableInterface item in _playerSelection.Entities) { // Check if the item is a minion if (item.GetType() == typeof(Minion)) { minions[count] = (Minion)item; count++; } } // Check if minions were added to the array if (count > 0) { Vector2 position = GetWorldMousePosition(); Tile tile = ChunkManager.TileAtWorldPosition((int)position.X, (int)position.Y); if (tile != null) { // Move the last (visible) minion to the clicked tile NPCManager.MoveTo(minions.ElementAt(count - 1), tile); // TODO: Check if fully visible minion is the last one in the list } } } } } } }
/// <summary> /// Determines whether [is mouse over menu]. /// </summary> /// <returns> /// <c>true</c> if [is mouse over menu]; otherwise, <c>false</c>. /// </returns> public static bool IsMouseOverMenu() { return(PlayingStateInterface.IsMouseOverMenu()); }