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)); }
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); } } }
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); }