private IEnumerator DelayStart(AudienceMemberController theAudienceMember) { foreach (GameObject g in theAudienceMember.possibleIdleSprites) { g.SetActive(false); } theAudienceMember.focusedSprite.SetActive(false); if (theAudienceMember.success) { theAudienceMember.successSprite.SetActive(true); } else { theAudienceMember.failSprite.SetActive(true); } theAudienceMember.questionLeft.SetActive(false); theAudienceMember.questionRight.SetActive(false); yield return(new WaitForSeconds(0.5f)); theAudienceMember.spriteAnimController.SetTrigger("Hide"); yield return(new WaitForSeconds(0.5f)); OnAudienceDespawnEvent(theAudienceMember); GameObject.Destroy(theAudienceMember.gameObject); }
public void SpawnAudienceMember(GameObject specificAudienceMemberPrefab) { List <SpawnPoint> freeSpawns = new List <SpawnPoint>(); foreach (SpawnPoint sp in availableSpawnPoints) { if (!sp.IsBeingUsed) { freeSpawns.Add(sp); } } if (freeSpawns.Count > 0) { AudienceMemberController newAudienceMember = Instantiate(specificAudienceMemberPrefab, this.transform).GetComponent <AudienceMemberController>(); // Setting Position int pickedSpawn = Random.Range(0, freeSpawns.Count); SpawnPoint spawnPoint = freeSpawns[pickedSpawn]; newAudienceMember.transform.position = freeSpawns[pickedSpawn].transform.position; newAudienceMember.transform.rotation = Quaternion.identity; // Preventing Spawn Points from being used by more than one audience member spawnPoint.IsBeingUsed = true; spawnPoint.spawnedAudience = newAudienceMember; } else { // All Spawn Point Are Currently Being Used Debug.Log("Can't spawn audience member, all spawnpoints are being used"); } }
public override void UpdateState(AudienceMemberController theAudienceMember) { if (started && theAudienceMember.hasTimer) { theAudienceMember.currentTime += Time.deltaTime; // Updating UI float pos = theAudienceMember.currentTime / theAudienceMember.maxTime; Vector3 newScale = Vector3.one; newScale.x = pos; Color newColor = Color.Lerp(Color.green, Color.red, pos); theAudienceMember.leftFill.transform.localScale = newScale; theAudienceMember.leftFill.color = newColor; theAudienceMember.rightFill.transform.localScale = newScale; theAudienceMember.rightFill.color = newColor; // Checking Exit Condition if (theAudienceMember.currentTime > theAudienceMember.maxTime) { LevelManager.instance.IncreaseInstability(); theAudienceMember.ChangeState(AudienceStates.AUDIENCE_EXIT); } } }
public override void StartState(AudienceMemberController theAudienceMember) { if (!started) { theAudienceMember.StartCoroutine(StartAnim(theAudienceMember)); started = true; } }
private void CheckIfReset(AudienceMemberController despawningAudience) { if (despawningAudience == spawnedAudience) { Debug.Log("Freeing Spawn Point"); IsBeingUsed = false; spawnedAudience = null; } }
public void CloseUI(bool questionAnswered) { // End of dialogue tree interactingAudienceMember.success = questionAnswered; interactingAudienceMember.ChangeState(AudienceStates.AUDIENCE_EXIT); interactingAudienceMember = null; // Close All UI theQuestionAnswerUI.SetActive(false); theDialogueUI.SetActive(false); backgroundFade.SetActive(false); timerParent.SetActive(false); OnEventDialogueFinished?.Invoke(); }
/* * ======================================================================================================================================================================================================== * UI Access (General Opening & Closing) * ======================================================================================================================================================================================================== */ public bool OpenUI(AudienceMemberController openingAudienceMember) { // Preventing a new audience member from interacting with the UI if another is already focused if (interactingAudienceMember == null) { interactingAudienceMember = openingAudienceMember; // Set has answer options so open up question answer UI UpdateUI(interactingAudienceMember.theQuestion); StartCoroutine(DelayUIOpen(interactingAudienceMember.theQuestion)); return(true); } else { return(false); } }
private IEnumerator StartAnim(AudienceMemberController theAudienceMember) { // Randomize Sprite Colors int pickedColor = Random.Range(0, theAudienceMember.possibleColors.Length); foreach (GameObject g in theAudienceMember.possibleIdleSprites) { g.GetComponent <SpriteRenderer>().color = theAudienceMember.possibleColors[pickedColor]; } theAudienceMember.focusedSprite.GetComponent <SpriteRenderer>().color = theAudienceMember.possibleColors[pickedColor]; theAudienceMember.successSprite.GetComponent <SpriteRenderer>().color = theAudienceMember.possibleColors[pickedColor]; theAudienceMember.failSprite.GetComponent <SpriteRenderer>().color = theAudienceMember.possibleColors[pickedColor]; // Randomize Idle Sprite int pickedSprite = Random.Range(0, theAudienceMember.possibleIdleSprites.Length); for (int i = 0; i < theAudienceMember.possibleIdleSprites.Length; i++) { if (i == pickedSprite) { theAudienceMember.possibleIdleSprites[i].SetActive(true); } else { theAudienceMember.possibleIdleSprites[i].SetActive(false); } } yield return(new WaitForSeconds(1.0f)); if (theAudienceMember.transform.position.x < 0) { theAudienceMember.questionLeft.SetActive(false); theAudienceMember.questionRight.SetActive(true); } else { theAudienceMember.questionLeft.SetActive(true); theAudienceMember.questionRight.SetActive(false); } }
private IEnumerator StartAnim(AudienceMemberController theAudienceMember) { // Animation for moving away from background theAudienceMember.spriteAnimController.SetTrigger("Hide"); theAudienceMember.bubbleAnimController.SetTrigger("Interact"); if (theAudienceMember.hasTimer) { theAudienceMember.currentTime /= 2; } yield return(new WaitForSeconds(0.5f)); theAudienceMember.questionLeft.SetActive(false); theAudienceMember.questionRight.SetActive(false); // Moving to set position in world for asking question to the user Vector3 targetPos = GameObject.FindGameObjectWithTag("FocusedPoint").transform.position; theAudienceMember.transform.position = targetPos; // Changing sprite to talking sprite anim foreach (GameObject g in theAudienceMember.possibleIdleSprites) { g.SetActive(false); } theAudienceMember.focusedSprite.SetActive(true); // Anim for showing up to new focused position theAudienceMember.spriteAnimController.SetTrigger("Show"); // Changing layer so that the audience member appears in front of the background fade (foreground layer == 10) foreach (GameObject g in theAudienceMember.possibleIdleSprites) { g.layer = 10; } theAudienceMember.focusedSprite.layer = 10; theAudienceMember.successSprite.layer = 10; theAudienceMember.failSprite.layer = 10; }
public override void StartState(AudienceMemberController theAudienceMember) { // Getting the question to show if (theAudienceMember.useGlobalQuestionSet) { theAudienceMember.theQuestion = QuestionsManager.instance.GetQuestion(); } else { int pickedQuestion = Random.Range(0, theAudienceMember.possibleStartQuestions.Length); theAudienceMember.theQuestion = theAudienceMember.possibleStartQuestions[pickedQuestion]; } // Showing Question To Player if (QuestionUIManager.instance.OpenUI(theAudienceMember)) { theAudienceMember.StartCoroutine(this.StartAnim(theAudienceMember)); } else { theAudienceMember.ChangeState(AudienceStates.AUDIENCE_IDLE, false); } }
public override void StartState(AudienceMemberController theAudienceMember) { theAudienceMember.StartCoroutine(DelayStart(theAudienceMember)); }
public virtual void StartState(AudienceMemberController theAudienceMember) { }
public virtual void UpdateState(AudienceMemberController theAudienceMember) { }