Exemple #1
0
    /// <summary>
    /// Write to FILE_PATH the data of borders
    /// </summary>
    public static void WriteBordersToFile()
    {
        // Add currently visible borders
        foreach (GameObject obj in bordersShown)
        {
            BorderStorage bs = obj.GetComponent <BorderStorage>();

            bordersNotShown.Add(bs.bsl);
        }

        string[] lines = new string[bordersNotShown.Count * 2 + 1];
        lines[0] = bordersNotShown.Count.ToString();

        // Order of data
        // Line 1: Count of borders
        // Others 1: CountOfBorderPoints borderPoint1x borderPoint 1y borderPoint 2x ... winType
        // Others 2: winLineStartX winLineStartY winLineEndX winLineEndY
        // Other 1 and two repeats countOfBorders times
        string s = "";

        for (int k = 0; k < bordersNotShown.Count; k++)
        {
            s = bordersNotShown[k].Points.GetLength(0) + " ";
            for (int i = 0; i < bordersNotShown[k].Points.GetLength(0); i++)
            {
                s += bordersNotShown[k].Points[i, 0] + " ";
                s += bordersNotShown[k].Points[i, 1] + (i == bordersNotShown[k].Points.Length - 1 ? "" : " ");
            }

            lines[1 + k * 2] = s + bordersNotShown[k].WinType.ToString();;
            lines[2 + k * 2] = bordersNotShown[k].WinLinePoints[0, 0] + " " + bordersNotShown[k].WinLinePoints[0, 1] + " " + bordersNotShown[k].WinLinePoints[1, 0] + " " + bordersNotShown[k].WinLinePoints[1, 1];
        }

        try {
            System.IO.File.WriteAllLines(FILE_PATH, lines);
        } catch (Exception e) {
            Debug.LogError(e.StackTrace);
        }

        // Remove the ones we added
        for (int i = 0; i < bordersShown.Count; i++)
        {
            bordersNotShown.RemoveAt(bordersNotShown.Count - 1);
        }
    }
Exemple #2
0
    /// <summary>
    /// Move border from notshown to shown
    /// </summary>
    /// <param name="index"></param>
    /// <param name="drawOut">Whether to play the drawin animation</param>
    protected static void MoveToShown(int index, bool drawOut = true)
    {
        // Remove index from the notshown list
        BorderStorageLogic bsl = bordersNotShown[index];

        bordersNotShown.RemoveAt(index);

        // Use pooling
        GameObject borderObject;

        if (notUsedBorders.Count > 0)
        {
            borderObject = notUsedBorders.Pop();
        }
        else
        {
            borderObject = Instantiate(borderPrefab);
        }

        // Set the gameobject active
        borderObject.SetActive(true);
        // Set parent
        borderObject.transform.parent = bordersParent.transform;

        // Set pos to middlepos
        borderObject.transform.position = new Vector3(bsl.MiddlePos[0], bsl.MiddlePos[1], borderObject.transform.position.z);

        // Store Data in Gameobject so later we can read it
        BorderStorage bs = borderObject.GetComponent <BorderStorage>();

        bs.SetData(bsl);

        LineRenderer lr = borderObject.GetComponent <LineRenderer>();

        // Whether we want to draw out the border or not
        if (drawOut)
        {
            // Draw line animation
            AnimatedLineRenderer lineRenderer = borderObject.GetComponent <AnimatedLineRenderer>();
            for (int i = 0; i < bsl.Points.GetLength(0); i++)
            {
                lineRenderer.Enqueue(bsl.GetPosAt(i));
            }
        }
        else
        {
            lr.positionCount = bsl.Points.GetLength(0);
            for (int i = 0; i < bsl.Points.GetLength(0); i++)
            {
                lr.SetPosition(i, bsl.GetPosAt(i));
            }
        }

        lr.material.SetColor("_EmissionColor", SignResourceStorage.Instance.GetColorRelatedTo(bsl.WinType));

        // Set color
        lr.startColor = SignResourceStorage.Instance.GetColorRelatedTo(bsl.WinType);
        lr.endColor   = SignResourceStorage.Instance.GetColorRelatedTo(bsl.WinType);

        // Win Line Animation
        AnimatedLineRenderer winLineRenderer = borderObject.transform.GetChild(0).gameObject.GetComponent <AnimatedLineRenderer>();

        winLineRenderer.Enqueue(new Vector3(bsl.WinLinePoints[0, 0], bsl.WinLinePoints[0, 1]));
        winLineRenderer.Enqueue(new Vector3(bsl.WinLinePoints[1, 0], bsl.WinLinePoints[1, 1]));


        // Move to list
        bordersShown.Add(borderObject);
    }