/// <summary> /// Checks for input to draw, erase or select tiles using the mouse. /// </summary> private static void CheckForMouseInput() { _mouseRectInGameWorld = InputSystem.GetMouseRectGameWorld(); IndexOfMouse = CalcHelper.GetIndexInGameWorld(_mouseRectInGameWorld.X, _mouseRectInGameWorld.Y); if (!IsIntersectingUi()) { if (InputSystem.IsLeftMousePressed() && InputSystem.IsRightMousePressed()) { return; } if (InputSystem.IsLeftMousePressed()) { if (Brush.CurrentBrushMode == Brush.BrushMode.Build && lastAddedTile != IndexOfMouse) { lastAddedTile = IndexOfMouse; lastRemovedTile = -1; UpdateSelectedTiles(SelectedId); } else if (Brush.CurrentBrushMode == Brush.BrushMode.Erase && lastRemovedTile != IndexOfMouse) { lastRemovedTile = IndexOfMouse; lastAddedTile = -1; UpdateSelectedTiles(0); } else if (Brush.CurrentBrushMode == Brush.BrushMode.Select) { Tile tile = GameWorld.GetTile(IndexOfMouse); tile.InteractInEditMode(); } } if (InputSystem.IsRightMousePressed()) { if (!OnWallMode) { ChangeWallModeTo(true); } if (Brush.CurrentBrushMode == Brush.BrushMode.Build && lastAddedTile != IndexOfMouse) { // Entities cannot be placed in wall mode. if ((int)SelectedId < 200) { lastAddedTile = IndexOfMouse; lastRemovedTile = -1; UpdateSelectedTiles(SelectedId); } } else if (Brush.CurrentBrushMode == Brush.BrushMode.Erase && lastRemovedTile != IndexOfMouse) { lastRemovedTile = IndexOfMouse; lastAddedTile = -1; UpdateSelectedTiles(0); } } else if (InputSystem.IsMiddleMousePressed()) { TileType lastSelectedId = SelectedId; SelectedId = GameWorld.WorldData.TileIDs[IndexOfMouse]; if (SelectedId == 0) { SelectedId = GameWorld.WorldData.WallIDs[IndexOfMouse]; } if (SelectedId != 0) { HotBar.AddToHotBarFromWorld(SelectedId); Brush.ChangeBrushMode(Brush.BrushMode.Build); } else { SelectedId = lastSelectedId; } } else { if (OnWallMode) { ChangeWallModeTo(false); } } } }