/// <summary> /// Convert an event string into a set of events to be evaluated for their emotional /// effects. /// </summary> /// <param name="classifiedString">A string that was generated after the system translates an /// action, message, or event into a string representating a generalised action/event with relevant /// additional parameters</param> /// <returns></returns> private List <Reaction> GenerateEvents(EmotionTrigger trigger, double intensity) { //In future, event messages may have more parameters to correctly model an event, but for now, we //just use an arbitrary number to indicate the intensity of an action List <Reaction> events = new List <Reaction>(); //Events are generalised into a set of actions we believe are possible in second life //In a real implementation, classifiedStrings need to parsed and transformed into one of //the below actions; but for the demonstrator, we will just use these hard-coded strings //The numbers used to mutiply with intensity below are arbritrary. They are made different/ //less intense according to the difference in perceived intensity of the event. if (trigger == EmotionTrigger.Insult) { ActionEvent personInsultsMe = new ActionEvent(EventType.Action, false, "other", intensity * 0.5); events.Add(personInsultsMe); ConsequenceEvent meIsInsulted = new ConsequenceEvent(EventType.Consequence, false, "me", intensity * 0.6, false, true); events.Add(meIsInsulted); events.Add(new ActionConsequenceEvent(EventType.ActionConsequence, false, meIsInsulted, personInsultsMe)); } else if (trigger == EmotionTrigger.Praise) { ActionEvent personPraisesMe = new ActionEvent(EventType.Action, true, "other", intensity * 0.6); events.Add(personPraisesMe); ConsequenceEvent meIsPraised = new ConsequenceEvent(EventType.Consequence, true, "me", intensity * 0.5, false, true); events.Add(meIsPraised); events.Add(new ActionConsequenceEvent(EventType.ActionConsequence, true, meIsPraised, personPraisesMe)); } else if (trigger == EmotionTrigger.Hit) { ActionEvent personHitsMe = new ActionEvent(EventType.Action, false, "other", intensity); ConsequenceEvent meIsHurt = new ConsequenceEvent(EventType.Consequence, false, "me", intensity * 1.1, false, true); ConsequenceEvent meWillBeHurtMore = new ConsequenceEvent(EventType.Consequence, false, "me", intensity * 0.5, true, true); events.Add(personHitsMe); events.Add(meIsHurt); events.Add(new ActionConsequenceEvent(EventType.ActionConsequence, false, meIsHurt, personHitsMe)); events.Add(meWillBeHurtMore); } else if (trigger == EmotionTrigger.Heal) { ActionEvent personHealsMe = new ActionEvent(EventType.Action, true, "other", intensity); ConsequenceEvent meIsHealed = new ConsequenceEvent(EventType.Consequence, true, "me", intensity * 1.1, false, true); events.Add(personHealsMe); events.Add(meIsHealed); events.Add(new ActionConsequenceEvent(EventType.ActionConsequence, true, meIsHealed, personHealsMe)); } else if (trigger == EmotionTrigger.Ease) { ActionEvent meEase = new ActionEvent(EventType.Action, true, "me", intensity); ConsequenceEvent meIsEased = new ConsequenceEvent(EventType.Consequence, true, "me", intensity * 0.5, false, true); events.Add(meEase); events.Add(meIsEased); events.Add(new ActionConsequenceEvent(EventType.ActionConsequence, true, meIsEased, meEase)); } else if (trigger == EmotionTrigger.Unease) { ActionEvent meUnEase = new ActionEvent(EventType.Action, false, "me", intensity); ConsequenceEvent meIsUnEased = new ConsequenceEvent(EventType.Consequence, false, "me", intensity * 0.5, false, true); events.Add(meUnEase); events.Add(meIsUnEased); events.Add(new ActionConsequenceEvent(EventType.ActionConsequence, false, meIsUnEased, meUnEase)); } return(events); }
public ActionConsequenceEvent(EventType eventType, bool positiveEvent, ConsequenceEvent consequence, ActionEvent action) : base(eventType, positiveEvent) { _consequence = consequence; _action = action; }