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

Method UpdateActorSelection

src/scene_menu.cpp:260–315  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

258}
259
260void Scene_Menu::UpdateActorSelection() {
261 if (Input::IsTriggered(Input::CANCEL)) {
262 Main_Data::game_system->SePlay(Main_Data::game_system->GetSystemSE(Main_Data::game_system->SFX_Cancel));
263 command_window->SetActive(true);
264 menustatus_window->SetActive(false);
265 menustatus_window->SetIndex(-1);
266 } else if (Input::IsTriggered(Input::DECISION)) {
267 switch (command_options[command_window->GetIndex()]) {
268 case Skill:
269 if (!menustatus_window->GetActor()->CanAct()) {
270 Main_Data::game_system->SePlay(Main_Data::game_system->GetSystemSE(Main_Data::game_system->SFX_Buzzer));
271 return;
272 }
273 Main_Data::game_system->SePlay(Main_Data::game_system->GetSystemSE(Main_Data::game_system->SFX_Decision));
274 Scene::Push(std::make_shared<Scene_Skill>(Main_Data::game_party->GetActors(), menustatus_window->GetIndex()));
275 break;
276 case Equipment:
277 Main_Data::game_system->SePlay(Main_Data::game_system->GetSystemSE(Main_Data::game_system->SFX_Decision));
278 Scene::Push(std::make_shared<Scene_Equip>(Main_Data::game_party->GetActors(), menustatus_window->GetIndex()));
279 break;
280 case Status:
281 Main_Data::game_system->SePlay(Main_Data::game_system->GetSystemSE(Main_Data::game_system->SFX_Decision));
282 Scene::Push(std::make_shared<Scene_Status>(Main_Data::game_party->GetActors(), menustatus_window->GetIndex()));
283 break;
284 case Row:
285 {
286 Main_Data::game_system->SePlay(Main_Data::game_system->GetSystemSE(Main_Data::game_system->SFX_Decision));
287 // Don't allow entire party in the back row.
288 const auto& actors = Main_Data::game_party->GetActors();
289 int num_in_back = 0;
290 for (auto* actor: actors) {
291 if (actor->GetBattleRow() == Game_Actor::RowType::RowType_back) {
292 ++num_in_back;
293 }
294 }
295 Game_Actor* actor = actors[menustatus_window->GetIndex()];
296 if (actor->GetBattleRow() == Game_Actor::RowType::RowType_front) {
297 if (num_in_back < int(actors.size() - 1)) {
298 actor->SetBattleRow(Game_Actor::RowType::RowType_back);
299 }
300 } else {
301 actor->SetBattleRow(Game_Actor::RowType::RowType_front);
302 }
303 menustatus_window->Refresh();
304 break;
305 }
306 default:
307 assert(false);
308 break;
309 }
310
311 command_window->SetActive(true);
312 menustatus_window->SetActive(false);
313 menustatus_window->SetIndex(-1);
314 }
315}

Callers

nothing calls this directly

Calls 11

SePlayMethod · 0.80
CanActMethod · 0.80
GetBattleRowMethod · 0.80
SetBattleRowMethod · 0.80
SetActiveMethod · 0.45
SetIndexMethod · 0.45
GetIndexMethod · 0.45
GetActorMethod · 0.45
GetActorsMethod · 0.45
sizeMethod · 0.45
RefreshMethod · 0.45

Tested by

no test coverage detected