MCPcopy Create free account
hub / github.com/EasyRPG/Player / ProcessBattleActionStartAnimation

Method ProcessBattleActionStartAnimation

src/scene_battle_rpg2k3.cpp:2334–2389  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2332}
2333
2334Scene_Battle_Rpg2k3::BattleActionReturn Scene_Battle_Rpg2k3::ProcessBattleActionStartAnimation(Game_BattleAlgorithm::AlgorithmBase* action) {
2335 auto* source = action->GetSource();
2336 bool ranged_weapon = false;
2337
2338 if (source->GetType() == Game_Battler::Type_Ally) {
2339 auto* actor = static_cast<Game_Actor*>(source);
2340 auto* sprite = actor->GetActorBattleSprite();
2341 if (sprite) {
2342 const auto pose = AdjustPoseForDirection(action->GetSource(), action->GetSourcePose());
2343 if (pose != lcf::rpg::BattlerAnimation::Pose_Idle) {
2344 auto action_state = static_cast<Sprite_Actor::AnimationState>(pose + 1);
2345
2346 if (action->GetType() == Game_BattleAlgorithm::Type::Normal) {
2347 sprite->SetNormalAttacking(true);
2348 auto* weapon = actor->GetWeaponSprite();
2349 int weapon_animation_id = 0;
2350 if (weapon) {
2351 auto* weapon_animation_data = action->GetWeaponAnimationData();
2352 if (weapon_animation_data) {
2353 if (weapon_animation_data->type == lcf::rpg::BattlerAnimationItemSkill::AnimType_weapon) {
2354 if (weapon_animation_data->weapon_animation_id >= 0) {
2355 weapon->SetWeaponAnimation(weapon_animation_data->weapon_animation_id + 1);
2356 weapon->StartAttack(action->GetSourcePose() == lcf::rpg::BattlerAnimation::Pose_AttackLeft);
2357 }
2358 } else {
2359 if (weapon_animation_data->type == lcf::rpg::BattlerAnimationItemSkill::AnimType_battle) {
2360 weapon_animation_id = weapon_animation_data->battle_animation_id;
2361 }
2362 }
2363 if (weapon_animation_data->ranged) {
2364 ranged_weapon = true;
2365 }
2366 }
2367 }
2368 sprite->SetAnimationState(
2369 action_state,
2370 Sprite_Actor::LoopState_WaitAfterFinish,
2371 weapon_animation_id);
2372 } else {
2373 sprite->SetAnimationState(
2374 action_state,
2375 Sprite_Actor::LoopState_WaitAfterFinish);
2376 }
2377 } else {
2378 sprite->SetAnimationLoop(Sprite_Actor::LoopState_DefaultAnimationAfterFinish);
2379 }
2380 }
2381 }
2382
2383 if (ranged_weapon) {
2384 SetBattleActionState(BattleActionState_CBARangedWeaponInit);
2385 } else {
2386 SetBattleActionState(BattleActionState_Animation);
2387 }
2388 return BattleActionReturn::eWait;
2389}
2390
2391Scene_Battle_Rpg2k3::BattleActionReturn Scene_Battle_Rpg2k3::ProcessBattleActionCBARangedWeaponInit(Game_BattleAlgorithm::AlgorithmBase* action) {

Callers

nothing calls this directly

Calls 12

AdjustPoseForDirectionFunction · 0.85
GetSourceMethod · 0.80
GetActorBattleSpriteMethod · 0.80
GetSourcePoseMethod · 0.80
SetNormalAttackingMethod · 0.80
GetWeaponSpriteMethod · 0.80
SetWeaponAnimationMethod · 0.80
StartAttackMethod · 0.80
SetAnimationStateMethod · 0.80
SetAnimationLoopMethod · 0.80
GetTypeMethod · 0.45

Tested by

no test coverage detected