private void PlaceableControl_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { RoomPlanViewModel vm = DataContext as RoomPlanViewModel; if (selectedTileControl != null) { updateTile = false; selectedTileControl.Background = Brushes.Transparent; selectedTileControl = null; vm.SelectedTileAssignment = null; updateTile = true; } if (selectedPlaceableControl != null) { selectedPlaceableControl.Background = Brushes.Transparent; } PlaceableControl placeableControl = sender as PlaceableControl; PlaceableAssignment placeableAssignment = vm.RoomPlan.PlaceableAssignments.FirstOrDefault(x => x.Control.Tag == placeableControl.Tag); vm.SelectedPlaceableAssignment = placeableAssignment; placeableControl.Background = highlightColor; selectedPlaceableControl = placeableControl; updateTile = false; vm.SelectedAvailableTile = null; updateTile = true; vm.SelectedTabIndex = 2; }
private void RemovePlaceable(PlaceableControl placeableControl) { RoomPlanViewModel vm = DataContext as RoomPlanViewModel; vm.RoomPlan.PlaceableAssignments.Remove(placeableControl.PlaceableAssignment); grid.Children.Remove(placeableControl); vm.SelectedPlaceableAssignment = null; selectedPlaceableControl = null; }
private void TileControl_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { RoomPlanViewModel vm = DataContext as RoomPlanViewModel; if (sender is TileControl tileControl) { if (!vm.IsRoomDrawEnabled) { if (selectedPlaceableControl != null) { selectedPlaceableControl.Background = Brushes.Transparent; selectedPlaceableControl = null; vm.SelectedPlaceableAssignment = null; } if (selectedTileControl != null) { selectedTileControl.Background = Brushes.Transparent; } TileAssignment tileAssignment = tileControl.TileAssignment; vm.SelectedTileAssignment = tileAssignment; tileControl.Background = highlightColor; selectedTileControl = tileControl; updateTile = false; updateTile = true; vm.SelectedTabIndex = 1; if (tileAssignment.TileGuid != null) { string tileGuid = tileAssignment.TileGuid; vm.SelectedCollectionSet = App.LoadedCollections.FirstOrDefault(x => x.TileFile.Data.Any(y => y.Guid == tileGuid)); vm.SelectedAvailableTile = vm.CollectionTiles.FirstOrDefault(x => x.Guid == tileGuid); } else { vm.SelectedAvailableTile = vm.CollectionTiles.FirstOrDefault(); } } else { predictInnerRoomTimer.Stop(); predictInnerRoomTimer.Start(); if (!drawRoomSelectedTiles.Any(x => x.Tag.ToString() == tileControl.Tag.ToString())) { tileControl.Background = drawRoomColor; drawRoomSelectedTiles.Add(tileControl); confirmDrawRoom.IsEnabled = true; } } } }
private void RoomDraw_CheckedChanged(object sender, RoutedEventArgs e) { RoomPlanViewModel vm = DataContext as RoomPlanViewModel; bool roomDrawEnabled = vm.IsRoomDrawEnabled; foreach (PlaceableAssignment assignment in vm.RoomPlan.PlaceableAssignments) { assignment.Control.IsHitTestVisible = !roomDrawEnabled; } if (roomDrawEnabled) { if (selectedPlaceableControl != null) { selectedPlaceableControl.Background = Brushes.Transparent; selectedPlaceableControl = null; vm.SelectedPlaceableAssignment = null; } if (selectedTileControl != null) { updateTile = false; selectedTileControl.Background = Brushes.Transparent; selectedTileControl = null; vm.SelectedTileAssignment = null; updateTile = true; } } else { foreach (TileControl tileControl in drawRoomSelectedTiles) { tileControl.Background = Brushes.Transparent; } drawRoomSelectedTiles.Clear(); foreach (TileAssignment tileassignment in inRoomTiles) { tileassignment.Control.Background = Brushes.Transparent; } inRoomTiles.Clear(); confirmDrawRoom.IsEnabled = false; noRoomError.Visibility = Visibility.Visible; } }
private void Placeables_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e) { if (sender is DataGridRow clickedRow && clickedRow.DataContext is Placeable placeable) { RoomPlanViewModel vm = DataContext as RoomPlanViewModel; PlaceableControl placeableControl = new PlaceableControl(placeable, canvasBounds) { Width = placeable.Width, Height = placeable.Height, Tag = placeableTagIndex, IsHitTestVisible = !vm.IsRoomDrawEnabled }; placeableTagIndex++; placeableControl.MouseLeftButtonDown += PlaceableControl_MouseLeftButtonDown; Canvas.SetLeft(placeableControl, placeableControl.PlaceableAssignment.PositionX); Canvas.SetTop(placeableControl, placeableControl.PlaceableAssignment.PositionY); grid.Children.Add(placeableControl); vm.RoomPlan.PlaceableAssignments.Add(placeableControl.PlaceableAssignment); } }
private void AddTilesAndPlaceables(bool addRoomBorder = true) { RoomPlanViewModel vm = DataContext as RoomPlanViewModel; canvasBounds = new Size(vm.RoomPlan.TilesX * 50 + 2, vm.RoomPlan.TilesY * 50 + 2); grid.Width = canvasBounds.Width; grid.Height = canvasBounds.Height; if (addRoomBorder) { var lastAssignment = vm.RoomPlan.TileAssignments.LastOrDefault(); var brushColor = Brushes.Gray.Color; Border roomBorder = new Border() { Name = "roomBorder", Width = canvasBounds.Width, Height = canvasBounds.Height, BorderBrush = new SolidColorBrush(Color.FromArgb(128, 255, 255, 0)), BorderThickness = new Thickness(2) }; grid.Children.Add(roomBorder); } // Generate tile control for every assignment without control foreach (TileAssignment tileAssignment in vm.RoomPlan.TileAssignments.Where(x => x.Control == null)) { if (grid.Children.OfType <TileControl>().Any(t => t.TileAssignment.X == tileAssignment.X && t.TileAssignment.Y == tileAssignment.Y)) { continue; } TileControl tileControl = new TileControl(tileAssignment) { Width = 54, Height = 54, Tag = tileTagIndex }; tileControl.MouseLeftButtonDown += TileControl_MouseLeftButtonDown; tileControl.MouseRightButtonDown += TileControl_MouseRightButtonDown; tileControl.MouseEnter += TileControl_MouseEnter; tileControl.ChangeObserved += ChangeManager_ChangeObserved; tileTagIndex++; Canvas.SetLeft(tileControl, tileAssignment.CanvasX); Canvas.SetTop(tileControl, tileAssignment.CanvasY); tileAssignment.SetControl(tileControl); grid.Children.Add(tileControl); } // Generate placeable control for every assignment without control foreach (PlaceableAssignment placeableAssignment in vm.RoomPlan.PlaceableAssignments.Where(x => x.Control == null)) { PlaceableControl placeableControl = new PlaceableControl(placeableAssignment, canvasBounds) { Width = placeableAssignment.Width, Height = placeableAssignment.Height, Tag = placeableTagIndex, IsHitTestVisible = !vm.IsRoomDrawEnabled }; placeableTagIndex++; placeableControl.MouseLeftButtonDown += PlaceableControl_MouseLeftButtonDown; placeableControl.ChangeObserved += ChangeManager_ChangeObserved; Canvas.SetLeft(placeableControl, placeableControl.PlaceableAssignment.PositionX); Canvas.SetTop(placeableControl, placeableControl.PlaceableAssignment.PositionY); grid.Children.Add(placeableControl); } }