private void OnDecorationSelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     if (listViewDecorations.SelectedIndex == -1)
     {
         SelectPlaceDecoration(0);
     }
     else
     {
         if (mode == PlaceModes.PutAway)
         {
             Mode = PlaceModes.Place;
             foreach (Image image in decorationImages)
             {
                 image.IsHitTestVisible = false;
             }
         }
         else if (mode == PlaceModes.Move)
         {
             Mode = PlaceModes.Moving;
             foreach (Image image in decorationImages)
             {
                 image.IsHitTestVisible = false;
             }
         }
         SelectPlaceDecoration(((listViewDecorations.SelectedItem as Control).Tag as Decoration).ID);
     }
 }
        private void OnDecorationImageMouseDown(object sender, MouseButtonEventArgs e)
        {
            PlacedDecoration decoration = (sender as Image).Tag as PlacedDecoration;

            secretBase.PutAwayDecoration(decoration);
            for (int i = 0; i < decorationImages.Count; i++)
            {
                if (!secretBase.PlacedDecorations.Contains(decorationImages[i].Tag as PlacedDecoration))
                {
                    gridRoomContents.Children.Remove(decorationImages[i]);
                    decorationImages.RemoveAt(i);
                    i--;
                }
            }
            FillListViewItems();

            if (mode == PlaceModes.Move)
            {
                Mode = PlaceModes.Moving;
                foreach (Image image2 in decorationImages)
                {
                    image2.IsHitTestVisible = false;
                }
                SelectPlaceDecoration(decoration.ID);
            }
            UpdateDetails();
        }
 private void OnPlaceClicked(object sender, RoutedEventArgs e)
 {
     Mode = PlaceModes.Place;
     foreach (Image image in decorationImages)
     {
         image.IsHitTestVisible = false;
     }
     if (mode != PlaceModes.Place)
     {
         listViewDecorations.SelectedIndex = -1;
     }
 }
 private void OnPutAwayClicked(object sender, RoutedEventArgs e)
 {
     Mode = PlaceModes.PutAway;
     foreach (Image image in decorationImages)
     {
         image.IsHitTestVisible = true;
     }
     if (mode != PlaceModes.PutAway)
     {
         listViewDecorations.SelectedIndex = -1;
         imagePlace.Visibility             = Visibility.Hidden;
     }
 }
 private void OnMoveClicked(object sender, RoutedEventArgs e)
 {
     foreach (Image image in decorationImages)
     {
         image.IsHitTestVisible = true;
     }
     if (mode != PlaceModes.Move && mode != PlaceModes.Moving)
     {
         Mode = PlaceModes.Move;
         listViewDecorations.SelectedIndex = -1;
     }
     else
     {
         Mode = mode;
     }
 }
        private void OnRoomMouseDown(object sender, MouseButtonEventArgs e)
        {
            if ((mode == PlaceModes.Place || mode == PlaceModes.Moving) && selectedDecorationID != 0 && secretBase.CanPlaceDecoration(selectedDecorationID, (byte)hoverX, (byte)hoverY))
            {
                secretBase.PlaceDecoration(selectedDecorationID, (byte)hoverX, (byte)hoverY);

                BitmapSource decorationImage = ItemDatabase.GetDecorationFullSizeImageFromID(selectedDecorationID);
                Image        image           = new OpaqueClickableImage();
                image.Width   = decorationImage.PixelWidth;
                image.Height  = decorationImage.PixelHeight;
                image.Stretch = Stretch.None;
                image.Source  = decorationImage;
                if (ItemDatabase.GetDecorationFromID(selectedDecorationID).DataType == DecorationDataTypes.NoteMat && showNotes)
                {
                    image.Source = ResourceDatabase.GetImageFromName("NoteMat" + (selectedDecorationID - 51).ToString());
                }
                image.Margin = new Thickness(16 * (hoverX - SelectedDecorationData.OriginX), 16 * (hoverY - SelectedDecorationData.OriginY), 0, 0);
                image.HorizontalAlignment = HorizontalAlignment.Left;
                image.VerticalAlignment   = VerticalAlignment.Top;
                image.Tag = secretBase.PlacedDecorations[secretBase.SlotsUsed - 1];
                image.PreviewMouseDown += OnDecorationImageMouseDown;
                image.MouseEnter       += OnDecorationImageMouseEnter;
                image.MouseLeave       += OnDecorationImageMouseLeave;
                image.IsHitTestVisible  = false;
                decorationImages.Add(image);

                this.gridRoomContents.Children.Add(image);

                OrganizeZIndexes();

                SelectPlaceDecoration(0);
                FillListViewItems();

                if (mode == PlaceModes.Moving)
                {
                    Mode = PlaceModes.Move;
                    foreach (Image image2 in decorationImages)
                    {
                        image2.IsHitTestVisible = true;
                    }
                }
                UpdateDetails();
            }
        }
 private void SelectPlaceDecoration(byte id)
 {
     selectedDecorationID = id;
     if (id == 0)
     {
         imagePlace.Source     = null;
         imagePlace.Visibility = Visibility.Hidden;
     }
     else
     {
         BitmapSource bitmap = ItemDatabase.GetDecorationFullSizeImageFromID(id);
         imagePlace.Source = bitmap;
         imagePlace.Width  = bitmap.PixelWidth;
         imagePlace.Height = bitmap.PixelHeight;
         if (mode == PlaceModes.PutAway)
         {
             Mode = PlaceModes.Place;
         }
         foreach (Image image in decorationImages)
         {
             image.IsHitTestVisible = false;
         }
     }
 }