Accessing Battle Results
The highlighted comment was created in this revision.
There needs to be a way for a third party (e.g. RoboJogger) to access battle results (on the fly results highly preferable). It looks like I could use ScoreLog to read results from the XML result file after it is created, but it would be preferable to have a way to add a listener that is notified each time a new battle result is available. For example, RoboRunner might allow third parties to add their own BattleResultHandler in addition to or in replacement of the one RoboRunner uses internally. Thoughts?
Yep, that makes sense. It' similar to what I have internally from RoboRunner to BattleRunner with the BattleRunner.BattleResultHandler interface. That's a pretty low level interface that BattleRunner calls after every battle, passing just raw scores and elapsed time. Then RoboRunner adds all the score processing / storing / displaying.
I think when you're listening to RoboRunner, you might want some higher level data too, like avg score and number of battles. So I think adding a new / similar listener to the RoboRunner class makes more sense than just letting you add more custom instances of the existing BattleResultHandler. The new interface method could take the raw scores and elapsed time, as now, plus whatever other summary data you want. At the end of RoboRunner's BattleResultHandler.processResults(), we call the higher level listener, if it's been set.
Does that sound reasonable?