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(); }
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"); }
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); }
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); }