Optionaloptions: ContainerOptions<ContainerChild>drops every live pop-up at once - a scene change, say
Spawns a pop-up at options.x/options.y, lifting the lines already there out of its way.
The newcomer stays exactly where it was asked to appear; anything sharing its key that it
would overlap moves up, newest first, each one measured against the line below it and each
nudge costing it a little life - Java's order, so a stack grows upward and self-limits. The
decision is floatingTextStackMoves; this method only assigns what that plan says.
drives every live pop-up, then forgets the ones that have finished and removed themselves
Owns the pop-ups a game spawns over world points: one
pushper number, oneupdate(dt)to drive them all, and no bookkeeping left to the caller.The alternative - every call site constructing, positioning, collecting and destroying its own
FloatingText- is where the stacking rule gets forgotten and duplicate numbers land on top of each other, which is the whole reason this exists rather than being left to the game.Example