//turn //a turn represents one complete interaction cycle //fade in, select destination, fade out, update position private IEnumerator Turn() { //toggle flag _IsInputEnabled = true; rotate.IsInputEnabled = _IsInputEnabled; //fade in fade.ToggleFade(); //disable previously selected object _prevObj.GetComponent<ButtonStates>().SetDisabled(); //fade delay yield return new WaitForSeconds(fade.duration); //enable all buttons EnableButtons(); //while while (_IsInputEnabled == true) { //store selected object GameObject obj = null; //select object yield return StartCoroutine(move.WaitForInput(value => obj = value)); //check object if (obj != null && obj.GetComponent<ButtonStates>().currentState != ButtonStates.State.Disabled) { //toggle flag _IsInputEnabled = false; rotate.IsInputEnabled = _IsInputEnabled; //disable all buttons DisableButtons(); //fade out fade.ToggleFade(); //fade delay yield return new WaitForSeconds(fade.duration); //move to object move.MoveTo(obj); //check tutorial visibility CheckTutorialVisibility(obj); //update previous object _prevObj = obj; } } //start next turn StartCoroutine(Turn()); }
//start turn public IEnumerator StartTurn() { //reset selected object _selectObj = null; //fade in fade.ToggleFade(); //delay yield return new WaitForSeconds(fade.duration); //enable interactive objects EnableInteractives(); //disable position object _posObj.GetComponent<TouchStates>().SetDisabled(); //enable input IsInputEnabled = true; }