public void MakeVirius(ViriusBrain[] _virusBrains) { VirusBorn += 1; PoolableObject poolableObject = m_ViriusPool.GetObject(); poolableObject.SpawnObject(_virusBrains[0].transform.position); ViriusBrain _virus = poolableObject.GetComponent <ViriusBrain>(); _virus.Born(_virusBrains); m_AliveVirius.Add(_virus); }
private void StartPools() { m_DataCubePool = gameObject.AddComponent <ObjectPool>(); m_DataCubePool.BeginPool(m_DataCubePrefab, m_DataCubesToSpawn, null); m_ViriusPool = gameObject.AddComponent <ObjectPool>(); m_ViriusPool.BeginPool(m_ViriusPrefab, m_ViriusToSpawn, transform); m_MemorySlotPool = gameObject.AddComponent <ObjectPool>(); m_MemorySlotPool.BeginPool(m_MemorySlotPrefab, 10, transform); m_ProcessorTreePrefabPool = gameObject.AddComponent <ObjectPool>(); m_ProcessorTreePrefabPool.BeginPool(m_ProcessorTreePrefab, 10, null); m_GarbargeCollectorPool = gameObject.AddComponent <ObjectPool>(); m_GarbargeCollectorPool.BeginPool(m_GarbargeCollecterPrefab, m_CarbargeCollectersToSpawn, transform); m_AliveDataCubes = new List <DataCubeBrain>(); m_AliveVirius = new List <ViriusBrain>(); for (int i = 0; i < m_DataCubesToSpawn; i++) { PoolableObject _obj = m_DataCubePool.GetObject(); _obj.SpawnObject(GetRandomPos()); DataCubeBrain dataBrain = _obj.GetComponent <DataCubeBrain>(); dataBrain.SetRandomStats(); m_AliveDataCubes.Add(dataBrain); } CalculateAliveDC(); for (int i = 0; i < m_ViriusToSpawn; i++) { PoolableObject _obj = m_ViriusPool.GetObject(); _obj.SpawnObject(GetRandomPos()); ViriusBrain virusbrain = _obj.GetComponent <ViriusBrain>(); virusbrain.SetRandomStats(); m_AliveVirius.Add(virusbrain); } for (int i = 0; i < m_CarbargeCollectersToSpawn; i++) { PoolableObject _obj = m_GarbargeCollectorPool.GetObject(); _obj.SpawnObject(GetRandomPos()); } int ammount = Mathf.RoundToInt(m_DataCubesToSpawn * 0.50f); for (int i = 0; i < ammount; i++) { PoolableObject _obj = m_ProcessorTreePrefabPool.GetObject(); _obj.SpawnObject(GetRandomPos()); } StartCoroutine(SpawnMemorySlot()); }
/// <summary> /// Checks the mating mode /// </summary> private void CheckForMating() { if (m_Target != null) { SetQuickBehavoir(BehaviorEnum.Seek); float _distance = Vector3.Distance(transform.position, m_Target.transform.position); if (_distance < EnitiyManager.instance.ViriusSettings.MatingDistanceNeeded) { ViriusBrain _virusBrain = m_Target.GetComponent <ViriusBrain>(); if (_virusBrain != null) { if (_virusBrain.ReqeustMating(this)) { ViriusBrain[] parents = new ViriusBrain[] { this, _virusBrain, }; EnitiyManager.instance.MakeVirius(parents); ViriusStatus = ViriusMode.Idle; m_Target = null; m_IsReadyForMating = false; m_LifeTime = 0; m_VirusUI.UpdateUi(); } else { ViriusStatus = ViriusMode.Idle; m_Target = null; } } else { m_Target = null; } } } else { Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position, EnitiyManager.instance.ViriusSettings.MatingDistanceNeeded, EnitiyManager.instance.ViriusSettings.MatingLayerMask); if (colliders.Length > 0) { if (colliders[0].isActiveAndEnabled) { m_Target = colliders[0].gameObject; } } } }
/// <summary> /// If want the mate /// </summary> /// <param name="viriusBrain"></param> /// <returns></returns> public bool ReqeustMating(ViriusBrain viriusBrain) { if (m_IsReadyForMating) { bool Type = viriusBrain.viriusT == viriusT; bool _mb = viriusBrain.m_CurrentMB >= m_MatingData.NeededCurrentMB; bool _Process = viriusBrain.m_CurrentProcess >= m_MatingData.NeededProcess; if (_mb == _Process == Type) { m_IsReadyForMating = false; m_LifeTime = 0; m_VirusUI.UpdateUi(); return(true); } } return(false); }
/// <summary> /// Checks if there are any Prey close /// </summary> /// <returns></returns> private GameObject CheckForPrey() { Collider2D[] _Cols = Physics2D.OverlapCircleAll(transform.position, EnitiyManager.instance.GarbargeCollectorSettings.HuntRange, EnitiyManager.instance.GarbargeCollectorSettings.EnemyLayerMask); if (_Cols.Length > 0) { ViriusBrain viriusBrain = _Cols[0].GetComponent <ViriusBrain>(); if (viriusBrain != null) { return(viriusBrain.gameObject); } DataCubeBrain dataCubeBrain = _Cols[0].GetComponent <DataCubeBrain>(); if (dataCubeBrain != null) { if (dataCubeBrain.m_CurrentMB <= EnitiyManager.instance.GarbargeCollectorSettings.NeededMbToHunt) { return(dataCubeBrain.gameObject); } } } return(null); }
public void SetBrain(ViriusBrain dataCubeBrain) { m_Virus = dataCubeBrain; UpdateUi(); }