Beispiel #1
0
    /// <summary>
    /// Compares the plate bricks and visual bricks and updates the plate accordingly
    /// </summary>
    private void CompareLists()
    {
        List <Brick> bricksToRemove = new List <Brick>();

        foreach (Brick plateBrick in bricksOnPlate)
        {
            // Try and find it in the latest bricks on plate
            BrickVisual brickInLatestVisuals = latestBrickVisuals.Find(x => (x.type == plateBrick.type) && (x.position[0] == plateBrick.position[0]) && (x.position[1] == plateBrick.position[1]) && (x.colour == plateBrick.colour));

            // If brick found on plate in visual bricks
            if (brickInLatestVisuals != null)
            {
                // Check if the usernames lists are the same
                bool listEqual = VisuliserCalculations.CompareStringLists(brickInLatestVisuals.users, plateBrick.users);
                if (listEqual == false)
                {
                    brickInLatestVisuals = null;
                }
            }

            // If its not there then remove the plate brick
            if (brickInLatestVisuals == null)
            {
                bricksToRemove.Add(plateBrick);
            }
        }

        foreach (Brick brick in bricksToRemove)
        {
            RemoveBrick(brick);
        }


        foreach (BrickVisual visualBrick in latestBrickVisuals)
        {
            // Try and find it in the latest bricks on plate
            Brick brickOnPlate = bricksOnPlate.Find(x => (x.type == visualBrick.type) && (x.position[0] == visualBrick.position[0]) && (x.position[1] == visualBrick.position[1]) && (x.colour == visualBrick.colour));

            // If brick found on plate in visual bricks
            if (brickOnPlate != null)
            {
                // Check if the usernames lists are the same
                bool listEqual = VisuliserCalculations.CompareStringLists(brickOnPlate.users, visualBrick.users);
                if (listEqual == false)
                {
                    brickOnPlate = null;
                }
            }

            // If its not there then add the brick to the plate
            if (brickOnPlate == null)
            {
                AddBrick(visualBrick.type, visualBrick.position, visualBrick.colour, visualBrick.users);
            }
        }
    }
Beispiel #2
0
    public void UpdateBuildPlate()
    {
        // Get latest model from API
        Model latestModel = api.latestModel;

        // Convert model to list of latest brick visuals
        latestBrickVisuals = VisuliserCalculations.ExtractBricksFromModel(latestModel);
        Debug.Log("Updated Build Plate");

        CompareLists();
        int brickQuant = latestBrickVisuals.Count;

        SetPrice(brickQuant * 5);
    }
    private void Start()
    {
        bool result = VisuliserCalculations.CompareStringLists(usersA, usersB);

        Debug.Log(result);
    }