Пример #1
0
        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;
        }
    }