Client LuaCsForBarotrauma
BarotraumaShared/SharedSource/Events/EventLog.cs
1 #nullable enable
2 
4 using System.Collections.Generic;
5 using System.Linq;
6 
7 namespace Barotrauma
8 {
12  partial class EventLog
13  {
14  public class Event
15  {
16  public readonly Identifier EventIdentifier;
17  public readonly List<Entry> Entries = new List<Entry>();
18 
19  public Event(Identifier eventPrefabId)
20  {
21  EventIdentifier = eventPrefabId;
22  }
23  }
24 
25  public class Entry
26  {
27  public readonly Identifier Identifier;
28  public string Text;
29 
30  public Entry(Identifier identifier, string text)
31  {
32  Identifier = identifier;
33  Text = text;
34  }
35  }
36 
37  private readonly Dictionary<Identifier, Event> events = new Dictionary<Identifier, Event>();
38 
39  private bool TryAddEntryInternal(Identifier eventPrefabId, Identifier entryId, string text)
40  {
41  if (!events.TryGetValue(eventPrefabId, out Event? ev))
42  {
43  ev = new Event(eventPrefabId);
44  events.Add(eventPrefabId, ev);
45  }
46  Entry? entry = ev.Entries.FirstOrDefault(e => e.Identifier == entryId);
47  if (entry == null)
48  {
49  ev.Entries.Add(new Entry(entryId, text));
50  return true;
51  }
52  else if (entry.Text != text)
53  {
54  entry.Text = text;
55  return true;
56  }
57  return false;
58  }
59 
60  public void Clear()
61  {
62  events.Clear();
63  }
64  }
65 }
readonly Identifier Identifier
Entry(Identifier identifier, string text)
string Text
Used to store logs of scripted events (a sort of "quest log")