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); } }
public ConsoleApp() { Settings.CloseExistingBrowserInstances = false; browser = new IE(server); browser.ShowWindow(NativeMethods.WindowShowStyle.Show); playerTribe = GetTribe(); playerFarmUnits = SetPlayerFarmUnits(playerTribe); }
public void DbLoaderAdd(ITribe tribe) { tribeIdGen.Set(tribe.Id); if (!Tribes.TryAdd(tribe.Id, tribe)) { return; } SubscribeEvents(tribe); }
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(); } }
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); } }
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); }
public bool TryGetObjects(uint tribeId, out ITribe tribe) { return(Tribes.TryGetTribe(tribeId, out tribe)); }
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; }
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; }
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; }
public bool TryGetTribe(uint tribeId, out ITribe tribe) { return(Tribes.TryGetValue(tribeId, out tribe)); }
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(); }