Move dart's sprite action initialisation to the constructor(s) #2567
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.
Since the dart's direction is already known at the time of the Dart object being created, there's no reason the sprite action shouldn't be initialised in the constructor. This fixes an oversight from #2554 where the dart's position when spawning from a DartTrap is calculated from the sprite before its proper action is set, resulting in the maths not being correct for three of the four directions. I didn't notice this before since the dart is only spawned off by a few pixels, but it would be a bigger problem for custom dart sprites. Moving the sprite action to the constructor(s) fixes this, since the sprite action is already set properly at the time the dart's position is calculated when being shot out of a DartTrap.
EDIT: Alternatively, I could keep the sprite action initialisation in Dart::initialize() and set the action manually in DartTrap::fire() before Dart::initialize() is called. That would fix the problem too. Whichever you think is better.