Example #1
0
        private void ApplySearchFilter()
        {
            if (string.IsNullOrWhiteSpace(SearchTextBox.Text) && IsListFiltered)
            {
                if (FilteredBrickList != null && FilteredBrickList.IsSorted)
                {
                    BrickList.ApplySort(FilteredBrickList.PropertyDescriptor, FilteredBrickList.SortDirection);
                }

                BrickGridView.DataSource = BrickList;
                FilteredBrickList.Clear();
                IsListFiltered = false;
                return;
            }

            FilteredBrickList = new SortableBindingList <BrickInfo>(
                BrickList.Where(x => IsBrickVisible(x)).ToList());

            if (BrickList.IsSorted)
            {
                FilteredBrickList.ApplySort(BrickList.PropertyDescriptor, BrickList.SortDirection);
            }

            BrickGridView.DataSource = FilteredBrickList;
            IsListFiltered           = true;
        }
Example #2
0
 /// <summary>
 /// Use for intialization
 /// </summary>
 void Awake()
 {
     if (!instance)
     {
         instance = this;
     }
 }
Example #3
0
        private void FillValidatedParts(bool onlyOnce = false)
        {
            var validBricks = BrickListCache.GetValidatedBricks();
            var newBricks   = validBricks.Except(BrickList)
                              .OrderBy(x => x.PartId).ToList();

            const int MAX_ADD = 200;

            //add items in batches to prevent freezing the window
            while (newBricks.Count > 0)
            {
                var range = newBricks.Take(MAX_ADD).ToList();

                BrickList.AddRange(range);
                if (IsListFiltered)
                {
                    FilteredBrickList.AddRange(range.Where(x => IsBrickVisible(x)));
                }

                newBricks.RemoveRange(0, range.Count);

                if (onlyOnce)
                {
                    break;
                }

                if (newBricks.Count > 0)
                {
                    Application.DoEvents();
                }
            }
        }
Example #4
0
    void FloodFill(GemBrick node)
    {
        List <GemBrick> gemList = new List <GemBrick>();

        if (node.brickType != BrickList.BRICK_TYPE.NONE)
        {
            return;
        }
        int x = 0, y = 0;

        //RIGHT CHECK
        for (x = node.colID; x < gems[node.rowID].Count; x++)
        {
            if (BrickList.CheckIsNULL(ref gemList, gems[node.rowID][x]))
            {
                break;
            }
        }

        //LEFT CHECK
        for (x = node.colID; x >= 0; x--)
        {
            if (BrickList.CheckIsNULL(ref gemList, gems[node.rowID][x]))
            {
                break;
            }
        }

        //TOP CHECK
        for (y = node.rowID; y < gems.Count; y++)
        {
            if (BrickList.CheckIsNULL(ref gemList, gems[y][node.colID]))
            {
                break;
            }
        }

        //BOTTOM CHECK
        for (y = node.rowID; y >= 0; y--)
        {
            if (BrickList.CheckIsNULL(ref gemList, gems[y][node.colID]))
            {
                break;
            }
        }

        //FINISH CHECK
        FinishCheckGem(gemList);
    }
Example #5
0
    public static string ExportBRKFromBricklist(BrickList bl)
    {
        string export = "";

        for (int i = 0; i < bl.bricks.Length; i++)
        {
            export += ExportBrick(bl.bricks[i].ToBrick());
            if (i < bl.bricks.Length - 1)
            {
                export += "\n";
            }
        }

        return(export);
    }
Example #6
0
    public BrickList ParseClipboard()
    {
        BrickList returnList = new BrickList();
        string    text       = Helper.ReadClipboard();

        if (text.StartsWith("{\"bricks\":"))   // brickbuilder json clipboard format
        {
            returnList = JsonUtility.FromJson <BrickList>(text);
        }
        else
        {
            try {
                returnList = MapParser.ParseBRKBricks(text);
            } catch (Exception e) {
                Debug.LogException(e);
            }
        }
        return(returnList);
    }
Example #7
0
        private void FillValidatedParts(bool onlyOnce = false)
        {
            var validBricks = BrickListCache.GetValidatedBricks();
            var newBricks   = validBricks.Except(BrickList)
                              .OrderBy(x => x.PartId).ToList();

            const int MAX_ADD = 200;

            //add items in batches to prevent freezing the window
            while (newBricks.Count > 0)
            {
                var range        = newBricks.Take(MAX_ADD).ToList();
                var curScrollRow = BrickGridView.FirstDisplayedScrollingRowIndex;
                IsUpdatingList = true;
                BrickList.AddRange(range);
                if (IsListFiltered)
                {
                    FilteredBrickList.AddRange(range.Where(x => IsBrickVisible(x)));
                }

                if (curScrollRow >= 0 && curScrollRow != BrickGridView.FirstDisplayedScrollingRowIndex)
                {
                    //fix to prevent scrolling back to first row
                    BrickGridView.FirstDisplayedScrollingRowIndex = curScrollRow;
                }

                IsUpdatingList = false;
                newBricks.RemoveRange(0, range.Count);

                if (onlyOnce)
                {
                    break;
                }

                if (newBricks.Count > 0)
                {
                    Application.DoEvents();
                }
            }
        }
Example #8
0
        private void StartLoadingBricks()
        {
            if (BrickListCache.IsCacheDirty ||
                BrickListCache.IsCacheEmpty)
            {
                LoadingProgressBar.Visible = true;
                LoadingProgressBar.Style   = ProgressBarStyle.Marquee;
                //TotalBricksLoaded = 0;
                CTS = new CancellationTokenSource();
                BrickLoadingTask = Task.Factory.StartNew(() =>
                                                         BrickListCache.RebuildCache(CTS.Token)

                                                         );
                RefreshTimer.Start();
            }

            if (!BrickListCache.IsCacheEmpty)
            {
                BrickList.Clear();
                FillValidatedParts(BrickLoadingTask != null);
            }
        }
Example #9
0
    // this is designed for pasting stuff copied in the workshop - no group support, no environment settings, only bricks
    public static BrickList ParseBRKBricks(string text)
    {
        List <BrickData> bricks = new List <BrickData>();

        string[] lines = text.Split(new string[] { "\r\n", "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries);

        for (int i = 0; i < lines.Length; i++)
        {
            string line = lines[i].Trim();
            if (line[0] != '+')
            {
                // defining brick
                BrickData brick     = new BrickData();
                float[]   brickInfo = Helper.StringToFloatArray(line);
                brick.Position = new Vector3(brickInfo[0], brickInfo[1], brickInfo[2]);
                brick.Scale    = new Vector3(brickInfo[3], brickInfo[4], brickInfo[5]);
                brick.ConvertTransformToUnity();
                brick.BrickColor   = new Color(brickInfo[6], brickInfo[7], brickInfo[8]);
                brick.Transparency = brickInfo[9];

                bricks.Add(brick);
            }
            else
            {
                // defining brick properties
                BrickData brick = bricks[bricks.Count - 1];
                if (line.StartsWith("+NAME"))
                {
                    if (line.Length == 5)
                    {
                        // the brick doesn't have a name for some reason
                        brick.Name = "";
                    }
                    else
                    {
                        brick.Name = line.Substring(6);
                    }
                }
                else if (line.StartsWith("+ROT"))
                {
                    brick.Rotation = (int.Parse(line.Substring(5), CultureInfo.InvariantCulture) * -1).Mod(360);
                }
                else if (line.StartsWith("+SHAPE"))
                {
                    brick.Shape = (int)BB.GetShape(line.Substring(7));
                }
                else if (line.StartsWith("+NOCOLLISION"))
                {
                    brick.Collision = false;
                }
                else if (line.StartsWith("+MODEL"))
                {
                    brick.Model = line.Substring(7);
                }
                else if (line.StartsWith("+CLICKABLE"))
                {
                    brick.Clickable = true;
                }
                bricks[bricks.Count - 1] = brick; // i guess i gotta do this
            }
        }

        BrickList returnBL = new BrickList();

        returnBL.bricks = bricks.ToArray();
        return(returnBL);
    }
Example #10
0
 public void Start()
 {
     Clipboard = new BrickList();
 }