Rewrite managers to something more similiar to v4 #13
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Refactors the bot and script managers to be more similar to v4. Users instead implement a interface called
IBotand its methods:GetInitialLoadout,GetOutput,OnMatchComms, andRetire. The bot is managed by a BotManager (eitherSingleThreadBotManager,MultiThreadBotManager, orHivemindManager) which handles the lifetime of the bot and the packet communication with RLBot. Users can also easily create their own managers using the abstract classBaseAgentManager. The manager creates the bot using a factory method that is passed to it on creation. Example:On major difference to v4 is that the RLBot connection is passed around as well ala dependency injection. In v4, RLBotInterface was a static class that could be called everywhere. The bot needs RLBot to do rendering, send match comms, set game state, and set loadout. We could create a facade for RLBot if we want to hide the other functionalities of the RLBot connection, but the freedom is nice, too. Let me know what you think.