IEnumerator GenerateNumbers() { while (true) { ClassNumbers 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 oTemp = m_oNumber; while (oTemp != null) { 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>(); GameObject goTemp; ClassNumbers 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>(); 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_nDivisors = new int[m_oBoxes.Length]; }
private void GenerateDividend(ClassNumbers _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; } Debug.Log( m_nDivisors[nSolution].ToString() + ": " + _oTarget.m_nNumber.ToString() ); _oTarget.m_nSolution = nSolution; _oTarget.UpdateText(); }
private void GenerateDividend(ClassNumbers _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; } Debug.Log(m_nDivisors[nSolution].ToString() + ": " + _oTarget.m_nNumber.ToString()); _oTarget.m_nSolution = nSolution; _oTarget.UpdateText(); }