Exemplo n.º 1
0
    private IEnumerator Seek(GameObject target)
    {
        CreepScript targetScript = target.GetComponent <CreepScript>();

        while (target != null)
        {
            m_CreepMovement.ChangeTarget(target, true);
            bool targetIsAtAttackRange =
                m_CreepMovement.TargetIsAtAttackRange();

            CreepScript.CREEP_STATE currentState = m_CreepScript.GetCurrentState();
            #region Can Destroy ?
            if (currentState != CreepScript.CREEP_STATE.DESTROYING &&
                targetIsAtAttackRange)
            {
                m_CreepScript.SwitchToDestroyState();

                StartCoroutine("Destroy", targetScript);
            }
            else if (currentState != CreepScript.CREEP_STATE.SEEKING &&
                     !targetIsAtAttackRange)
            {
                m_CreepScript.SwitchToSeekState();
                StopCoroutine("Destroy");
            }
            #endregion

            yield return(null);
        }

        StopSeekAndDestroy();
    }
Exemplo n.º 2
0
    private IEnumerator Destroy(CreepScript targetScript)
    {
        while (targetScript != null)
        {
            // Attacking ennemy
            m_CreepScript.Attack(targetScript);
            if (m_CreepScript.m_CreepStats.m_Attribute.m_HP < 0)
            {
                StopSeekAndDestroy();
            }

            yield return(new WaitForSeconds(m_CreepScript.m_CreepStats
                                            .m_Attribute.m_Attack.m_ReloadTime));
        }
    }
Exemplo n.º 3
0
 public void Attack(CreepScript target)
 {
     target.GetDamage(m_CreepStats.m_Attribute.m_Attack.m_Power);
 }
Exemplo n.º 4
0
	/// <summary>
	/// Busca un creep libre en el array pasado como parametro
	/// </summary>
	/// <returns>El creep disponible</returns>
	/// <param name="evolve">Configuracion del creep</param>
	/// <param name="creepArray">Array donde busca creep</param>
	private CreepScript GetFreeCreep(CreepEvolve evolve, CreepScript[] creepArray){
		if (EconomyManager.gene < evolve.creep.costGene)
			return null;
		for (int i = 0; i < evolve.numPool; i++) {
			if (!creepArray [i].creep.activeInHierarchy) {
				EconomyManager.gene -= evolve.creep.costGene;
				return creepArray [i];
			}
		}
		return null;
	}
Exemplo n.º 5
0
	/// <summary>
	/// Rellenamos la pool del creep
	/// </summary>
	/// <param name="tempCreep">Prefab del creep</param>
	/// <param name="creepTempScript">Script perteneciente al prefab</param>
	/// <param name="cuantity">Cantidad de creeps a meter en la pool</param>
	/// <param name="creepArray">Pool donde se van a meter los creeps</param>
	void FillPoolCreep(GameObject tempCreep,Creep creepTempScript, int cuantity, CreepScript[] creepPool){
		GameObject clone;
		for(int i = 0;i < cuantity;i++){
			clone = Instantiate(tempCreep,Vector3.zero,Quaternion.identity) as GameObject;
			clone.transform.parent = transform;
			clone.name = "Creep"+creepTempScript.tier+"_"+i;
			CreepScript tempScript = new CreepScript(clone,clone.GetComponent<Creep>());
			creepPool[i] = tempScript;
		}
	}
Exemplo n.º 6
0
	/// <summary>
	/// Se crea una pool con la configuracion de creep pasado por parametro
	/// </summary>
	/// <param name="creepEvolve">Configuracion del creep</param>
	private CreepScript[] CreatePoolCreep(CreepEvolve creepEvolve){
		if (creepEvolve == null)
			return null;
		CreepScript[] creepPool = new CreepScript[creepEvolve.numPool];
		FillPoolCreep (creepEvolve.creep.gameObject, creepEvolve.creep,creepEvolve.numPool, creepPool);
		return creepPool;
	}