Exemplo n.º 1
0
    public void OnReceiveStatement(RHRegisteredStatement rs)
    {
        RHStatement    statement = rs.statement;
        RHSpeaker      speaker   = rs.speaker;
        RHConversation c         = rs.conversation;

        GetComponent <AITaskManager>()?.triggerEvent(new AIEVStatementReceived(c, statement, speaker));
        Dictionary <RHStat, float> results = new Dictionary <RHStat, float>();

        for (int i = 0; i < 5; i++)
        {
            RHStat s     = (RHStat)i;
            float  power = statement.GetPower(speaker, this, c, s);
            float  diff  = applyStatementModifiers(power, rs, s);
            if (diff == 0)
            {
                continue;
            }

            results[s] = diff;
            ModifyStat(speaker, c, s, diff);
        }
        statement.OnStatementReceived(speaker, this, c, results);
        RHManager.AddHistoryText(GetResponseString(statement, speaker, results));
    }
Exemplo n.º 2
0
 private void ProcessHistoryText(RHStatement st, RHSpeaker speaker, RHListener listener, float diff)
 {
     foreach (RHResponseString s in m_registeredResponses)
     {
         if (s.IsConditionTrue(st, m_previousStatements, speaker, listener, diff, m_startingSpeaker))
         {
             RHManager.AddHistoryText(s);
         }
     }
 }
Exemplo n.º 3
0
    public void StartRhetoricBattle(List <RHSpeaker> participants, RHSpeaker startingSpeaker)
    {
        if (participants.Count == 0)
        {
            Debug.LogError("Conversation attempted with 0 participants");
            return;
        }

        ScaledTime.SetPause(true, true);
        m_nextStatementEnd      = ScaledTime.UITimeElapsed;
        m_nextInterestTimeLimit = ScaledTime.UITimeElapsed + m_startingInterest;
        RHManager.UITime().SetActive(true);
        m_timeUI = RHManager.UITime().GetComponent <RHUITime>();
        m_timeUI.StartUI(this);

        m_queue = new RHQueue();
        ScaledTime.SetScale(0f);
        m_lastScaled = ScaledTime.UITimeElapsed;

        this.m_listeners_with_scores = new Dictionary <RHListener, float>();
        this.m_listeners             = new List <RHListener>();
        this.m_speakers = new List <RHSpeaker>();

        m_speakerColorMaps = new Dictionary <RHSpeaker, Color>();
        int colorIndex = 0;

        m_startingSpeaker = startingSpeaker;
        foreach (RHSpeaker s in participants)
        {
            initializeSpeaker(s, colorIndex, startingSpeaker);
            colorIndex = (colorIndex + 1) % m_defaultColors.Count;
        }
        RefreshStatementMenu(m_startingSpeaker);
        m_previousStatements = new List <RHStatement>();
        RHManager.ClearHistory();
        RHManager.SetHistoryTextActive(true);
        RHManager.AddHistoryText(m_introText);
    }