Right now most of the GameOverlayComponents bundle together the game-specific logic for deriving the variables we want to display, and the actual drawing logic. This means that components with the same (or very similar) drawing logic but different game data parsing require separate game component classes.
We should separate the drawing logic from the game data operations so we can re-use drawing classes for multiple components that share drawing logic, and re-use game operation methods for components that share game data operations.
Right now most of the GameOverlayComponents bundle together the game-specific logic for deriving the variables we want to display, and the actual drawing logic. This means that components with the same (or very similar) drawing logic but different game data parsing require separate game component classes.
We should separate the drawing logic from the game data operations so we can re-use drawing classes for multiple components that share drawing logic, and re-use game operation methods for components that share game data operations.