コード例 #1
0
    void Start()
    {
        center = transform.position;

        long numb = RNJesus.gerRandomPowO2();

        centerObject = Instantiate(obj, center, transform.rotation);
        centerObject.GetComponent <Image>().color = new Color(Random.Range(0f, 1f), Random.Range(0f, 1f), Random.Range(0f, 1f));
        centerObject.transform.SetParent(transform);
        centerObject.transform.SetParent(panel);
        centerObject.transform.GetChild(0).GetComponent <TMPro.TextMeshProUGUI>().text = numb + "";

        BitObject bitObject = centerObject.GetComponent <BitObject>();

        bitObject.objectType = "bit";
        bitObject.value      = numb;

        centerObject.GetComponent <RectTransform>().localScale = new Vector3(1f, 1f, 1f);
        centerObject.GetComponent <BitObject>().enabled        = false;

        for (int i = 0; i < 2; i++)
        {
            addItem(true, "bit");
        }

        updatePoints();
    }
コード例 #2
0
    private IEnumerator addItemAsync(GameObject item, float delay = 0.2f)
    {
        bool chain = false;

        for (int i = 0; i < maxBits; i++)
        {
            yield return(new WaitForSeconds(delay));

            if (!checkForCombinations(chain))
            {
                break;
            }
            else
            {
                chain = true;
            }
        }

        centerObject = item;
        centerObject.SetActive(true);
        if (chainingBit != null)
        {
            chainingBit.objectType = "bit";
            chainingBit            = null;
        }

        yield return(new WaitForSeconds(delay));

        updatePoints();
        Debug.Log("Chain complete");
    }
コード例 #3
0
    private GameObject createBitObject(string explicitType = "random")
    {
        List <float> space = new List <float>();

        space.Add(0.8f);
        space.Add(0.2f);
        int  type = RNJesus.biasedRandom(space);
        long numb = RNJesus.gerRandomPowO2();

        GameObject bit = Instantiate(obj, new Vector3(0, 0, 0), transform.rotation);

        bit.GetComponent <Image>().color = new Color(Random.Range(0f, 1f), Random.Range(0f, 1f), Random.Range(0f, 1f));
        bit.transform.SetParent(transform);
        bit.transform.SetParent(panel);
        bit.GetComponent <RectTransform>().localScale = new Vector3(1f, 1f, 1f);
        BitObject bitObject = bit.GetComponent <BitObject>();

        switch (explicitType)
        {
        case "random": {
            if (type == 0)
            {
                bit.transform.GetChild(0).GetComponent <TMPro.TextMeshProUGUI>().text = numb + "";
                bitObject.objectType = "bit";
                bitObject.value      = numb;
            }
            else
            {
                bitObject.objectType = "combine";
                bit.transform.GetChild(0).GetComponent <TMPro.TextMeshProUGUI>().text = "+";
            }
            break;
        };

        case "bit": {
            bit.transform.GetChild(0).GetComponent <TMPro.TextMeshProUGUI>().text = numb + "";
            bitObject.objectType = "bit";
            bitObject.value      = numb;
            break;
        };

        case "combine": {
            bitObject.objectType = "combine";
            bit.transform.GetChild(0).GetComponent <TMPro.TextMeshProUGUI>().text = "+";
            break;
        };

        default: {
            bitObject.objectType = "bit";
            bit.transform.GetChild(0).GetComponent <TMPro.TextMeshProUGUI>().text = "+";
            bitObject.value = numb;
            break;
        };
        }

        return(bit);
    }
コード例 #4
0
    private bool checkForCombinations(bool chain = false)
    {
        for (int i = 0; i < objectList.Count; i++)
        {
            GameObject itm = objectList[i];

            if (itm.GetComponent <BitObject>().objectType != "bit")
            {
                int prev = (i - 1 > -1) ? i - 1 : objectList.Count - 1;
                int next = (i + 1 < objectList.Count) ? i + 1 : 0;
                int mid  = i;

                Debug.Log(prev + ", " + i + ", " + next + " => " + objectList[prev].GetComponent <BitObject>().value + ", " + objectList[next].GetComponent <BitObject>().value);

                if (objectList[prev].GetComponent <BitObject>().value == objectList[next].GetComponent <BitObject>().value)
                {
                    GameObject ref1 = objectList[prev];
                    GameObject ref2 = objectList[next];
                    GameObject ref3 = objectList[mid];

                    long val1 = ref1.GetComponent <BitObject>().value;
                    long val2 = ref2.GetComponent <BitObject>().value;

                    BitObject scriptRef = ref3.GetComponent <BitObject>();
                    scriptRef.objectType = "combine";

                    if (chain)
                    {
                        scriptRef.value = val1 * val2;
                        ref3.transform.GetChild(0).GetComponent <TMPro.TextMeshProUGUI>().text = scriptRef.value + "";
                        chainingBit = scriptRef;
                    }
                    else
                    {
                        scriptRef.value = val1 + val2;
                        ref3.transform.GetChild(0).GetComponent <TMPro.TextMeshProUGUI>().text = scriptRef.value + "";
                        chainingBit = null;
                    }

                    if (next > prev)
                    {
                        objectList.RemoveAt(next);
                        objectList.RemoveAt(prev);
                    }
                    else
                    {
                        objectList.RemoveAt(prev);
                        objectList.RemoveAt(next);
                    }

                    float angle = ((2f * Mathf.PI) / vertexCount) * mid;
                    ref1.GetComponent <BitObject>().lerpToPosition(angle);
                    ref2.GetComponent <BitObject>().lerpToPosition(angle);
                    Destroy(ref1, 0.2f);
                    Destroy(ref2, 0.2f);

                    vertexCount -= 2;
                    return(true);
                }
            }
        }
        return(false);
    }