Example #1
0
    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);
    }
Example #2
0
    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());
    }
Example #3
0
 /// <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;
             }
         }
     }
 }
Example #4
0
 /// <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);
 }
Example #5
0
    /// <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);
    }
Example #6
0
 public void SetBrain(ViriusBrain dataCubeBrain)
 {
     m_Virus = dataCubeBrain;
     UpdateUi();
 }