Skip to content

Processing and Data Object Structure

Todd Taylor edited this page Sep 27, 2024 · 8 revisions

Overview

The following screen shot is an example of what the application looks like after parsing a group of log files.

Main UI

Processing Steps

When you click on the Parse Log(s) button in the UI, the following series of events occurs.

  • The application uses the configured combat log folder, and file search pattern, to get a list of combat log files.
  • Each line in every file is parsed, and converted into an object called a CombatEvent.
  • All of the CombatEvents from all files are sorted by timestamp, and the list of CombatEvents are used to generate the Combat object hierarchy.

Combat Object Hierarchy

Steps taken to generate a Combat Hierarchy:

  • The list of CombatEvents is used to determine periods of time when the player is in combat. Each of these instances becomes a Combat object.
    • This list is what populates the "Combat List" in the UI. Circled in green.
  • Each Combat object uses the sub-list of CombatEvents it's assigned for the time period, and divides them into a collection of Players and Non-Players.
  • The Player and Non-Player lists inside of the Combat object, are lists of CombatEntity objects. A CombatEntity represents a Player and Non-Player character.
    • When a Combat is selected (from the section circled in green), the section of the UI circled in red is populated with it's information, which includes it's list of Players and Non-Players.
  • Each CombatEntity has a list of CombatEvents related to the Player or Non-Player.
    • When a Player or Non-Player is selected (from the section circled in red), it's list of CombatEvent objects are what populate the data grid circled in blue.
  • Each CombatEntity has a list of CombatEvents related to the Player or Non-Player.
    • When a Player or Non-Player is selected (from the section circled in red), it's list of CombatEvent broken down by event type, are listed in the TreeView circled in orange.
  • Each CombatEntity has a list of CombatEvents related to the Player or Non-Player.
    • When a Player or Non-Player is selected (from the section circled in red), it's list of CombatEvent Magnitude and MagnitudeBase values are displayed in the Plot circled in yellow.

Class Diagram

A high level class diagram of the 3 objects which makeup the Combat object hierarchy. Note: Only relevant properties are shown.

Combat
{
  PlayerEntities: List<CombatEntity>
  NonPlayerEntities: List<CombatEntity>
}

CombatEntity
{
  CombatEventList: List<CombatEvent>
}

// Each CombatEvent represents a line from the STO combat logs, and each property 
// shown represents a parsed piece of data from that line.
CombatEvent
{
  Timestamp
  OwnerDisplay
  OwnerId
  SourceLabel
  SourceId
  TargetLabel
  TargetId
  EventLabel
  EventId
  Type
  Flags
  Magnitude
  MagnitudeBase
}