Skip to content

Commit

Permalink
Move dart's sprite action initialisation to the constructor(s) (#2567)
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Narre authored Aug 4, 2023
1 parent 081f81a commit ecb9350
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion src/badguy/dart.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ Dart::Dart(const ReaderMapping& reader) :
SoundManager::current()->preload(DART_SOUND);
SoundManager::current()->preload("sounds/darthit.wav");
SoundManager::current()->preload("sounds/stomp.wav");

set_action("flying", m_dir);
}

Dart::Dart(const Vector& pos, Direction d, const BadGuy* parent_, const std::string& sprite) :
Expand All @@ -49,6 +51,8 @@ Dart::Dart(const Vector& pos, Direction d, const BadGuy* parent_, const std::str
SoundManager::current()->preload(DART_SOUND);
SoundManager::current()->preload("sounds/darthit.wav");
SoundManager::current()->preload("sounds/stomp.wav");

set_action("flying", m_dir);
}

bool
Expand All @@ -66,7 +70,6 @@ Dart::initialize()
{
m_physic.set_velocity_x(m_dir == Direction::LEFT ? -::DART_SPEED : m_dir == Direction::RIGHT ? ::DART_SPEED : 0);
m_physic.set_velocity_y(m_dir == Direction::UP ? -::DART_SPEED : m_dir == Direction::DOWN ? ::DART_SPEED : 0);
set_action("flying", m_dir);
}

void
Expand Down

0 comments on commit ecb9350

Please sign in to comment.