public void Unregister(PredatorController predator, int player_id) { players[player_id].predators.Remove(predator); if (player_id == 0) { gameInfo.UpdateAliveCount(players[player_id].predators.Count); } }
private void Awake() { gameController = GameObject.FindWithTag("GameController").GetComponent <GameController>(); monkeysSeen = new List <GameObject>(); thisPredator = gameObject.transform.parent.gameObject; predatorController = thisPredator.GetComponent <PredatorController>(); alertState = false; }
//------------------------------------------------------------------------------------------------- private void RemovePlayer(VirtualNetworkController controller) { //Find controller if it was a prey GameObject[] preys = GameObject.FindGameObjectsWithTag(TAG_PREY); for (int preyIndex = 0; preyIndex < preys.Length; ++preyIndex) { PreyController prey = preys[preyIndex].GetComponent <PreyController>(); if (prey != null) { if (prey.m_netController == controller) { // C4 - ghosts were multiplying really fast GameObject.Destroy(prey.gameObject); } } if (m_firstGame && (HopperNetwork.GetPlayerCount() == 0)) { m_UIJoin.SetActive(true); m_UIInstructions.SetActive(false); } } //Find controller if it was a predator GameObject[] predators = GameObject.FindGameObjectsWithTag(TAG_PREDATOR); for (int predatorIndex = 0; predatorIndex < predators.Length; ++predatorIndex) { PredatorController predator = predators[predatorIndex].GetComponent <PredatorController>(); if (predator != null) { if (predator.m_netController == controller) { Destroy(predator); return; } } } }
public void UpdatePredators(List <PredatorData> listPredator) { for (int idx = 0; idx < listPredator.Count; idx++) { PredatorData data = listPredator[idx]; int fIdx = registeredPredator.FindIndex(x => x.predatorId.Equals(data.id)); //Find the given data in the list. If it's not in the list, create new predator if (fIdx < 0) { GameObject go = predatorPool.GetGameObject(data.assetKeyword); PredatorController control = go.GetComponent <PredatorController>(); //reset animation before deploying control.SetAnimationToMove(); LayerController.Instance.SetFishLayer(go, 10); if (control == null) { control = go.AddComponent <PredatorController>(); } control.SetData(data); registeredPredator.Add(control); // Debug.Log ("predator id = "+data.id); } //When it's already in the list, just reset the data else { registeredPredator[fIdx].SetData(data); } } predatorUpdateCount += 1; //Clear food after 10 updates, to reduce procesing cost if (predatorUpdateCount >= 10) { ClearPredator(listPredator); predatorUpdateCount = 0; } }
void ChooseAnimalToSpawn(Vector2 spawnPos) { float randomNum = Random.Range(0f, 1f); GameObject animal; if (randomNum <= RATE_OF_SAME_KIND) { animal = Instantiate(playerPrefab, spawnPos, Quaternion.identity) as GameObject; } else if (randomNum <= rateOfPrey || predatorPrefabs.Length == 0) { animal = Instantiate(preyPrefabs [Random.Range(0, preyPrefabs.Length)], spawnPos, Quaternion.identity) as GameObject; } else { if (numOfPredator == NUM_PREDATOR_LIMIT) { ChooseAnimalToSpawn(spawnPos); return; } animal = Instantiate(predatorPrefabs [Random.Range(0, predatorPrefabs.Length)], spawnPos, Quaternion.identity) as GameObject; PredatorController controller = animal.AddComponent <PredatorController>(); controller.playerTransform = player.transform; controller.chaseDuration = chaseDuration; numOfPredator += 1; } animal.AddComponent <ComputerController>(); animal.transform.parent = transform; if (animal.gameObject.tag.Equals("hydra")) { predatorPrefabs = new GameObject[0]; } }