Example #1
0
void game_state::init(const config& level, play_controller & pc)
{
	events_manager_->read_scenario(level);
	gui2::tloadscreen::progress("init teams");
	if (level["modify_placing"].to_bool()) {
		LOG_NG << "modifying placing..." << std::endl;
		place_sides_in_preferred_locations(level);
	}

	LOG_NG << "initialized time of day regions... "    << (SDL_GetTicks() - pc.ticks()) << std::endl;
	for (const config &t : level.child_range("time_area")) {
		tod_manager_.add_time_area(board_.map(),t);
	}

	LOG_NG << "initialized teams... "    << (SDL_GetTicks() - pc.ticks()) << std::endl;

	board_.teams_.resize(level.child_count("side"));

	std::vector<team_builder_ptr> team_builders;

	int team_num = 0;
	for (const config &side : level.child_range("side"))
	{
		if (first_human_team_ == -1) {
			const std::string &controller = side["controller"];
			if (controller == "human") {
				first_human_team_ = team_num;
			}
		}
		team_builder_ptr tb_ptr = create_team_builder(side,
			board_.teams_, level, board_);
		++team_num;
		build_team_stage_one(tb_ptr);
		team_builders.push_back(tb_ptr);
	}
	{
		//sync traits of start units and the random start time.
		random_new::set_random_determinstic deterministic(gamedata_.rng());

		tod_manager_.resolve_random(*random_new::generator);

		for(team_builder_ptr tb_ptr : team_builders)
		{
			build_team_stage_two(tb_ptr);
		}
		for(size_t i = 0; i < board_.teams_.size(); i++) {
			// Labels from players in your ignore list default to hidden
			if(preferences::is_ignored(board_.teams_[i].current_player())) {
				std::string label_cat = "side:" + std::to_string(i + 1);
				board_.hidden_label_categories_ref().push_back(label_cat);
			}
		}
	}

	pathfind_manager_.reset(new pathfind::manager(level));

	lua_kernel_.reset(new game_lua_kernel(nullptr, *this, pc, *reports_));
}
Example #2
0
play_controller::hotkey_handler::hotkey_handler(play_controller & pc, saved_game & sg)
	: play_controller_(pc)
	, menu_handler_(pc.get_menu_handler())
	, mouse_handler_(pc.get_mouse_handler_base())
	, saved_game_(sg)
	, savenames_()
	, wml_commands_()
	, wml_command_pager_(new wmi_pager())
	, last_context_menu_x_(0)
	, last_context_menu_y_(0)
{}
Example #3
0
game_state::game_state(const config & level, play_controller & pc, const tdata_cache & tdata) :
	gamedata_(level),
	board_(tdata, level),
	tod_manager_(level),
	pathfind_manager_(),
	reports_(new reports()),
	lua_kernel_(),
	events_manager_(),
	player_number_(level["playing_team"].to_int() + 1),
	init_side_done_(level["init_side_done"].to_bool(false)),
	start_event_fired_(!level["playing_team"].empty()),
	server_request_number_(level["server_request_number"].to_int()),
	first_human_team_(-1)
{
	init(pc.ticks(), pc, level);
}
Example #4
0
game_state::game_state(const config & level, play_controller & pc, game_board& board) :
	gamedata_(level),
	board_(board),
	tod_manager_(level),
	pathfind_manager_(new pathfind::manager(level)),
	reports_(new reports()),
	lua_kernel_(new game_lua_kernel(NULL, *this, pc, *reports_)),
	events_manager_(),
	player_number_(level["playing_team"].to_int() + 1),
	init_side_done_(level["init_side_done"].to_bool(false)),
	first_human_team_(-1)
{
	init(pc.ticks(), pc, level);

	game_events_resources_ = boost::make_shared<game_events::t_context>(lua_kernel_.get(), this, static_cast<game_display*>(NULL), &gamedata_, &board_.units_, &no_op, boost::bind(&play_controller::current_side, &pc));

	events_manager_.reset(new game_events::manager(level, game_events_resources_));

}