Example #1
0
        public void Solve()
        {
            Dictionary <Interval, long> wall         = new Dictionary <Interval, long>();
            Dictionary <Interval, long> improvements = new Dictionary <Interval, long>();
            HashSet <Interval>          obsolete     = new HashSet <Interval>();
            long day = Tribes.Min(x => x.AttackDay);

            while (Tribes.Any(x => !x.Expired))
            {
                foreach (var tribe in Tribes)
                {
                    NumBreaches += tribe.AttackWall(day, wall, improvements, obsolete);
                }
                foreach (var obsoleteSegement in obsolete)
                {
                    wall.Remove(obsoleteSegement);
                }
                obsolete.Clear();
                foreach (var improvement in improvements)
                {
                    wall[improvement.Key] = improvement.Value;
                }
                improvements.Clear();
                day = Tribes.Min(x => x.Expired ? long.MaxValue : x.AttackDay);
            }
        }
Example #2
0
 public ConsoleApp()
 {
     Settings.CloseExistingBrowserInstances = false;
     browser = new IE(server);
     browser.ShowWindow(NativeMethods.WindowShowStyle.Show);
     playerTribe = GetTribe();
     playerFarmUnits = SetPlayerFarmUnits(playerTribe);
 }
Example #3
0
        public void DbLoaderAdd(ITribe tribe)
        {
            tribeIdGen.Set(tribe.Id);

            if (!Tribes.TryAdd(tribe.Id, tribe))
            {
                return;
            }

            SubscribeEvents(tribe);
        }
Example #4
0
        public void Add(ITribe tribe)
        {
            tribe.Id = tribeIdGen.GetNext();
            if (!Tribes.TryAdd(tribe.Id, tribe))
            {
                return;
            }

            dbManager.Save(tribe);

            SubscribeEvents(tribe);
        }
        /// <summary>
        /// Links the players to their tribes and the tribes to the players.
        /// </summary>
        private void LinkPlayerTribe()
        {
            for (var i = 0; i < Players.Count; i++)
            {
                var player = Players[i];
                player.OwnedTribes = Tribes.Where(t => t.OwnerId == player.Id).ToList();
                player.Tribe       = Tribes.SingleOrDefault(t => t.Id == player.TribeId);
            }

            for (var i = 0; i < Tribes.Count; i++)
            {
                var tribe = Tribes[i];
                tribe.Owner   = Players.SingleOrDefault(p => p.Id == tribe.OwnerId);
                tribe.Players = Players.Where(p => p.TribeId == tribe.Id).ToList();
            }
        }
Example #6
0
        public void Solve2()
        {
            Dictionary <long, long> improvements = new Dictionary <long, long>();
            long day = Tribes.Min(x => x.AttackDay);

            while (Tribes.Any(x => !x.Expired))
            {
                foreach (var tribe in Tribes)
                {
                    NumBreaches += tribe.AttackWall(day, Wall, improvements);
                }
                foreach (var improvement in improvements)
                {
                    Wall[improvement.Key] = improvement.Value;
                }
                improvements.Clear();
                day = Tribes.Min(x => x.Expired ? long.MaxValue : x.AttackDay);
            }
        }
Example #7
0
        public Error Remove(ITribe tribe)
        {
            if (tribe.AssignmentCount > 0)
            {
                return(Error.TribeHasAssignment);
            }

            if (!Tribes.TryRemove(tribe.Id, out tribe))
            {
                return(Error.TribeNotFound);
            }

            strongholdManager.RemoveStrongholdsFromTribe(tribe);

            tribe.Owner.LastDeletedTribe = SystemClock.Now;
            dbManager.Save(tribe.Owner);

            foreach (var tribesman in new List <ITribesman>(tribe.Tribesmen))
            {
                tribe.RemoveTribesman(tribesman.Player.PlayerId, wasKicked: false, doNotRemoveIfOwner: false);
            }

            UnsubscribeEvents(tribe);

            // Soft delete tribe
            dbManager.Query(
                String.Format("UPDATE `{0}` SET deleted = 1, name = @name WHERE id = @id LIMIT 1",
                              Tribe.DB_TABLE),
                new[]
            {
                new DbColumn("id", tribe.Id, DbType.String),
                new DbColumn("name", String.Format("{0} (DELETED)", tribe.Name), DbType.String)
            });

            return(Error.Ok);
        }
Example #8
0
 public bool TryGetObjects(uint tribeId, out ITribe tribe)
 {
     return(Tribes.TryGetTribe(tribeId, out tribe));
 }
Example #9
0
 private string SetPlayerFarmUnits(Tribes playersTribe)
 {
     string[] list = farmUnits.Split(',');
     string farmUnitList;
     switch (playersTribe)
     {
         case Tribes.Teutons:
         {
             Teutons teutons = new Teutons();
             farmUnitList = teutons.GetClassNames(list);
             break;
         }
         case Tribes.Gauls:
         {
             Gauls gauls = new Gauls();
             farmUnitList = gauls.GetClassNames(list);
             break;
         }
         case Tribes.Romans:
         {
             Romans romans = new Romans();
             farmUnitList = romans.GetClassNames(list);
             break;
         }
         default:
         {
             throw new NotImplementedException("Unknown Tribe specified!!!");
         }
     }
     return farmUnitList;
 }
Example #10
0
 private Tribes GetTribe()
 {
     switch (tribe)
     {
         case 1:
         {
             playerTribe = Tribes.Teutons;
             break;
         }
         case 2:
         {
             playerTribe = Tribes.Gauls;
             break;
         }
         case 3:
         {
             playerTribe = Tribes.Romans;
             break;
         }
         default:
         {
             throw new NotImplementedException("Unknown Tribe specified!!!");
         }
     }
     return playerTribe;
 }
Example #11
0
        private static string GetUnitTextBox(Tribes tribes,
            string troopName)
        {
            string textBoxName = "t1";
            switch (tribes)
            {
                case Tribes.Gauls:
                {
                    Gauls units = new Gauls();
                    textBoxName = units.GetTextBoxName(troopName);
                    break;
                }

                case Tribes.Romans:
                {
                    Romans units = new Romans();
                    textBoxName = units.GetTextBoxName(troopName);
                    break;
                }

                case Tribes.Teutons:
                {
                    Romans units = new Romans();
                    textBoxName = units.GetTextBoxName(troopName);
                    break;
                }

                default:
                {
                    break;
                }
            }
            return textBoxName;
        }
Example #12
0
 public bool TryGetTribe(uint tribeId, out ITribe tribe)
 {
     return(Tribes.TryGetValue(tribeId, out tribe));
 }
Example #13
0
 private static void AddTroops(SqlCommand sqlCommand,
     ReportUnitType unitType,
     Tribes tribe,
     int[] troops)
 {
     SqlParameterCollection parameters = sqlCommand.Parameters;
     for (int i = 0; i < troops.Length; i++)
     {
         parameters[i].Value = troops[i];
     }
     parameters[12].Value = tribe;
     parameters[13].Value = unitType;
     sqlCommand.ExecuteNonQuery();
 }