IEnumerator GenerateNumbers() { while (true) { ClassNumbers_Touch oNext = m_oNumber; while (true) { if (!oNext.enabled) { break; } if (oNext.m_oNext == null) { yield return(new WaitForSeconds(m_fDelay)); oNext = m_oNumber; continue; } oNext = oNext.m_oNext; } oNext.enabled = true; oNext.Initialize(); GenerateDividend(oNext); yield return(new WaitForSeconds(m_fDelay)); } }
private void DeactivateNumbers() { ClassNumbers_Touch oTemp = m_oNumber; while (oTemp != null) { oTemp.Initialize(); oTemp.enabled = false; oTemp = oTemp.m_oNext; } }
void Awake() { m_bStarted = false; if (!m_oCorrect) { m_oCorrect = GameObject.Find("Plane_Correct"); } if (!m_oWrong) { m_oWrong = GameObject.Find("Plane_Wrong"); } m_oRemaining = transform.FindChild("Remaining").GetComponent <TextMesh>(); m_oTimer = transform.FindChild("Time").GetComponent <TextMesh>(); m_oCountdown = GameObject.Find("Countdown").GetComponent <TextMesh>(); m_oScore = GameObject.Find("Score").GetComponent <TextMesh>(); GameObject goTemp; ClassNumbers_Touch oTemp = m_oNumber; for (int n = 0; n < m_nMaxNumbers - 1; ++n) { goTemp = GameObject.Instantiate(oTemp.gameObject) as GameObject; goTemp.transform.parent = this.transform; goTemp.transform.localScale = Vector3.one; oTemp.m_oNext = goTemp.GetComponent <ClassNumbers_Touch>(); oTemp.m_oNext.Initialize(); oTemp = oTemp.m_oNext; } if (m_oBoxes.Length == 0) { GameObject[] agoTemp = GameObject.FindGameObjectsWithTag("Puzzle"); m_oBoxes = new ClassBoxes[agoTemp.Length]; for (int n = 0; n < agoTemp.Length; ++n) { m_oBoxes[n] = agoTemp[n].GetComponent <ClassBoxes>(); } } m_nScore = 0; m_nSavedRemaining = m_nRemaining; m_nDivisors = new int[m_oBoxes.Length]; }
private void GenerateDividend(ClassNumbers_Touch _oTarget) { int nSolution = Random.Range(0, m_nDivisors.Length); int nDividend = m_nDivisors[nSolution]; int nMultiplier = Random.Range(1, m_nMultiplierLimit + 1); if (nDividend > 0) { while (true) { bool bTemp = true; for (int n = 0; n < m_nDivisors.Length; ++n) { if (m_nDivisors[n] == nDividend) { continue; } if (nMultiplier == m_nDivisors[n]) { bTemp = false; ++nMultiplier; } } if (bTemp) { break; } } _oTarget.m_nNumber = nDividend * nMultiplier; } else { nDividend = Random.Range(1, m_nBaseNumberETC * nMultiplier); while (true) { bool bTemp = true; for (int n = 0; n < m_nDivisors.Length; ++n) { if (m_nDivisors[n] < 2) { continue; } if (nDividend % m_nDivisors[n] == 0) { bTemp = false; ++nDividend; } } if (bTemp) { break; } } _oTarget.m_nNumber = nDividend; } _oTarget.m_nSolution = m_oBoxes[nSolution].m_nSolution; _oTarget.UpdateText(); }