Beispiel #1
0
    private static BeltItem CreateBeltItem(XmlNode beltNode)
    {
        BeltItem beltItem = new BeltItem();

        beltItem.SetBase(GetBaseItem(beltNode));
        beltItem.itemType = BaseItem.ItemType.BELT;
        return(beltItem);
    }
Beispiel #2
0
 public static void DestroyItem(BeltItem item)
 {
     if (item != null)
     {
         item.mySlot.myItem = null;
         s.allBeltItems.Remove(item);
         item.DestroyItem();
     }
 }
    public void BeltItemRemoved(BeltItem item)
    {
        m_BeltItems.Remove(item);

        if (m_LastBeltItemAdded && m_BeltItems.Count == 0)
        {
            Invoke("LoadNextLevel", m_EndGraceSeconds);
        }
    }
    public Enemy getNextEnemyToKill(BeltItem.EffectTypeEnum effectType)
    {
        /*
         * if the effect is normal or heavy find the column with the most enemies and drop it there.
         * otherwise we try to find an enemy with same effect if not found use the top most enemy.
         */
        pathNode bestMatch = null;

        if (effectType == BeltItem.EffectTypeEnum.ETE_NORMAL || effectType == BeltItem.EffectTypeEnum.ETE_HEAVY)
        {
            bestMatch = m_pathPanel.getTopMostNode(true);
        }
        else
        {
            int[] colTopRows = m_pathPanel.getTopMostNodes();

            for (int colIndex = 0; colIndex < PathPanel.NUM_COLS; colIndex++)
            {
                if(colTopRows[colIndex] < 0) continue;
                pathNode curNode = m_pathPanel.getNode(colIndex, colTopRows[colIndex]);

                if (bestMatch == null)
                {
                    bestMatch = curNode;
                }
                else
                {
                    if (effectType == curNode.m_refEnemy.EffectType)
                    {
                        if (bestMatch.m_refEnemy.EffectType == effectType)
                        {
                            float randNumb = Random.Range(0, 10);
                            bestMatch = (randNumb > 5) ? curNode : bestMatch;
                        }
                        else
                        {
                            bestMatch = curNode;
                        }
                    }
                    else if (bestMatch.m_refEnemy.EffectType != effectType && curNode.m_row <= bestMatch.m_row)
                    {
                        bestMatch = curNode;
                    }
                }
            }
        }
        if (bestMatch != null)
        {
            return bestMatch.m_refEnemy;
        }
        return null;
    }
Beispiel #5
0
 public static bool CreateItemAtBeltSlot(BeltItem item, BeltItemSlot slot)
 {
     if (slot.myItem == null)
     {
         s.allBeltItems.Add(item);
         item.transform.position = slot.position;
         item.mySlot             = slot;
         slot.myItem             = item;
         return(true);
     }
     else
     {
         item.DestroyItem();
         return(false);
     }
 }
    public void killAttached(BeltItem.EffectTypeEnum effectType)
    {
        for (int enemyIndex = 0; enemyIndex < m_enemiesAttached.Count; enemyIndex++)
        {
            m_enemiesAttached[enemyIndex].kill(effectType, false);
        }

        for (int pointIndex = 0; pointIndex < MAX_ATTACH; pointIndex++)
        {
            m_attachPoints[pointIndex].m_inUse = false;
        }

        m_enemiesAttached.Clear();

        m_numAttachedEnemies = 0;
    }
Beispiel #7
0
 public void propagateDir(int colValue, int rowValue, BeltItem.EffectTypeEnum itemEffect)
 {
     int curCol = m_node.m_col + colValue;
     int curRow = m_node.m_row + rowValue;
     pathNode tempNode = SceneManager.instance.getEnemyManager().getNode(curCol, curRow);
     while (tempNode != null && tempNode.m_refEnemy != null && tempNode.m_refEnemy.isType(m_enemyView.m_type))
     {
         tempNode.m_refEnemy.kill(itemEffect);
         curCol += colValue;
         curRow += rowValue;
         tempNode = SceneManager.instance.getEnemyManager().getNode(curCol, curRow);
     }
 }
Beispiel #8
0
    public void kill(BeltItem.EffectTypeEnum effectType, bool propagate = false)
    {
        m_hitEffect = effectType;

        m_effect = null;
        switch(effectType)
        {
            case BeltItem.EffectTypeEnum.ETE_FIRE:
                m_effect = EffectsManager.instance.getEffect(Vector2.zero, Quaternion.identity, EffectsManager.FXType.FXT_Fire01);
                break;
            case BeltItem.EffectTypeEnum.ETE_ICE:
                m_effect = EffectsManager.instance.getEffect(Vector2.zero, Quaternion.identity, EffectsManager.FXType.FXT_Ice01);
                break;
            case BeltItem.EffectTypeEnum.ETE_SHOCK:
                m_effect = EffectsManager.instance.getEffect(Vector2.zero, Quaternion.identity, EffectsManager.FXType.FXT_Shock01);
                break;

        }

        if (m_effect != null)
        {
            m_effect.GetComponent<SpriteRenderer>().sortingLayerID = m_enemyView.GetComponent<SpriteRenderer>().sortingLayerID;
            m_effect.GetComponent<SpriteRenderer>().sortingOrder = m_enemyView.GetComponent<SpriteRenderer>().sortingOrder + 1;

            m_effect.GetComponent<Transform>().SetParent(this.GetComponent<Transform>(), false);

            m_effect.triggerEffect();
        }
        if (propagate &&
            effectType != BeltItem.EffectTypeEnum.ETE_NORMAL &&
            effectType != BeltItem.EffectTypeEnum.ETE_HEAVY &&
            effectType == m_enemyView.m_type)
        {
            propagateDir(0, -1, effectType);
            propagateDir(0, 1, effectType);
            propagateDir(-1, 0, effectType);
            propagateDir(1, 0, effectType);
        }

        SceneManager.instance.getUIScript().getEnemyCounter().updateCounter(-1);

        m_states[m_curState].resetState();

        m_updateTime = 0.03f;
        m_curState = (int)StateEnum.SE_DEAD;
    }
Beispiel #9
0
 public bool isType(BeltItem.EffectTypeEnum effectType)
 {
     return effectType == m_enemyView.m_type;
 }
 public void BeltItemAdded(BeltItem item)
 {
     m_BeltItems.Add(item);
 }