private void GameSceneClick(object s, GameSceneZoneEventArgs e) { if (e.Button == MouseButtons.Left) // Левый клик { if (ButtonsSelector.IsSelected()) // Выбрано здание { if (_game.IsCellFree(e.HoverCellX, e.HoverCellY)) // есть здание { _game.Build(e.HoverCellX, e.HoverCellY, ButtonsSelector.ButtonName); ButtonsSelector.Deselect(); } else { MessageBox.Show("Здесь нельзя строить"); } } else // Наводим пустой курсор { if (_game.IsCellFree(e.HoverCellX, e.HoverCellY) == false) // есть здание { CellSelector.Select(e.HoverCellX, e.HoverCellY); } else { CellSelector.Deselect(); } } } if (e.Button == MouseButtons.Right) // Правый клик { CellSelector.Deselect(); } }
private Button ButtonsInitialization(Timer timer, String capture, int x, int y) { const int buttonSize = 100; Building buttonBuilding = new Building(capture); const int buildingIndent = (buttonSize - CellPainter.CellSize) / 2 + 2; Button.Draw drawNormal = (buttonX, buttonY, width, height) => { var color = CellPainter.NormalCellColor; MainForm.G.FillRectangle(new SolidBrush(color), buttonX - 1, buttonY - 1, width + 2, height + 2); BuildingPainter.Draw(buttonBuilding, buttonX + buildingIndent, buttonY + buildingIndent); }; Button.Draw drawHover = (buttonX, buttonY, width, height) => { var color = CellPainter.HoverCellColor; MainForm.G.FillRectangle(new SolidBrush(color), buttonX, buttonY, width, height); BuildingPainter.Draw(buttonBuilding, buttonX + buildingIndent, buttonY + buildingIndent); }; Button.Draw drawActive = (buttonX, buttonY, width, height) => { var color = CellPainter.GreenColor; MainForm.G.FillRectangle(new SolidBrush(color), buttonX, buttonY, width, height); BuildingPainter.Draw(buttonBuilding, buttonX + buildingIndent, buttonY + buildingIndent); }; var button = new Button(_mainForm, timer, X + x, Y + y, buttonSize, buttonSize, drawNormal, drawHover, drawActive); button.Click += (s, e) => { CellSelector.Deselect(); ButtonsSelector.Select(capture); }; _mainForm.MouseClick += (s, e) => { if (e.Button == MouseButtons.Right) { ButtonsSelector.Deselect(); } }; ButtonsSelector.Deselected += () => { button.Deactivate(); }; ButtonsSelector.Selected += (buttonName) => { if (capture != buttonName) { button.Deactivate(); } }; return(button); }
public LineTensioner(MainForm form, Game game, GameSceneZone gameSceneZone) { _game = game; _gameSceneZone = gameSceneZone; form.MouseDown += Form_MouseDown; form.MouseUp += Form_MouseUp; Connected += (fromX, fromY, toX, toY) => { CellSelector.Deselect(); if (gameSceneZone.IsMouseHover()) { var position = gameSceneZone.GetHoverCellCoordinate(); game.Connect(fromX, fromY, toX, toY); } }; }
private void Form_MouseUp(object sender, MouseEventArgs e) { if (_gameSceneZone.IsMouseHover() && e.Button == MouseButtons.Left) { var position = _gameSceneZone.GetHoverCellCoordinate(); var x = position.Item1; var y = position.Item2; if (X != x || Y != y) { CellSelector.Deselect(); } if (_game.IsCellFree(X, Y) == false && _game.IsCellFree(x, y) == false && (X != x || Y != y)) { Connect(X, Y, x, y); } else { Deselect(); } } }