internal override Event ReadEntry(BinaryReaderEx br) { EventType type = br.GetEnum32 <EventType>(br.Position + 0xC); switch (type) { case EventType.Treasure: return(Treasures.EchoAdd(new Event.Treasure(br))); case EventType.Generator: return(Generators.EchoAdd(new Event.Generator(br))); case EventType.ObjAct: return(ObjActs.EchoAdd(new Event.ObjAct(br))); case EventType.MapOffset: return(MapOffsets.EchoAdd(new Event.MapOffset(br))); case EventType.PseudoMultiplayer: return(PseudoMultiplayers.EchoAdd(new Event.PseudoMultiplayer(br))); case EventType.PatrolInfo: return(PatrolInfo.EchoAdd(new Event.PatrolInfo(br))); case EventType.PlatoonInfo: return(PlatoonInfo.EchoAdd(new Event.PlatoonInfo(br))); case EventType.Other: return(Others.EchoAdd(new Event.Other(br))); default: throw new NotImplementedException($"Unsupported event type: {type}"); } }
/// <summary> /// Adds an event to the appropriate list for its type; returns the event. /// </summary> public Event Add(Event evnt) { switch (evnt) { case Event.Treasure e: Treasures.Add(e); break; case Event.Generator e: Generators.Add(e); break; case Event.ObjAct e: ObjActs.Add(e); break; case Event.MapOffset e: MapOffsets.Add(e); break; case Event.PseudoMultiplayer e: PseudoMultiplayers.Add(e); break; case Event.PatrolInfo e: PatrolInfo.Add(e); break; case Event.PlatoonInfo e: PlatoonInfo.Add(e); break; case Event.Other e: Others.Add(e); break; default: throw new ArgumentException($"Unrecognized type {evnt.GetType()}.", nameof(evnt)); } return(evnt); }