private BornNode GetCanAddPropNode() { BornNode[] roleBornNodes = (Global.gApp.CurScene as FightScene).GetBornNodes(); int count = roleBornNodes.Length; int symbol = Random.Range(0, 1000); int bornIndex = Random.Range(0, count); if (symbol > 500) { symbol = 1; } else { symbol = -1; bornIndex += count; } for (int i = 0; i < count; i++) { int newIndex = bornIndex % count; BornNode newNode = roleBornNodes[newIndex]; if (newNode.GetIsOutMap()) { return(newNode); } } return(null); }
public override void Init(GameObject playerGo, BasePet pet) { base.Init(playerGo, pet); m_LockNode = playerGo.transform.Find("ModelNode/PetNode"); m_LockCompt = m_LockNode.GetComponent <BornNode>(); m_PursureCallBack = PursueCallBack; }
private void CreateRoundRoleMonster(ref int creatCount) { if (m_RoundRoleCreateInfo.Count > 0) { int newBornIndex = Random.Range(0, m_RoundRoleBornNodes.Length); BornNode newBornNode = m_RoundRoleBornNodes[newBornIndex]; int dtCreateCount = creatCount; for (int i = 0; i < dtCreateCount; i++) { int index = Random.Range(0, m_RoundRoleCreateInfo.Count); if (CreateRoundMonsterImp(m_RoundRoleCreateInfo[index], newBornNode, true)) { creatCount--; m_RoundRoleCreateInfo.RemoveAt(index); if (m_RoundRoleCreateInfo.Count == 0) { if (m_CreateInfo.Count == 0) { RemoveTimer(); return; } break; } } else { break; } } } }
public override void StartBehavior() { base.StartBehavior(); m_CurBornNode = null; m_ReachedPlaceTag = false; enabled = true; }
public bool GenerateBornNode() { if (m_CurBornNode != null && m_CurBornNode.GetIsOutMap()) { return(false); } foreach (BornNode bornNode in m_BornNodes) { if (bornNode.GetIsOutMap()) { m_CurBornNode = bornNode; return(true); } } return(false); }
//lockExterAdd = true lock push item to RoundRoleMonsterInfo and call CreateMonsterFromCacheInfo limit by frameCreate count private bool CreateRoundMonsterImp(MonsterItem monsterItem, BornNode bornNode, bool lockExterAdd = false) { if (bornNode.GetIsOutMap()) { Monster monster = null; if (!lockExterAdd) { monster = m_WaveMgr.CreateMonster(monsterItem); } else { monster = m_WaveMgr.CreateMonsterFromCacheInfo(monsterItem); } if (monster != null) { Vector3 position = bornNode.transform.position; position.z = 0; monster.transform.position = position; m_Monsters.Add(monster); monster.Init(m_MainPlayer, this, monsterItem); return(true); } else { if (!lockExterAdd) { AddRoundRoleMonsterInfo(monsterItem); return(false); } } } else { int count = m_RoundRoleBornNodes.Length; int symbol = Random.Range(0, 1000); int bornIndex = Random.Range(0, count); if (symbol > 500) { symbol = 1; } else { symbol = -1; bornIndex += count; } for (int i = 0; i < count; i++) { int newIndex = bornIndex % count; BornNode newNode = m_RoundRoleBornNodes[newIndex]; if (newNode.GetIsOutMap()) { Monster monster = null; if (!lockExterAdd) { monster = m_WaveMgr.CreateMonster(monsterItem); } else { monster = m_WaveMgr.CreateMonsterFromCacheInfo(monsterItem); } if (monster != null) { Vector3 position = newNode.transform.position; position.z = 0; monster.transform.position = position; m_Monsters.Add(monster); monster.Init(m_MainPlayer, this, monsterItem); return(true); } else { if (!lockExterAdd) { AddRoundRoleMonsterInfo(monsterItem); } return(false); } } bornIndex += symbol; } } if (!lockExterAdd) { AddRoundRoleMonsterInfo(monsterItem); } return(false); }
private void CreatNormalTypeMonster(int creatCount) { // same logic bug bornNode from m_RoundRoleBornNodes if (m_CreateInfo.Count == 0) { if (m_RoundRoleCreateInfo.Count == 0) { RemoveTimer(); } return; } if (m_BornNodeType == BornNodeType.MainRole) { int bornIndex = Random.Range(0, m_RoundRoleBornNodes.Length); BornNode bornNode = m_RoundRoleBornNodes[bornIndex]; for (int i = 0; i < creatCount; i++) { int index = Random.Range(0, m_CreateInfo.Count); bool createResult = CreateRoundMonsterImp(m_CreateInfo[index], bornNode); m_CreateInfo.RemoveAt(index); if (createResult || m_CreateInfo.Count == 0) { if (m_CreateInfo.Capacity > 64 && m_CreateInfo.Capacity > m_CreateInfo.Count * 3) { m_CreateInfo.TrimExcess(); } if (m_CreateInfo.Count == 0) { if (m_RoundRoleCreateInfo.Count == 0) { RemoveTimer(); } break; } } } } else { int bornIndex = Random.Range(0, m_BornNodeList.Count); GameObject bornNode = m_BornNodeList[bornIndex]; for (int i = 0; i < creatCount; i++) { int index = Random.Range(0, m_CreateInfo.Count); bool createResult = CreateMonsterImp(m_CreateInfo[index], bornNode, m_BornNodeType); m_CreateInfo.RemoveAt(index); if (createResult || m_CreateInfo.Count == 0) { if (m_CreateInfo.Capacity > 64 && m_CreateInfo.Capacity > m_CreateInfo.Count * 3) { m_CreateInfo.TrimExcess(); } if (m_CreateInfo.Count == 0) { if (m_RoundRoleCreateInfo.Count == 0) { RemoveTimer(); } break; } } } } }