public void MakeaDataCube(DataCubeBrain[] dataCubebrains) { DataCubesBorn += 1; PoolableObject poolableObject = m_DataCubePool.GetObject(); poolableObject.SpawnObject(dataCubebrains[0].transform.position); DataCubeBrain dataCubebrain = poolableObject.GetComponent <DataCubeBrain>(); dataCubebrain.Born(dataCubebrains); m_AliveDataCubes.Add(dataCubebrain); }
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.DataCubeSettings.MatingDistanceNeeded) { DataCubeBrain dataCubebrain = m_Target.GetComponent <DataCubeBrain>(); if (dataCubebrain != null) { if (dataCubebrain.ReqeustMating(this)) { DataCubeBrain[] parents = new DataCubeBrain[] { this, dataCubebrain, }; EnitiyManager.instance.MakeaDataCube(parents); DataCubeStatus = DataCubeMode.Idle; m_Target = null; m_IsReadyForMating = false; m_LifeTime = 0; m_DataCubeUI.UpdateUi(); } else { m_Target = null; DataCubeStatus = DataCubeMode.Idle; } } } } else { Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position, EnitiyManager.instance.DataCubeSettings.MatingDistanceNeeded, EnitiyManager.instance.DataCubeSettings.MatingLayerMask); if (colliders.Length > 0) { if (colliders[0].isActiveAndEnabled) { m_Target = colliders[0].gameObject; } } } }
/// <summary> /// If want the mate /// </summary> /// <param name="dataCubebrain"></param> /// <returns></returns> public bool ReqeustMating(DataCubeBrain dataCubebrain) { if (gameObject.activeSelf) { if (m_IsReadyForMating) { bool Type = dataCubebrain.DataCube == DataCube; bool _mb = dataCubebrain.m_CurrentMB >= m_MatingData.NeededCurrentMB; bool _Process = dataCubebrain.m_CurrentProcess >= m_MatingData.NeededProcess; if (_mb == _Process == Type) { m_IsReadyForMating = false; m_LifeTime = 0; m_DataCubeUI.UpdateUi(); return(true); } } } return(false); }
/// <summary> /// Checks SearchingForMemoryMode /// </summary> private void CheckSearchForMemory() { if (m_Target != null) { SetQuickBehavoir(BehaviorEnum.Seek); float distance = Vector3.Distance(transform.position, m_Target.transform.position); if (distance < EnitiyManager.instance.ViriusSettings.HuntForMemoryDistance * 0.1f) { DataCubeBrain dataCubeBrain = m_Target.GetComponent <DataCubeBrain>(); if (dataCubeBrain != null) { float futuremb = m_CurrentMB + dataCubeBrain.StealMB(3); if (futuremb > EnitiyManager.instance.ViriusSettings.m_MaxMb) { m_CurrentMB = EnitiyManager.instance.ViriusSettings.m_MaxMb; ViriusStatus = ViriusMode.Idle; m_Target = null; m_VirusUI.UpdateUi(); return; } m_CurrentMB = futuremb; m_VirusUI.UpdateUi(); } else { m_Target = null; } } } else { Collider2D[] collider2Ds = Physics2D.OverlapCircleAll(transform.position, EnitiyManager.instance.ViriusSettings.HuntForMemoryDistance, EnitiyManager.instance.ViriusSettings.MemoryLayerMask); if (collider2Ds.Length > 0) { if (collider2Ds[0].gameObject.activeSelf) { m_Target = collider2Ds[0].gameObject; } } } }
/// <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(DataCubeBrain dataCubeBrain) { m_DataCubeBrain = dataCubeBrain; UpdateUi(); }