コード例 #1
0
        // добавление блока(контрол в окне)
        public void AddBlockImage(int x, int y)
        {
            ColumnDefinition gridCol = new ColumnDefinition();

            gridCol.Width = new GridLength(x * 32 + space, GridUnitType.Pixel);
            BlocksGrid.ColumnDefinitions.Add(gridCol);
            gridCols.Add(gridCol);

            Blocks_Image bi = new Blocks_Image();

            bi.Init(x * 32, y * 32);

            Grid.SetRow(bi, 0);
            Grid.SetColumn(bi, blocksList.Count);
            bi.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
            bi.VerticalAlignment   = System.Windows.VerticalAlignment.Top;
            //bi.Margin = new Thickness(0.5);

            bi.MouseUp += block_image_MouseUp;

            blocksList.Add(bi);
            BlocksGrid.Children.Insert(0, bi);
        }
コード例 #2
0
        public int lastBlock_image = -1; // последний выбраный блок-контрол в окне
        private void block_image_MouseUp(object sender, MouseButtonEventArgs e)
        {
            //int w = 0;
            Blocks_Image bi = null;

            if (sender.GetType() == typeof(Blocks_Image))
            {
                bi = (Blocks_Image)sender;
            }
            else
            {
                bi = blocksList[Grid.GetColumn(rectangle_cursor)];
            }

            int i = -1;

            for (i = 0; i < gridCols.Count; i++) // поиск блока-картинки
            {
                if (bi == blocksList[i])
                {
                    break;
                }
            }

            Gl.palette.Is_block_selected = true;

            int index = (int)BlockSlider.Value + i;

            if (lastBlock != index || Gl.palette.Is_block_selected == false)
            {
                //blocksList[i].MouseEnter -= block_MouseEnter;
                //blocksList[i].MouseLeave -= block_MouseLeave;
                reset_block_mouse_event();

                lastBlock_image = i;
                lastBlock       = index;
                Grid.SetColumn(rectangle_select, i);
                Grid.SetColumn(rectangle_cursor, i);
                //blocksList[i].MouseEnter += block_MouseEnter;
                //blocksList[i].MouseLeave += block_MouseLeave;
                blocksList[i].MouseMove    += block_MouseMove;
                rectangle_select.Width      = widths[index] * 32;
                rectangle_select.Height     = heights[index] * 32;
                rectangle_select.Visibility = System.Windows.Visibility.Visible;
                rectangle_cursor.Visibility = System.Windows.Visibility.Visible;

                UpdateBlockInMain();
                updateLabelInfo();

                //Gl.main.cursor_Block.ChangeBlock(bitmaps[index]);
                //Gl.palette.Is_block_selected = true;
                //Gl.palette.selected_block = index;
                //Gl.palette.block_width = widths[index];
                //Gl.palette.block_height = heights[index];
                //
                //Gl.main.CursorsUpdate();
                //Gl.main.selectedInfoUpdate();
            }
            else
            {
                Point p  = Mouse.GetPosition(bi);//MouseUtilities.CorrectGetPosition(canvas_Map);
                int   mx = (int)p.X;
                int   my = (int)p.Y;
                int   x  = mx / 32;
                int   y  = my / 32;

                if (x < widths[index] && y < heights[index])
                {
                    if (e.ChangedButton == MouseButton.Left)
                    {
                        // установить тайл
                        if (Gl.palette.selected_sprite != -1)
                        {
                            setTileToBlock(x, y, lastBlock, Gl.palette.selected_sprite, true);
                            blocksList[i].ChangeBlock(bitmaps[index]);
                            Gl.main.cursor_Block.ChangeBlock(bitmaps[index]);
                        }
                    }
                    else if (e.ChangedButton == MouseButton.Right)
                    {
                        // удалить тайл
                        setTileToBlock(x, y, lastBlock, -1, true);
                        blocksList[i].ChangeBlock(bitmaps[index]);
                        Gl.main.cursor_Block.ChangeBlock(bitmaps[index]);
                    }
                    else if (e.ChangedButton == MouseButton.Middle)
                    {
                        // пипетка
                        Scena scn     = Gl.curr_scena;
                        int   tmp_ind = scn.blocks[lastBlock][x, y].SpriteId;

                        if (tmp_ind != -1)
                        {
                            Gl.palette.selected_tile   = Gl.curr_scena.spriteSet[tmp_ind].TileId;
                            Gl.palette.selected_sprite = tmp_ind;
                            Gl.palette.UpdateGroundSelector(Gl.palette.selected_tile % 8, Gl.palette.selected_tile / 8);
                            Gl.palette.Is_block_selected = false;
                            Gl.main.CursorsUpdate();
                            Gl.main.selectedInfoUpdate();
                        }

                        // Окно тайлов.
                        Gl.tiles_window.SelectedTile   = Gl.palette.selected_tile;
                        Gl.tiles_window.SelectedSprite = Gl.palette.selected_sprite;
                        Gl.tiles_window.FullUpdate();
                    }
                }
            }
        }