protected override void OnMouseDown(MouseEventArgs e) { base.OnMouseDown(e); RoboField field = CalcFieldHit(CalcPointHit(e.Location)); if (field == null) { return; } if (e.Clicks > 1) { field.Rotate(); if (e.Button == MouseButtons.Right) { field.Rotate(); field.Rotate(); } } else { DoDragDrop(field, e.Button == MouseButtons.Left ? DragDropEffects.Copy : DragDropEffects.Move); } }
static FieldToolbox() { _fieldRepository = new List <RoboField>(); foreach (char encoded in BoardControl.IMAGENAMES.Keys.Where(elem => elem != 'X' && elem != 'B' && elem != 'a')) { _fieldRepository.Add(RoboField.DecodeField(encoded)); } }
public virtual void DoPaint(RoboField roboField, Graphics g, RectangleF bounds) { if (BoardControl.IMAGES == null) { return; } Image image = BoardControl.IMAGES[roboField.EncodedField]; g.DrawImage(image, bounds); }
protected override void OnMouseDown(MouseEventArgs e) { base.OnMouseDown(e); Point location = CalcPointHit(e.Location); RoboField field = CalcFieldHit(location); SelectedField = location; Refresh(); if (field == null) { return; } DoDragDrop(field, DragDropEffects.Copy); }
private void HandleDropRoboField(DragEventArgs drgevent, RoboField field) { Point target = CalcPointHit(this.PointToClient(new Point(drgevent.X, drgevent.Y))); if (target == GUIHelper.NULLPOINT) { return; } switch (drgevent.Effect) { case DragDropEffects.Copy: Board.SetField(RoboField.CreateField(field.FieldType), target.X + 1, target.Y + 1); break; case DragDropEffects.Move: Board.SetField(RoboField.CreateField(FieldType.Empty), field.X, field.Y); Board.SetField(field, target.X + 1, target.Y + 1); break; } }
protected RoboBoard GetBlockingBoard(RoboPosition ownPosition, IEnumerable <RoboPosition> allPlayers) { RoboBoard board = Board.CopyBoard(); if ((PluginSettings as RoboPlayerPluginSettings).PlayerCollision) { foreach (RoboPosition otherPosition in allPlayers) { if (ownPosition.Equals(otherPosition) || board.GetField(otherPosition).IsDestination || otherPosition.IsDead) { continue; } board.Fields[otherPosition.X, otherPosition.Y] = RoboField.CreateField(FieldType.WallDown | FieldType.WallUp | FieldType.WallLeft | FieldType.WallRight); } } return(board); }
public virtual void DoPaint(RoboField roboField, Graphics g) { DoPaint(roboField, g, g.ClipBounds); }