internal static void Execute() { var sequence = new MemorySequence <Person>(); AddPeople(sequence); AddAuthors(sequence); PrintSequence(sequence); }
//builds the characters behaviour tree private void constructBehaviourTree() { //health node checks if health is below threshold MBHealth healthNode = new MBHealth(this, m_lowHealthThreshold, m_topNode, 1); //inverted health checks if health is above threshhold MemoryInverter invertHealth = new MemoryInverter(healthNode, m_topNode); //Cover MBGetCover getCoverNode = new MBGetCover(target.transform, this); MBGoToCover goToCoverNode = new MBGoToCover(this, m_speed); MBHeal Heal = new MBHeal(20, this, m_healthRegenRate); MemorySequence CoverSequence = new MemorySequence(new List <MBNode> { healthNode, getCoverNode, goToCoverNode, Heal }, m_topNode); //chase m_Range = new MBRange(m_detectionRange, target.transform, gameObject.transform, this, m_topNode, 2); m_Chase = new MBChase(target.transform, this, m_speed); MemorySequence ChaseSequence = new MemorySequence(new List <MBNode> { invertHealth, m_Range, m_Chase }, m_topNode); //wander MBRange wanderRange = new MBRange(m_detectionRange, target.transform, gameObject.transform, this, m_topNode, 2); MemoryInverter invertWanderRange = new MemoryInverter(wanderRange, m_topNode); MBWander wander = new MBWander(this, m_speed); MemorySequence WanderSequence = new MemorySequence(new List <MBNode> { invertWanderRange, wander }, m_topNode); //attack m_attackRangeNode = new MBRange(m_attackRange, target.transform, gameObject.transform, this, m_topNode, 4); m_attack = new MBAttack(target.transform, this); MemorySequence AttackSequence = new MemorySequence(new List <MBNode> { m_attackRangeNode, m_attack }, m_topNode); m_topNode.setNodes(new List <MBNode> { CoverSequence, AttackSequence, ChaseSequence, WanderSequence }); }
/// <summary> /// Plays the sequence of images followed by the answer board /// </summary> /// <returns></returns> IEnumerator RunSequence() { Debug.Log("Client run sequence"); //Remove old quesiton cards List <Transform> childs = new List <Transform>(); childs.AddRange(AnswerBoard.GetComponentsInChildren <Transform>()); childs.Remove(AnswerBoard); while (childs.Count > 0) { Destroy(childs[0].gameObject); childs.RemoveAt(0); } AnswerText.enabled = false; //Help with reading the question before the sequence yield return(new WaitForSeconds(1.5f)); AnswerBoard.gameObject.SetActive(false); ImageBoard.enabled = true; //Play sequence float TimeBetweenImages = 1f; WaitForSeconds WSF = new WaitForSeconds(TimeBetweenImages); foreach (Sprite s in SelectedVariant.Images) { ImageBoard.sprite = s; MemorySequence.Play(); yield return(WSF); } ImageBoard.enabled = false; //Display answer board AnswerBoard.gameObject.SetActive(true); foreach (string s in MySelectedQuestion.AnswerOptions) { SelectionOption newButton = Instantiate(AnswerButtonPrefab, AnswerBoard); newButton.Answertext.text = s; newButton.MyPuzzle = this; } }