public ScoreScreenManager(RoundManager rm, GameManager gm) { // setup m_MainObject = GameObject.Find("ScoreScreen"); m_State = ScoreScreenState.Setup; m_RoundManager = rm; m_ItemManager = m_RoundManager.Get_ItemManager(); m_GameManager = gm; // Camera m_Camera = m_MainObject.transform.Find("Score_Camera").GetComponent <Camera>(); m_Camera.enabled = false; m_CameraManager = rm.Get_Camera_Manager(); // Foreground and Background m_Background = m_MainObject.transform.Find("Backdrop").gameObject; m_Foreground = m_MainObject.transform.Find("Foreground").gameObject; m_confettiEffects = m_MainObject.transform.Find("ConfettiParticles").gameObject; m_dustEffect = m_MainObject.transform.Find("RoundEnd_Dust").GetComponent <ParticleSystem>(); m_source = m_MainObject.GetComponent <AudioSource>(); // Find all drop zones for (int i = 1; i < 5; i++) { // Populate drop zones m_DropZones.Add(m_MainObject.transform.Find("PlayerDropZone_" + i).gameObject); m_Winner_Text.Add(m_Foreground.transform.Find("Player" + i + "_WinText").GetComponent <Text>()); for (int badge = 1; badge <= 4; badge++) { m_Badge_Points.Add(GameObject.Find("Player" + badge + "_Badge")); } foreach (GameObject o in GameObject.FindGameObjectsWithTag("BADGE_IMAGE")) { m_Badges.Add(o); } } // turn off all winner texts foreach (Text t in m_Winner_Text) { t.enabled = false; } // turn off all badges foreach (GameObject o in m_Badges) { o.SetActive(false); } // Find all drop zone objects foreach (GameObject dz in m_DropZones) { m_Drop_Points.Add(dz.transform.Find("DropPoint")); m_Player_Points.Add(dz.transform.Find("PlayerPoint")); m_Winner_Points.Add(dz.transform.Find("PlayerWinnerPoint")); m_Trophies.Add(dz.transform.Find("Trophy").gameObject); List <GameObject> l_lights = new List <GameObject>(); for (int i = 1; i < 4; i++) { l_lights.Add(dz.transform.Find("Win_Light_" + i).gameObject); } m_Lights.Add(l_lights); } // turn all trophies and lights off foreach (GameObject t in m_Trophies) { t.SetActive(false); } foreach (List <GameObject> l_list in m_Lights) { foreach (GameObject l in l_list) { l.SetActive(false); } } SetupComplete = true; }
private void SetState(ScoreScreenState new_state) { // leave previous state LeaveState(); // change state m_State = new_state; switch (m_State) { case ScoreScreenState.Waiting: { m_Activated = false; break; } case ScoreScreenState.Setup: { // reset the flag so you know current setup is completed. SetupComplete = false; break; } case ScoreScreenState.Dropping: { // Reset all scores. List <AgentManager> new_list = m_GameManager.Get_Players(); for (int i = 0; i < m_GameManager.Player_Count(); i++) { m_Score_Values.Add(new_list[i].Get_Score()); } m_CameraManager.SetActiveCamera(m_Camera); List <AgentManager> players = m_GameManager.Get_Players(); // show players for (int i = 0; i < players.Count; i++) { AgentManager player = players[i]; player.Drop(false); player.Set_Default_State(); player.Set_Position(m_Player_Points[i].position); player.Set_Rotation(m_Player_Points[i].rotation); player.Set_Scale(2); player.Wake_Up(); } // starting to drop items, set up the timer if (m_Timer != null) { m_Timer.Reset(); m_Timer.Add(GLOBAL_VALUES.SCORE_SCREEN_DROP_SPEED, true); } else { m_Timer = new Timer(GLOBAL_VALUES.SCORE_SCREEN_DROP_SPEED, true); } m_source.clip = Resources.Load("Sound/snd_DrumRoll") as AudioClip; m_source.Play(); m_Background.transform.Find("TopBar").GetComponent <Animator>().SetTrigger("Activate"); m_Background.transform.Find("BottomBarPanel").transform.Find("BottomBar").GetComponent <Animator>().SetTrigger("Activate"); break; } case ScoreScreenState.Winner: { // starting to show the winner of the round screen // setup the timer if (m_Timer != null) { m_Timer.Reset(); m_Timer.Add(GLOBAL_VALUES.SCORE_SCREEN_BADGE_DELAY_AFTER_WINNER, true); } else { m_Timer = new Timer(GLOBAL_VALUES.SCORE_SCREEN_BADGE_DELAY_AFTER_WINNER, true); } // do the extra celebrations we want m_dustEffect.Play(); m_source.Stop(); m_source.PlayOneShot(Resources.Load("Sound/snd_DrumRollEnd") as AudioClip); m_source.loop = false; // TODO List <int> winners = Get_Winners(); List <AgentManager> players = m_GameManager.Get_Players(); foreach (int win_index in winners) { // Show trophy m_Trophies[win_index].SetActive(true); // Drop Confetti foreach (ParticleSystem p in m_confettiEffects.GetComponentsInChildren <ParticleSystem>()) { p.Play(); } // move player players[win_index].Set_Position(m_Winner_Points[win_index].position); players[win_index].Set_Rotation(m_Winner_Points[win_index].rotation); players[win_index].Give_Round_Win(); //FIX WAVE TO LOOP players[win_index].Get_Animator().SetTrigger(GLOBAL_VALUES.ANIM_TRIGGER_WAVE); m_Winner_Text[win_index].enabled = true; m_Winner_Text[win_index].text = players[win_index].Get_Name() + "\nWINS!"; // Show lights foreach (GameObject lo in m_Lights[win_index]) { lo.SetActive(true); } } break; } case ScoreScreenState.Badges: { // Show Badges Show_Badges(); // Setup Timing if (m_Timer != null) { m_Timer.Reset(); m_Timer.Add(GLOBAL_VALUES.SCORE_SCREEN_WAIT_TO_COMPLETE, true); } else { m_Timer = new Timer(GLOBAL_VALUES.SCORE_SCREEN_WAIT_TO_COMPLETE, true); } break; } case ScoreScreenState.Complete: { Close = true; m_CameraManager.SetActiveCamera(m_CameraManager.MainCamera()); foreach (GameObject item in m_DroppedItems) { GameObject.Destroy(item); } m_DroppedItems.Clear(); break; } default: { // THROW ERROR! throw new System.NotImplementedException("State missing in ScoreScreenManager.SetState() [" + new_state + "]"); } } }