public Herd NewHerd(HerdMember member) { Herd newHerd = new Herd(member); herds.Add(newHerd); return(newHerd); }
public void RemoveMember(HerdMember member) { herdMembers.Remove(member); if (herdMembers.Count == 0) { HerdList.Instance.RemoveHerd(this); } }
private void OnTriggerStay(Collider other) { HerdMember member = other.gameObject.GetComponent <HerdMember>(); if (member != null && member.GetState() == HerdMember.MemberState.Roam && !member.IsDisoriented()) { herd.AddMember(member); member.SetState(HerdMember.MemberState.Rejoin); } }
private void Cheer(int numberOfCheers) { LinkedListNode <HerdMember> currentMember = members.First; for (int i = 0; i <= numberOfCheers; i++) { HerdMember member = currentMember?.Value; member?.Cheer(); currentMember = currentMember?.Next; } }
public List <HerdMember> GetcloseSheeps() { List <HerdMember> members = new List <HerdMember>(); List <Voisin> lVoisins = voisin.GetVoisinsInRange(maxDistance); for (int i = 0; i < lVoisins.Count; i++) { HerdMember hMember = lVoisins[i].gameObject.GetComponent <HerdMember>() as HerdMember; if (hMember) { members.Add(hMember); } } return(members); }
void OnTriggerStay2D(Collider2D collider) { HerdMember sheep = collider.GetComponent <HerdMember>(); if (sheep != null && SheepEvacuated < MaxSheepEvac) { SheepEvacuated++; if (SheepEvacuated == MaxSheepEvac) { triggerBox.isTrigger = false; } EvacSheep(sheep, () => { Game.Instance.carManager.ExitCar(gameObject); }); } }
public Herd GetHerd() { Herd minHerd = null; int minCount = int.MaxValue; for (int i = 0; i < sheepsInRange.Count; i++) { HerdMember member = sheepsInRange[i].GetComponent <HerdMember>() as HerdMember; Herd herd = member.GetHerd(); int count = herd.MemberCount(); if (count < minCount) { minHerd = herd; minCount = count; } } return(minHerd); }
public List <HerdMember> GetAllConnectedSheeps(HerdMember root) { List <HerdMember> detectedSheeps = new List <HerdMember>(); detectedSheeps.Add(root); for (int i = 0; i < detectedSheeps.Count; i++) { List <HerdMember> closeSheeps = detectedSheeps[i].GetcloseSheeps(); for (int j = 0; j < closeSheeps.Count; j++) { if (!detectedSheeps.Contains(closeSheeps[j])) { detectedSheeps.Add(closeSheeps[j]); } } } return(detectedSheeps); }
public void EvacSheep(HerdMember sheep, Action OnComplete) { sheep.DisableUI(); sheep.GetComponent <SheepComponent>().AIenabled = false; Game.Instance.sfx.PlaySaveMouton(); Sequence sqc = DOTween.Sequence(); MoveToCheckpoint(sheep.transform, (Vector2)plateformCheckpoint.transform.position, sqc); sqc.AppendCallback(() => { Instantiate(sheepCaughtPrefab, popUpLocation.transform.position, Quaternion.identity); }); MoveToCheckpoint(sheep.transform, (Vector2)camionCheckpoint.transform.position, sqc); sqc.OnComplete(() => { sheep.Evac(null); OnComplete.Invoke(); }); }
private void Start() { members = new LinkedList <HerdMember>(); for (int i = 0; i < memberCount; i++) { HerdMember member = Instantiate(memberPrefab, transform); members.AddLast(member); member.SetState(HerdMember.MemberState.Joined); } foreach (HerdMember member in members) { Vector2 offset = Vector2.zero; const int MAX_TRIES = 20; for (int j = 0; j < MAX_TRIES && ClosestMember(offset) < minimumSeparation; j++) { offset = Random.insideUnitCircle * herdRadius; } member.Offset = offset; member.Position = offset; } }
public void SpawnPref(int NbToSpawn) { Vector3 pos; for (int i = 0; i < NbToSpawn; i++) { GameObject newSheep = null; pos = new Vector3(Random.Range(m_xMin, m_xMax), Random.Range(m_yMin, m_yMax)); if (Random.Range(0.0f, 1.0f) <= chanceOfSpawningBlackSheep) { newSheep = Instantiate(blackSheepPrefab, pos, Quaternion.identity, m_UnitContain); } else { newSheep = Instantiate(m_SheepPrefab, pos, Quaternion.identity, m_UnitContain); } HerdMember member = newSheep.GetComponent <HerdMember>(); if (member) { member.DisableUI(); } } }
public Herd(HerdMember firstMember) { herdMembers.Add(firstMember); firstMember.SetHerd(this); }
public void AddMember(HerdMember newMember) { newMember.SetState(HerdMember.MemberState.Roam); members.AddFirst(newMember); }