/// <summary> /// Creates a new game with the following settings: /// - number of players /// - game difficulty /// - available roles list (the roles will be assigned at random, from this list, to the players) /// and performs the initial game setup /// </summary> /// <param name="randomness_provider"></param> /// <param name="number_of_players"></param> /// <param name="game_difficulty"></param> /// <param name="available_roles_list"></param> /// <returns></returns> public static PD_Game Create_Game__AvailableRolesList( Random randomness_provider, int number_of_players, int game_difficulty, List <int> available_roles_list ) { List <int> players = new List <int>(); for (int i = 0; i < number_of_players; i++) { players.Add(i); } List <int> cities = PD_Game_Data_Assistant.Default__Cities(); Dictionary <int, List <int> > neighbors__per__city = PD_Game_Data_Assistant.Default__Neighbors__Per__City(); Dictionary <int, int> infection_type__per__city = PD_Game_Data_Assistant.Default__InfectionType__Per__City(); // cards... List <int> allCityCards = PD_Game_Data_Assistant.Default__CityCards(); List <int> all_infection_cards = PD_Game_Data_Assistant.Default__InfectionCards(); List <int> all_epidemic_cards = PD_Game_Data_Assistant.Default__EpidemicCards(); List <int> temp_roles_list = available_roles_list.CustomDeepCopy(); Dictionary <int, int> role__per__player = new Dictionary <int, int>(); foreach (int player in players) { int role = temp_roles_list.DrawOneRandom(randomness_provider); role__per__player.Add(player, role); } return(new PD_Game( randomness_provider, number_of_players, game_difficulty, players, role__per__player, cities, infection_type__per__city, neighbors__per__city, allCityCards, all_infection_cards, all_epidemic_cards )); }
/// <summary> /// Creates a game with the following settings: /// - game difficulty /// the number of players is set to 4, and the player roles are specific: /// - operations expert, /// - researcher /// - medic /// - scientist /// </summary> /// <param name="randomness_provider"></param> /// <param name="game_difficulty"></param> /// <returns></returns> public static PD_Game Create_Default_Testing( Random randomness_provider, int game_difficulty ) { List <int> players = new List <int>(); for (int i = 0; i < 4; i++) { players.Add(i); } List <int> cities = PD_Game_Data_Assistant.Default__Cities(); Dictionary <int, List <int> > neighbors__per__city = PD_Game_Data_Assistant.Default__Neighbors__Per__City(); Dictionary <int, int> infection_type__per__city = PD_Game_Data_Assistant.Default__InfectionType__Per__City(); // cards... List <int> allCityCards = PD_Game_Data_Assistant.Default__CityCards(); List <int> all_infection_cards = PD_Game_Data_Assistant.Default__InfectionCards(); List <int> all_epidemic_cards = PD_Game_Data_Assistant.Default__EpidemicCards(); Dictionary <int, int> role__per__player = new Dictionary <int, int>() { { 0, PD_Player_Roles.Operations_Expert }, { 1, PD_Player_Roles.Researcher }, { 2, PD_Player_Roles.Medic }, { 3, PD_Player_Roles.Scientist } }; return(new PD_Game( randomness_provider, players.Count, game_difficulty, players, role__per__player, cities, infection_type__per__city, neighbors__per__city, allCityCards, all_infection_cards, all_epidemic_cards )); }
/// <summary> /// Creates a new game with the following settings: /// - number of players /// - game difficulty /// - specific role per player /// and performs the game setup, generaiting a randomized initial state /// </summary> /// <param name="randomness_provider"></param> /// <param name="number_of_players"></param> /// <param name="game_difficulty"></param> /// <param name="role__per__player"></param> /// <returns></returns> public static PD_Game Create_Game__SpecificRolePerPlayer( Random randomness_provider, int number_of_players, int game_difficulty, Dictionary <int, int> role__per__player ) { List <int> players = new List <int>(); for (int i = 0; i < number_of_players; i++) { players.Add(i); } List <int> cities = PD_Game_Data_Assistant.Default__Cities(); Dictionary <int, List <int> > neighbors__per__city = PD_Game_Data_Assistant.Default__Neighbors__Per__City(); Dictionary <int, int> infection_type__per__city = PD_Game_Data_Assistant.Default__InfectionType__Per__City(); // cards... List <int> allCityCards = PD_Game_Data_Assistant.Default__CityCards(); List <int> all_infection_cards = PD_Game_Data_Assistant.Default__InfectionCards(); List <int> all_epidemic_cards = PD_Game_Data_Assistant.Default__EpidemicCards(); return(new PD_Game( randomness_provider, number_of_players, game_difficulty, players, role__per__player, cities, infection_type__per__city, neighbors__per__city, allCityCards, all_infection_cards, all_epidemic_cards )); }