change weapon for ranged skills

Signed-off-by: Pavel Okhlopkov <pavel.okhlopkov@flant.com>
This commit is contained in:
Pavel Okhlopkov 2026-04-10 23:01:16 +03:00
parent fe1dc5e02b
commit 6ba0edc2fb
6 changed files with 176 additions and 4 deletions

View file

@ -980,14 +980,23 @@ void Application::setState(AppState newState) {
if (renderer) {
// Ranged auto-attack spells: Auto Shot (75), Shoot (5019), Throw (2764)
if (spellId == 75 || spellId == 5019 || spellId == 2764) {
if (appearanceComposer_ && !appearanceComposer_->isShowingRanged())
appearanceComposer_->showRangedWeapon(true);
if (auto* ac = renderer->getAnimationController()) ac->triggerRangedShot();
} else if (spellId != 0) {
if (appearanceComposer_ && appearanceComposer_->isShowingRanged())
appearanceComposer_->showRangedWeapon(false);
if (auto* ac = renderer->getAnimationController()) ac->triggerSpecialAttack(spellId);
} else {
if (appearanceComposer_ && appearanceComposer_->isShowingRanged())
appearanceComposer_->showRangedWeapon(false);
if (auto* ac = renderer->getAnimationController()) ac->triggerMeleeSwing();
}
}
});
gameHandler->setRangedWeaponSwapCallback([this](bool show) {
if (appearanceComposer_) appearanceComposer_->showRangedWeapon(show);
});
gameHandler->setKnockBackCallback([this](float vcos, float vsin, float hspeed, float vspeed) {
if (renderer && renderer->getCameraController()) {
renderer->getCameraController()->applyKnockBack(vcos, vsin, hspeed, vspeed);
@ -1216,6 +1225,10 @@ void Application::update(float deltaTime) {
appearanceComposer_->setWeaponsSheathed(false);
appearanceComposer_->loadEquippedWeapons();
}
// Swap back to melee weapon when auto-attack stops
if (!autoAttacking && wasAutoAttacking_ && appearanceComposer_ && appearanceComposer_->isShowingRanged()) {
appearanceComposer_->showRangedWeapon(false);
}
wasAutoAttacking_ = autoAttacking;
}