public SecurityAI_Control(int?p_num, AgentManager manager) : base(p_num) { movement_timer = new global::Timer(1, true); heal_timer = new Timer(GLOBAL_VALUES.SECURITY_HEAL_DELAY, true); m_Path_Manager = GameObject.FindGameObjectWithTag(GLOBAL_VALUES.TAG_AI_MANAGER).GetComponent <Pathing_Manager>(); m_Manager = manager; m_ItemVision = m_Manager.Get_Object().transform.Find("Item_Vision").GetComponent <SecurityItemVision>(); m_PickupBox = m_Manager.Get_Object().GetComponentInChildren <PickupBox>(); m_State = Security_State.Patrol; m_Alert_Object = m_Manager.Get_Object().transform.Find("Security_Alert").gameObject; m_ChaseEffect = m_Manager.Get_Object().transform.Find("Angry").gameObject.GetComponent <ParticleSystem>(); m_Alert_Object.SetActive(false); }
private void Set_State(Security_State new_state) { Leave_State(); m_State = new_state; switch (m_State) { // code transitions out of current state case Security_State.Patrol: { m_Enemy_Agent = null; m_Enemy_Position = null; m_Alert_Object.SetActive(false); m_ChaseEffect.Stop(); break; } case Security_State.Catch: { m_Enemy_Agent = null; m_Enemy_Position = null; m_Alert_Object.SetActive(false); m_ChaseEffect.Stop(); break; } case Security_State.Chase: { m_Alert_Object.SetActive(true); m_Alert_Object.transform.Find("Security_Alert_Background").GetComponent <SpriteRenderer>().color = GLOBAL_VALUES.COLOR_NUMBERS[m_Enemy_Agent.Get_Color()]; m_ChaseEffect.Play(); break; } case Security_State.Attack: { m_Alert_Object.SetActive(true); m_Alert_Object.transform.Find("Security_Alert_Background").GetComponent <SpriteRenderer>().color = GLOBAL_VALUES.COLOR_NUMBERS[m_Enemy_Agent.Get_Color()]; break; } } }