public void Init(GameIDType gameID, PlayerIDType myPlayerID, Dictionary <PlayerIDType, GamePlayer> players, MapDetails map, GameStanding distributionStanding, GameSettings gameSettings, int numberOfTurns, Dictionary <PlayerIDType, PlayerIncome> incomes, GameOrder[] prevTurn, GameStanding latestTurnStanding, GameStanding previousTurnStanding, Dictionary <PlayerIDType, TeammateOrders> teammatesOrders, List <CardInstance> cards, int cardsMustPlay, Stopwatch timer, List <string> directives) { this.DistributionStandingOpt = distributionStanding; this.Standing = latestTurnStanding; this.PlayerID = myPlayerID; this.Players = players; this.Map = map; this.Settings = gameSettings; this.TeammatesOrders = teammatesOrders; this.Cards = cards; this.CardsMustPlay = cardsMustPlay; this.Incomes = incomes; this.BaseIncome = Incomes[PlayerID]; this.EffectiveIncome = BaseIncome.Clone(); this.Neighbors = players.Keys.ExceptOne(PlayerID).ConcatOne(TerritoryStanding.NeutralPlayerID).ToDictionary(o => o, o => new Neighbor(this, o)); this.Opponents = players.Values.Where(o => o.State == GamePlayerState.Playing && !IsTeammateOrUs(o.ID)).ToList(); this.IsFFA = Opponents.Count > 1 && (Opponents.Any(o => o.Team == PlayerInvite.NoTeam) || Opponents.GroupBy(o => o.Team).Count() > 1); this.WeightedNeighbors = WeightNeighbors(); this.Timer = timer; this.Directives = directives; if (tracker.isInit()) { tracker.update(this); } else { tracker.init(this); } AILog.Log("BotMain", "PyBot initialized. Starting at " + timer.Elapsed.TotalSeconds + " seconds"); }
public void Init(GameIDType gameID, PlayerIDType myPlayerID, Dictionary <PlayerIDType, GamePlayer> players, MapDetails map, GameStanding distributionStanding, GameSettings gameSettings, int numberOfTurns, Dictionary <PlayerIDType, PlayerIncome> incomes, GameOrder[] prevTurn, GameStanding latestTurnStanding, GameStanding previousTurnStanding, Dictionary <PlayerIDType, TeammateOrders> teammatesOrders, List <CardInstance> cards, int cardsMustPlay, Stopwatch timer, List <string> directives) { this.Me = players[myPlayerID]; this.Players = players; this.NumberOfTurns = numberOfTurns; this.Settings = gameSettings; this.Map = map; this.DistributionStanding = distributionStanding; this.LatestStanding = latestTurnStanding; this.PreviousTurnStanding = previousTurnStanding; this.MyIncome = incomes[myPlayerID]; this.PreviousTurn = prevTurn; //teammatesOrders //cards //cardsMustPlay this.BotMap = new BotMap(this, Map, LatestStanding ?? DistributionStanding); }
public void Init(GameIDType gameID, PlayerIDType myPlayerID, Dictionary <PlayerIDType, GamePlayer> players, MapDetails map, GameStanding distributionStanding, GameSettings settings, int numTurns, Dictionary <PlayerIDType, PlayerIncome> playerIncomes, GameOrder[] prevTurn, GameStanding latestTurnStanding, GameStanding previousTurnStanding, Dictionary <PlayerIDType, TeammateOrders> teammatesOrders, List <CardInstance> cards, int cardsMustPlay, Stopwatch timer, List <string> directives) { this.Players = players; this.Me = players[myPlayerID]; this.Settings = settings; this.Map = map; this.VisibleMap = new BotMap(this); foreach (var bonus in this.Map.Bonuses.Values) { VisibleMap.Bonuses.Add(bonus.ID, new BotBonus(VisibleMap, bonus.ID)); } foreach (var terr in this.Map.Territories.Values) { VisibleMap.Territories.Add(terr.ID, new BotTerritory(VisibleMap, terr.ID, TerritoryStanding.FogPlayerID, new Armies(0))); } VisibleMap = BotMap.FromStanding(this, latestTurnStanding); if (numTurns > 0) { LastVisibleMapX = BotMap.FromStanding(this, previousTurnStanding); } this.DistributionStanding = distributionStanding; this.NumberOfTurns = numTurns; this.PlayerIncomes = playerIncomes; this.PrevTurn = prevTurn; this.TeammatesOrders = teammatesOrders ?? new Dictionary <PlayerIDType, TeammateOrders>(); var allTeammatesOrders = TeammatesOrders.Values.Where(o => o.Orders != null).SelectMany(o => o.Orders).ToList(); this.CardsPlayedByTeammates = allTeammatesOrders.OfType <GameOrderPlayCard>().Select(o => o.CardInstanceID).Concat(allTeammatesOrders.OfType <GameOrderDiscard>().Select(o => o.CardInstanceID)).ToHashSet(true); this.Cards = cards; this.CardsMustPlay = cardsMustPlay; this.CardsHandler.initCards(); }