//make only one side move void replay_controller::play_side(const unsigned int /*team_index*/, bool){ DBG_REPLAY << "Status turn number: " << turn() << "\n"; DBG_REPLAY << "Replay_Controller turn number: " << current_turn_ << "\n"; DBG_REPLAY << "Player number: " << player_number_ << "\n"; try{ // If a side is empty skip over it. bool has_end_turn = true; if (!current_team().is_empty()) { statistics::reset_turn_stats(current_team().save_id()); play_controller::init_side(player_number_ - 1, true); DBG_REPLAY << "doing replay " << player_number_ << "\n"; // if have reached the end we don't want to execute finish_side_turn and finish_turn // becasue we might not have enough data to execute them (like advancements during turn_end for example) // !has_end_turn == we reached the end of teh replay without finding and end turn tag. has_end_turn = do_replay(player_number_); if(!has_end_turn) { return; } finish_side_turn(); } player_number_++; if (static_cast<size_t>(player_number_) > teams_.size()) { //during the orginal game player_number_ would also be teams_.size(), player_number_ = teams_.size(); finish_turn(); tod_manager_.next_turn(); it_is_a_new_turn_ = true; player_number_ = 1; current_turn_++; gui_->new_turn(); } // This is necessary for replays in order to show possible movements. BOOST_FOREACH(unit &u, units_) { if (u.side() == player_number_) { u.new_turn(); } } update_teams(); update_gui(); } catch(end_level_exception& e){ //VICTORY/DEFEAT end_level_exception shall not return to title screen if (e.result != VICTORY && e.result != DEFEAT) throw; } }
void replay_controller::play_side(const unsigned int /*team_index*/, bool){ if (recorder.at_end()){ return; } DBG_REPLAY << "Status turn number: " << turn() << "\n"; DBG_REPLAY << "Replay_Controller turn number: " << current_turn_ << "\n"; DBG_REPLAY << "Player number: " << player_number_ << "\n"; try{ // If a side is empty skip over it. if (!current_team().is_empty()) { statistics::reset_turn_stats(current_team().save_id()); play_controller::init_side(player_number_ - 1, true); DBG_REPLAY << "doing replay " << player_number_ << "\n"; do_replay(player_number_); finish_side_turn(); // This is necessary for replays in order to show possible movements. for (unit_map::iterator uit = units_.begin(); uit != units_.end(); ++uit) { if (uit->second.side() != player_number_) { uit->second.new_turn(); } } } player_number_++; if (static_cast<size_t>(player_number_) > teams_.size()) { next_turn(); finish_turn(); player_number_ = 1; current_turn_++; } update_teams(); update_gui(); } catch(end_level_exception& e){ //VICTORY/DEFEAT end_level_exception shall not return to title screen if ((e.result != VICTORY) && (e.result != DEFEAT)) { throw e; } } }
static int test_arg(t_env *e, char **av) { int i; i = -1; if (ft_strequ(av[0], "-p")) i = update_port(e, av); else if (ft_strequ(av[0], "-x")) i = update_width(e, av); else if (ft_strequ(av[0], "-y")) i = update_height(e, av); else if (ft_strequ(av[0], "-n")) i = update_teams(e, av); else if (ft_strequ(av[0], "-c")) i = update_nb(e, av); else if (ft_strequ(av[0], "-t")) i = update_time(e, av); else usage(); return (i); }
//make only one side move void replay_controller::play_side(const unsigned int /*team_index*/, bool){ DBG_REPLAY << "Status turn number: " << turn() << "\n"; DBG_REPLAY << "Replay_Controller turn number: " << current_turn_ << "\n"; DBG_REPLAY << "Player number: " << player_number_ << "\n"; try{ // If a side is empty skip over it. if (!current_team().is_empty()) { statistics::reset_turn_stats(current_team().save_id()); play_controller::init_side(player_number_ - 1, true); DBG_REPLAY << "doing replay " << player_number_ << "\n"; do_replay(player_number_); finish_side_turn(); // This is necessary for replays in order to show possible movements. foreach (unit &u, units_) { if (u.side() != player_number_) { u.new_turn(); } } } player_number_++; if (static_cast<size_t>(player_number_) > teams_.size()) { finish_turn(); tod_manager_.next_turn(); it_is_a_new_turn_ = true; player_number_ = 1; current_turn_++; gui_->new_turn(); } update_teams(); update_gui(); }
void replay_controller::replay_show_team1(){ show_everything_ = false; show_team_ = 1; update_teams(); update_gui(); }
void replay_controller::replay_show_everything(){ show_everything_ = true; show_team_ = 0; update_teams(); update_gui(); }
int main(int argc, char** argv) { int retval, i; bool do_update_teams = false, do_update_users = false; bool do_update_hosts = false; update_time_cutoff = time(0) - UPDATE_INTERVAL; check_stop_daemons(); for (i=1; i<argc; i++) { if (!strcmp(argv[i], "-update_teams")) { do_update_teams = true; } else if (!strcmp(argv[i], "-update_users")) { do_update_users = true; } else if (!strcmp(argv[i], "-update_hosts")) { do_update_hosts = true; } else if (!strcmp(argv[i], "-d")) { log_messages.set_debug_level(atoi(argv[++i])); } else { log_messages.printf(MSG_CRITICAL, "Unrecognized arg: %s\n", argv[i]); } } log_messages.printf(MSG_NORMAL, "Starting\n"); retval = config.parse_file(); if (retval) { log_messages.printf(MSG_CRITICAL, "Can't parse config.xml: %s\n", boincerror(retval) ); exit(1); } retval = boinc_db.open(config.db_name, config.db_host, config.db_user, config.db_passwd); if (retval) { log_messages.printf(MSG_CRITICAL, "Can't open DB\n"); exit(1); } retval = boinc_db.set_isolation_level(READ_UNCOMMITTED); if (retval) { log_messages.printf(MSG_CRITICAL, "boinc_db.set_isolation_level: %d; %s\n", retval, boinc_db.error_string() ); } if (do_update_users) { retval = update_users(); if (retval) { log_messages.printf(MSG_CRITICAL, "update_users failed: %d\n", retval); exit(1); } } if (do_update_hosts) { retval = update_hosts(); if (retval) { log_messages.printf(MSG_CRITICAL, "update_hosts failed: %d\n", retval); exit(1); } } if (do_update_teams) { retval = update_teams(); if (retval) { log_messages.printf(MSG_CRITICAL, "update_teams failed: %d\n", retval); exit(1); } } log_messages.printf(MSG_NORMAL, "Finished\n"); return 0; }
//make only one side move possible_end_play_signal replay_controller::play_side() { DBG_REPLAY << "Status turn number: " << turn() << "\n"; DBG_REPLAY << "Replay_Controller turn number: " << current_turn_ << "\n"; DBG_REPLAY << "Player number: " << player_number_ << "\n"; // If a side is empty skip over it. if (!current_team().is_empty()) { statistics::reset_turn_stats(current_team().save_id()); possible_end_play_signal signal = play_controller::init_side(true); if (signal) { switch (boost::apply_visitor(get_signal_type(), *signal) ) { case END_TURN: return signal; case END_LEVEL: //VICTORY/DEFEAT end_level_exception shall not return to title screen LEVEL_RESULT res = boost::apply_visitor(get_result(), *signal); if ( res != VICTORY && res != DEFEAT ) return signal; } } DBG_REPLAY << "doing replay " << player_number_ << "\n"; // if have reached the end we don't want to execute finish_side_turn and finish_turn // becasue we might not have enough data to execute them (like advancements during turn_end for example) try { if(do_replay() != REPLAY_FOUND_END_TURN) { // We reached the end of teh replay without finding and end turn tag. return boost::none; } } catch(end_level_exception& e){ //VICTORY/DEFEAT end_level_exception shall not return to title screen if (e.result != VICTORY && e.result != DEFEAT) { return possible_end_play_signal(e.to_struct()); } } catch (end_turn_exception & e) { return possible_end_play_signal(e.to_struct()); } finish_side_turn(); } player_number_++; if (static_cast<size_t>(player_number_) > gamestate_.board_.teams().size()) { //during the orginal game player_number_ would also be gamestate_.board_.teams().size(), player_number_ = gamestate_.board_.teams().size(); finish_turn(); gamestate_.tod_manager_.next_turn(*resources::gamedata); it_is_a_new_turn_ = true; player_number_ = 1; current_turn_++; gui_->new_turn(); } // This is necessary for replays in order to show possible movements. gamestate_.board_.new_turn(player_number_); update_teams(); update_gui(); return boost::none; }