void Scene_Battle_Rpg2k3::ProcessActions() { if (Main_Data::game_party->GetBattlerCount() == 0) { Game_Temp::battle_result = Game_Temp::BattleVictory; Scene::Pop(); } if (!battle_actions.empty()) { if (battle_actions.front()->IsDead()) { // No zombies allowed ;) RemoveCurrentAction(); } else if (ProcessBattleAction(battle_actions.front()->GetBattleAlgorithm().get())) { NextTurn(); RemoveCurrentAction(); if (CheckResultConditions()) { return; } } } if (help_window->GetVisible() && message_timer > 0) { message_timer--; if (message_timer <= 0) help_window->SetVisible(false); } switch (state) { case State_Start: SetState(State_SelectOption); break; case State_SelectActor: case State_AutoBattle: case State_Battle: // no-op break; case State_SelectEnemyTarget: { static int flash_count = 0; Game_Enemy* target = static_cast<Game_Enemy*>(Main_Data::game_enemyparty->GetAliveEnemies()[target_window->GetIndex()]); Sprite_Battler* sprite = Game_Battle::GetSpriteset().FindBattler(target); if (sprite) { ++flash_count; if (flash_count == 60) { sprite->Flash(Color(255, 255, 255, 100), 15); flash_count = 0; } } break; } case State_AllyAction: case State_EnemyAction: break; case State_Escape: Escape(); break; default: break; } }
void BattleAnimationBattlers::Flash(Color c) { for (std::vector<Game_Battler*>::const_iterator it = battlers.begin(); it != battlers.end(); ++it) { Sprite_Battler* sprite = Game_Battle::GetSpriteset().FindBattler(*it); if (sprite) sprite->Flash(c, flash_duration); } }
void Scene_Battle_Rpg2k::ProcessActions() { switch (state) { case State_Start: if (DisplayMonstersInMessageWindow()) { SetState(State_SelectOption); CheckResultConditions(); } break; case State_SelectOption: // No Auto battle/Escape when all actors are sleeping or similar if (!Main_Data::game_party->IsAnyControllable()) { SelectNextActor(); } break; case State_SelectActor: case State_AutoBattle: CheckResultConditions(); if (help_window->GetVisible() && message_timer > 0) { message_timer--; if (message_timer <= 0) help_window->SetVisible(false); } break; case State_Battle: if (!battle_actions.empty()) { if (battle_actions.front()->IsDead()) { // No zombies allowed ;) RemoveCurrentAction(); } else if (ProcessBattleAction(battle_actions.front()->GetBattleAlgorithm().get())) { RemoveCurrentAction(); battle_message_window->Clear(); if (CheckResultConditions()) { return; } } } else { // Everybody acted actor_index = 0; SetState(State_SelectOption); } break; case State_SelectEnemyTarget: { static int flash_count = 0; std::vector<Game_Battler*> enemies; Main_Data::game_enemyparty->GetActiveBattlers(enemies); Game_Enemy* target = static_cast<Game_Enemy*>(enemies[target_window->GetIndex()]); Sprite_Battler* sprite = Game_Battle::GetSpriteset().FindBattler(target); if (sprite) { ++flash_count; if (flash_count == 60) { sprite->Flash(Color(255, 255, 255, 100), 15); flash_count = 0; } } break; } case State_Victory: Scene::Pop(); break; case State_Defeat: if (Player::battle_test_flag || Game_Temp::battle_defeat_mode != 0) { Scene::Pop(); } else { Scene::Push(EASYRPG_MAKE_SHARED<Scene_Gameover>()); } break; case State_Escape: Escape(); break; default: break; } }