Exemplo n.º 1
0
        void UpdateListView(object sender, EventArgs e)
        {
            // принуждаем обновить данные

            tileVariation = 0;
            tileTypeID    = GetSelTileTypeIndex();
            listTileImages.VirtualListSize = 0;
            listTileImages.VirtualListSize = GetVariationsForType(tileTypeID).Count;
            // если не создан
            if (listTileImages.LargeImageList == null)
            {
                listTileImages.LargeImageList = new ImageList();
            }
            // обновляем ImageList
            ImageList imglist = listTileImages.LargeImageList;

            imglist.Images.Clear();
            imglist.ImageSize = new Size(46, 46);
            List <uint> variations = GetVariationsForType(tileTypeID);
            // грузим только первые 90 картинок
            int varns = variations.Count;

            if (varns > 90)
            {
                varns = 90;
            }
            for (int varn = 0; varn < varns; varn++)
            {
                imglist.Images.Add(videoBag.GetBitmap((int)variations[varn]));
            }
        }
Exemplo n.º 2
0
        private void UpdateBtnImages(object sender, EventArgs e)
        {
            if (videoBag == null)
            {
                return;
            }

            if (numWallVariMax.Value < numWallVari.Value)
            {
                numWallVariMax.Value = numWallVari.Value;
            }

            ThingDb.Wall wall = ThingDb.Walls[GetSelWallTypeIndex()];
            // в движке Нокса зачем-то так
            int vari = (int)numWallVari.Value * 2;

            ThingDb.Wall.WallRenderInfo[] ria;
            Bitmap bitmap; int sprite; Button wallButton;

            byte material = GetSelWallTypeIndex();

            ria = wall.RenderNormal[0];
            int hoho = ria.Length;

            hoho = (hoho / 2) - 1;

            numWallVariMax.Maximum = 30;

            if (numWallVariMax.Value < numWallVari.Value)
            {
                numWallVariMax.Value = numWallVari.Value;
            }

            // для каждого направления добавляем картинку
            if (WallSelectButtons != null)
            {
                for (int facing = 0; facing < 13; facing++)
                {
                    //ria = wall.RenderBreakable[facing];
                    ria = wall.RenderNormal[facing];

                    wallButton = WallSelectButtons[facing];
                    if (ria.Length > vari)
                    {
                        sprite = ria[vari].SpriteIndex;
                        // если включена опция Fast preview (помогает понять направления стен) подменяем картинку
                        if (checkBlackWalls.Checked)
                        {
                            sprite = ThingDb.Walls[blackWallIndex].RenderNormal[facing][0].SpriteIndex;
                        }
                        // достаем картинку и включаем кнопку если такая стена существует
                        bitmap = videoBag.GetBitmap(sprite);
                        if (checkBlackWalls.Checked)
                        {
                            var shader = new render.BitmapShader(bitmap);
                            shader.LockBitmap();
                            shader.ColorShade(Color.Salmon, 0.25F);
                            bitmap = shader.UnlockBitmap();
                        }
                        wallButton.BackgroundImage = bitmap;
                        wallButton.Enabled         = true;
                        wallButton.BackColor       = btnColorGoodWall;
                        numWallVari.Maximum        = hoho;
                        numWallVariMax.Maximum     = hoho;
                        numWallVariMax.Value       = (sender.GetType().Name == "ComboBox") ? hoho : numWallVariMax.Value;
                    }
                    else
                    {
                        if (facing == 0)
                        {
                            numWallVari.Value--;
                            numWallVari.Maximum    = numWallVari.Value;
                            numWallVariMax.Maximum = numWallVari.Value;
                            return;
                        }

                        // значит что стены с такими парамиетрами не существует
                        wallButton.BackgroundImage = null;
                        wallButton.Enabled         = false;
                        wallButton.BackColor       = btnColorBadWall;
                    }
                }
            }
        }