Queue position not before the current time.
Name building a building 'construct' for less overloading of the term build.
Add construction task and assignment to avoid error.
Fix build order item positioning, not using offset.
Split up Task into IdleTask, HarvestTask and ConstructionTask. This is the preparation for a refactoring to make construction tasks work.
Get rid of hierarchy Assigments which was now just parallel of Tasks.
Buildings always have the source 'villager'.
Turn interface IQueue into class Queue.
Add short hand to get the end time of a queue.
Make shorthand to check if queue is empty.
Helper to get last item in a queue.
Added push method that updates length to queue, made items private, and moved it to build.
Rename queue.length to duration to avoid confusion with array and make it private.
Remove offset, which is now obsolete.
Moved queue creation for new buildings into BuildOrderService.
Removed no longer necessary cast.
Moved Buildable to core. This is a prerequisite for making an interface for BuildOrderService in core (and thus accessible from Tasks).
Move initial task assignment to BuildOrderService.
Return only queue.end, not the build.Queue from BuildOrderService.enqueueBuildableItem_. This is necessary to move this method to an interface in core (because core cannot depend on build).
Rename enqueueBuildableItem to enqueueBuildable.