void ShipSelectionScreen::updateCrewTypeOptions() { game_master_button->hide(); window_button->hide(); window_angle->hide(); topdown_button->hide(); main_screen_button->setVisible(canDoMainScreen()); main_screen_button->setValue(false); game_master_button->setValue(false); window_button->setValue(false); topdown_button->setValue(false); for(int n=0; n<max_crew_positions; n++) { crew_position_button[n]->setValue(false)->hide(); } switch(crew_type_selector->getSelectionIndex()) { case 0: for(int n=helmsOfficer; n<=relayOfficer; n++) crew_position_button[n]->show(); break; case 1: for(int n=tacticalOfficer; n<=operationsOfficer; n++) crew_position_button[n]->show(); break; case 2: crew_position_button[singlePilot]->show(); crew_position_button[damageControl]->show(); crew_position_button[powerManagement]->show(); crew_position_button[databaseView]->show(); break; case 3: main_screen_button->hide(); game_master_button->setVisible(game_server); window_button->setVisible(canDoMainScreen()); window_angle->setVisible(canDoMainScreen()); topdown_button->setVisible(canDoMainScreen()); break; } for(int n=0; n<max_crew_positions; n++) { if (!crew_position_button[n]->isVisible()) my_player_info->setCrewPosition(ECrewPosition(n), false); else crew_position_button[n]->setValue(my_player_info->crew_position[n]); } updateReadyButton(); }
void ShipSelectionScreen::updateCrewTypeOptions() { // Hide and unselect alternative and view screens. game_master_button->hide(); window_button->hide(); window_angle->hide(); topdown_button->hide(); cinematic_view_button->hide(); main_screen_button->setVisible(canDoMainScreen()); main_screen_button->setValue(false); game_master_button->setValue(false); window_button->setValue(false); topdown_button->setValue(false); cinematic_view_button->setValue(false); // Hide and unselect each crew position button. for(int n = 0; n < max_crew_positions; n++) { crew_position_button[n]->setValue(false)->hide(); } // Choose which set of screens to list from the crew type selector index. switch(crew_type_selector->getSelectionIndex()) { case 0: for(int n = helmsOfficer; n <= relayOfficer; n++) { crew_position_button[n]->show(); } break; case 1: for(int n = tacticalOfficer; n <= operationsOfficer; n++) crew_position_button[n]->show(); break; case 2: crew_position_button[singlePilot]->show(); crew_position_button[damageControl]->show(); crew_position_button[powerManagement]->show(); crew_position_button[databaseView]->show(); break; case 3: main_screen_button->hide(); game_master_button->setVisible(game_server); window_button->setVisible(canDoMainScreen()); window_angle->setVisible(canDoMainScreen()); topdown_button->setVisible(canDoMainScreen()); cinematic_view_button->setVisible(canDoMainScreen()); break; } // For each crew position, unselect the position if the button is hidden // and select the button if the current player has already selected that // position. for(int n = 0; n < max_crew_positions; n++) { if (!crew_position_button[n]->isVisible()) my_player_info->commandSetCrewPosition(ECrewPosition(n), false); else crew_position_button[n]->setValue(my_player_info->crew_position[n]); } // Update the state of the Ready button, because position changes can // affect player readiness. updateReadyButton(); }