Die Events auf Simulationsebene werden in Sim::Insect definiert und
sind für die Übermittlung von Ereignissen vom Server zum Client zuständig.
Es wird dabei wird zunächst unterschieden zwischen
Erstere sind für Ergebnisse von Aktionen zuständig, werden allerdings von der momentanen Implementation nicht unterstützt, letztere sind für die Übermittlung von Beobachtungen des zugehörigen Insektes zuständig. Die ObservationEvents lassen sich noch einmal unterteilen in
union Event switch (EventType) { case aDoEvent: DoEvent Do; case aObservationEvent: ObservationEvent Observation; }; enum EventType { aDoEvent, aObservationEvent }; struct DoEvent { DoEventKind theKind; DoEventResult theResult; }; enum DoEventKind { Move, Fight, Eat, Hold }; enum DoEventResult { Done, Failed }; union ObservationEvent switch(ObservationEventKind) { case Thing: ObservationThingEvent Thing; case Attr: ObservationAttrEvent Attr; case Timeout: boolean dummy; }; enum ObservationEventKind { Thing, Attr, Timeout }; struct ObservationThingEvent { ThingIndex Thing; ThingType Type; Position Pos; Volume Vol; }; struct ObservationAttrEvent { AttrType Attr; AttrValue Value; };