Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
        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;
                    }
                }
            }
        }
Exemplo n.º 4
0
        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;
            }
        }
Exemplo n.º 5
0
        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);
            }
        }
Exemplo n.º 6
0
        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);
            }
        }