Ejemplo n.º 1
0
    public void CreateParticle(Attacks.AttackType atkType, Attacks.AtkDefElement elemType, Vector3 startPos)
    {
        ParticleSystem p = Factory.Instance.InitializeParticles(atkType, startPos);

        if (atkType == Attacks.AttackType.Ranged)
        {
            var rend = p.GetComponent <Renderer>();
            rend.material.SetVector("_Color", RPSEnemy.RPSColors[(int)elemType] / 2 * 3f);
            rend.material.SetVector("_EmissionColor", RPSEnemy.RPSColors[(int)elemType] * 3f);
        }
        else if (atkType == Attacks.AttackType.AoE)
        {
            var childPart     = p.transform.Find("Embers").GetComponent <ParticleSystem>();
            var childPartMain = childPart.main;
            childPartMain.startColor = RPSEnemy.RPSColors[(int)elemType];
            var rends = p.transform.GetComponentsInChildren <Renderer>();
            for (int i = 0; i < rends.Length; i++)
            {
                rends[i].material.SetVector("_Color", RPSEnemy.RPSColors[(int)elemType] / 2 * 3f);
            }
        }
        else if (atkType == Attacks.AttackType.Melee)
        {
            var rend = p.GetComponent <Renderer>();
            for (int i = 0; i < rend.materials.Length; i++)
            {
                rend.materials[i].SetVector("_Color", RPSEnemy.RPSColors[(int)elemType] / 2 * 3f);
            }
            //p.GetComponentInChildren<Renderer>().material.SetVector("_Color", RPSEnemy.RPSColors[(int)elemType] * 2f);
        }
        p.Play();
        particleList.Add(p);
    }
Ejemplo n.º 2
0
    public RPSEnemy InitializeEnemy(Attacks.AtkDefElement elemtype, Vector3 startpos)
    {
        RPSEnemy tempEnemy = null;

        if (ObjectPool.Instance.HasBug(elemtype))
        {
            tempEnemy = ObjectPool.Instance.DepoolBug(elemtype);
            // tempBullet.gameObject.transform.position = startpos;
        }
        else
        {
            switch (elemtype)
            {
            case Attacks.AtkDefElement.Rock:
                tempEnemy = GameObject.Instantiate(rock).GetComponent <RPSEnemy>();
                break;

            case Attacks.AtkDefElement.Paper:
                tempEnemy = GameObject.Instantiate(paper).GetComponent <RPSEnemy>();
                break;

            case Attacks.AtkDefElement.Scissors:
                tempEnemy = GameObject.Instantiate(scissors).GetComponent <RPSEnemy>();
                break;
            }
        }
        tempEnemy.gameObject.transform.position = startpos;
        tempEnemy.gameObject.transform.parent   = BulletParent.transform;

        tempEnemy.gameObject.SetActive(true);
        return(tempEnemy);
    }
Ejemplo n.º 3
0
    public void DoDamage(float dmg, Attacks.AttackType atkType, Attacks.AtkDefElement playerElement, Moveonterrain player = null)
    {
        int   atkMultiplier = 0;
        float playerMult    = 1;

        if (player != null)
        {
            playerMult = player.AttackDmgMults[(int)atkType, (int)playerElement];
        }
        switch (atkType)
        {
        case Attacks.AttackType.AoE:
            atkMultiplier = 1;
            break;

        case Attacks.AttackType.Ranged:
            atkMultiplier = 3;
            break;

        case Attacks.AttackType.Melee:
            atkMultiplier = 5;
            break;
        }
        hp -= dmg * atkMultiplier * playerMult;

        if (hp < 1)
        {
            isAlive = false;
        }
    }
Ejemplo n.º 4
0
 public void PoolBug(Attacks.AtkDefElement elemtype, RPSEnemy enemy)
 {
     if (!EnemyPool.ContainsKey(elemtype))
     {
         EnemyPool.Add(elemtype, new Queue <RPSEnemy>());
     }
     EnemyPool[elemtype].Enqueue(enemy);
 }
Ejemplo n.º 5
0
 public void CalculateXPDamage(int XPMult, Attacks.AtkDefElement affectedElement, Attacks.AttackType atkType)
 {
     XP[(int)affectedElement] += XPGainAmt[(int)atkType, (int)affectedElement] * XPMult;
     for (int i = 0; i < 3; i++)
     {
         Mathf.Clamp(XP[i], 0, XPLevelThreshold[i] + 27);
     }
 }
Ejemplo n.º 6
0
    public void DoDefense(int defenseMode, RPSEnemy source, Attacks.AtkDefElement attackingElement, Attacks.AttackType atkType)
    {
        int XPMult = 2;

        if (defenseMode == 1)      // Good Defense
        {
            XPMult = -1;
            switch (defenseType)
            {
            case DefenseType.Dmg:
                source.hp -= dmgValue * 5;
                break;

            case DefenseType.DrainHP:
                hp        += dmgValue * 3;
                source.hp -= dmgValue * 3;
                break;

            case DefenseType.BolsterAtk:
                if (dmgValue < 20)
                {
                    dmgValue *= 2;
                }
                break;
            }
        }
        else if (defenseMode == 0)
        {
            XPMult = 4;
            switch (defenseType)
            {
            case DefenseType.Dmg:
                hp -= dmgValue * 5;
                break;

            case DefenseType.DrainHP:
                hp        -= dmgValue * 3;
                source.hp += dmgValue * 3;
                break;

            case DefenseType.BolsterAtk:
                if (dmgValue > float.MinValue)
                {
                    dmgValue /= 2;
                }
                break;
            }
        }

        if (source.CompareTag("Player"))
        {
            source.GetComponent <Moveonterrain>().CalculateXPDamage(XPMult, attackingElement, atkType);
        }
        else
        {
            Debug.Log("PAJWO");
        }
    }
Ejemplo n.º 7
0
 public RPSEnemy DepoolBug(Attacks.AtkDefElement elemtype)
 {
     if (EnemyPool.ContainsKey(elemtype))
     {
         if (EnemyPool[elemtype].Count > 0)
         {
             return(EnemyPool[elemtype].Dequeue());
         }
     }
     return(null);
 }
Ejemplo n.º 8
0
 public bool HasBug(Attacks.AtkDefElement elemtype)
 {
     if (EnemyPool.ContainsKey(elemtype))
     {
         if (EnemyPool[elemtype].Count > 0)
         {
             return(true);
         }
     }
     return(false);
 }
Ejemplo n.º 9
0
    public void CreateBug(Attacks.AtkDefElement elemtype, Vector3 startPos)
    {
        RPSEnemy e = Factory.Instance.InitializeEnemy(elemtype, startPos);
        Renderer rend;

        if (e.attackElement == Attacks.AtkDefElement.Rock)
        {
            rend = e.GetComponent <Renderer>();
        }
        else
        {
            rend = e.transform.Find("Shape").GetComponent <Renderer>();
        }
        rend.material = baseMats[(int)e.attackElement];
        e.RefreshStats();
        enemyList.Add(e);
    }
Ejemplo n.º 10
0
    public void InitializePassives(Attacks.AtkDefElement mineElement, Attacks.AtkDefElement playerElement, Moveonterrain _player)
    {
        player = _player;
        if (mineElement == (Attacks.AtkDefElement)(((int)playerElement + 1) % 3))
        {
            buff = -1;       //  Debug.Log(source + " Made Bad Attack On " + other);
        }
        else if (playerElement == (Attacks.AtkDefElement)(((int)mineElement + 1) % 3))
        {
            buff = 1;        //Debug.Log(source + " Made Good Attack On " + other);
        }
        else if (playerElement == mineElement)
        {
            buff = 0;     //Debug.Log(source + " Made Neutral Attack On " + other);
        }
        passive = (PassivesList)Random.Range(0, 15);
        if (Random.Range(0, 100) == 27)
        {
            buffAmtPercent = Random.Range(27f, 54f);
        }
        else
        {
            buffAmtPercent = Random.Range(127, 279f);
        }
        buffElement = mineElement;

        text.text = passive.ToString() + "  " + ((int)passive < 15 ? buffElement.ToString():" ");
        switch (buff)
        {
        case -1:
            text.color = Color.red;
            text.text += "-- " + buffAmtPercent.ToString("F0") + "%";
            break;

        case 0:
            text.color = Color.clear;
            break;

        case 1:
            text.color = Color.green;
            text.text += "++ " + buffAmtPercent.ToString("F0") + "%";
            break;
        }
    }