private static BeltItem CreateBeltItem(XmlNode beltNode) { BeltItem beltItem = new BeltItem(); beltItem.SetBase(GetBaseItem(beltNode)); beltItem.itemType = BaseItem.ItemType.BELT; return(beltItem); }
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; }
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; }
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); } }
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; }
public bool isType(BeltItem.EffectTypeEnum effectType) { return effectType == m_enemyView.m_type; }
public void BeltItemAdded(BeltItem item) { m_BeltItems.Add(item); }