/// <summary> /// Sets the correct village flag buttons state /// </summary> private void SetButtons(VillageType type) { AttackFlag.Checked = (type & VillageType.Attack) != 0; DefenseFlag.Checked = (type & VillageType.Defense) != 0; FarmFlag.Checked = (type & VillageType.Farm) != 0; NobleFlag.Checked = (type & VillageType.Noble) != 0; ScoutFlag.Checked = (type & VillageType.Scout) != 0; CatapultFlag.Checked = (type & VillageType.Catapult) != 0; }
//new constructor public Village() { myType = VillageType.Hovel; supportedUnits = new List<Unit> (); //need to be set over network: controlledRegion, controlledBy, locatedAt.Replace(), locatedAt, locatedAt.setVillage(), pdateControlledRegionNet() controlledRegion = new List<Tile> (); myAction = VillageActionType.ReadyForOrders; gold = 0; wood = 0; //set controlled regions }
public void TogglePurpose(VillageType changeTo) { if (Type.HasFlag(changeTo)) { Type &= ~changeTo; } else { AllowOnlyOnePrimaryPurpose(changeTo); Type |= changeTo; } }
/// <summary> /// Allow change between VillageTypes (Offensive, Defensive, Nobles, ...) /// </summary> private static void AddVillageTypeCommand(UICommand menu, VillageType typeToSet, VillageType typeCurrent, CommandEventHandler onVillageTypeChange) { bool isCurrentlySet = typeCurrent.HasFlag(typeToSet); var command = new UICommand("", typeToSet.GetDescription()); command.Tag = typeToSet; command.Image = typeToSet.GetImage(true); command.Checked = isCurrentlySet ? InheritableBoolean.True : InheritableBoolean.False; command.Click += onVillageTypeChange; menu.Commands.Add(command); }
public static void AddSetVillageTypeCommand(this UIContextMenu menu, CommandEventHandler onVillageTypeChange, Village village) { VillageType currentVillageType = village == null ? VillageType.None : village.Type; UICommand villageTypes = menu.AddCommand(ControlsRes.VillageContextMenu_SetPurpose, null, currentVillageType.GetImage(true)); AddVillageTypeCommand(villageTypes, VillageType.Attack, currentVillageType, onVillageTypeChange); AddVillageTypeCommand(villageTypes, VillageType.Catapult, currentVillageType, onVillageTypeChange); AddVillageTypeCommand(villageTypes, VillageType.Defense, currentVillageType, onVillageTypeChange); villageTypes.Commands.AddSeparator(); AddVillageTypeCommand(villageTypes, VillageType.Noble, currentVillageType, onVillageTypeChange); AddVillageTypeCommand(villageTypes, VillageType.Scout, currentVillageType, onVillageTypeChange); AddVillageTypeCommand(villageTypes, VillageType.Farm, currentVillageType, onVillageTypeChange); }
public static bool GetProductionPerDay(ref VillageType __instance, ref float __result, ItemCategory itemCategory) { float num = 0f; var _productions = MissionAccessTools.Get_productions(ref __instance); foreach (ValueTuple <ItemObject, float> valueTuple in _productions) { if (valueTuple.Item1 != null) { if (valueTuple.Item1.ItemCategory == itemCategory) { num += valueTuple.Item2; } } } __result = num; return(false); }
private void AllowOnlyOnePrimaryPurpose(VillageType changeTo) { if (changeTo == VillageType.Attack || changeTo == VillageType.Catapult || changeTo == VillageType.Defense) { // Only allow one of these at the same time if (Type.HasFlag(VillageType.Attack)) { Type &= ~VillageType.Attack; } if (Type.HasFlag(VillageType.Catapult)) { Type &= ~VillageType.Catapult; } if (Type.HasFlag(VillageType.Defense)) { Type &= ~VillageType.Defense; } } }
/// <summary> /// Changes the flags for a village /// and saves it in the village report txt /// </summary> private void FlagSwitcher(VillageType type, ToolStripButton button) { if (_current.Village != null) { VillageType villageType = _current.Village.Type; if ((villageType & type) == 0) { villageType |= type; } else { villageType &= ~type; } button.Checked = (villageType & type) != 0; _current.Village.Type = villageType; World.Default.DrawMaps(); } }
/// <summary> /// Gets the most important image /// (in case multiple flags are active) /// </summary> public static Image GetImage(this VillageType type, bool displayComments) { if (type.HasFlag(VillageType.Noble)) { return(UnitImages.Noble); } if (type.HasFlag(VillageType.Attack)) { return(UnitImages.Axe); } if (type.HasFlag(VillageType.Catapult)) { return(UnitImages.Catapult); } if (type.HasFlag(VillageType.Defense)) { return(Properties.Resources.Defense); } if (type.HasFlag(VillageType.Scout)) { return(UnitImages.Scout); } if (type.HasFlag(VillageType.Farm)) { return(BuildingImages.Farm); } if (displayComments && type.HasFlag(VillageType.Comments)) { return(Other.Note); } return(null); }
/// <summary> /// Gets the description of the most important type /// </summary> public static string GetDescription(this VillageType type) { if (type.HasFlag(VillageType.Noble)) { return(VillageGridExRes.VillageType_Noble); } if (type.HasFlag(VillageType.Attack)) { return(VillageGridExRes.VillageType_Offensive); } if (type.HasFlag(VillageType.Catapult)) { return(VillageGridExRes.VillageType_Catapults); } if (type.HasFlag(VillageType.Defense)) { return(VillageGridExRes.VillageType_Defensive); } if (type.HasFlag(VillageType.Scout)) { return(VillageGridExRes.VillageType_Scouts); } if (type.HasFlag(VillageType.Farm)) { return(VillageGridExRes.VillageType_Farm); } if (type.HasFlag(VillageType.Comments)) { return(VillageGridExRes.VillageType_Comments); } return(null); }
public void SetPurpose(VillageType changeTo) { AllowOnlyOnePrimaryPurpose(changeTo); Type |= changeTo; }
internal static ValueTuple <ItemObject, float>[] Get_productions(ref VillageType __instance) { return(accessTools_productions(__instance)); }
public void setMyType(VillageType vt) { myType = vt; }
/// <summary> /// Sets the type of a village /// </summary> /// <remarks>Offense, Defense, ...</remarks> public void SetVillageType(Village village, VillageType value) { _villageTypes.Position = village.Y*1000 + village.X; _villageTypes.WriteByte((byte) value); }
private IEnumerable<Travelfun> GetAttackers(IEnumerable<Village> searchIn, AttackPlan plan, Unit slowestUnit, VillageType? villageType) { Unit[] acceptableSpeeds = GetAcceptableSpeeds(slowestUnit); Village[] villagesAlreadyUsed = GetPlans().SelectMany(x => x.Attacks) .Select(x => x.Attacker) .ToArray(); var matchingVillages = (from village in searchIn where !villagesAlreadyUsed.Contains(village) select village); if (villageType != null) { matchingVillages = matchingVillages.Where(x => x.Type.HasFlag(villageType)); } var villagesWithAllSpeeds = from village in matchingVillages from speed in acceptableSpeeds let travelTime = Village.TravelTime(plan.Target, village, speed) select new Travelfun { Village = village, Speed = speed, TravelTime = travelTime, TimeBeforeNeedToSend = plan.ArrivalTime - World.Default.Settings.ServerTime.Add(travelTime) }; var villagesWithBestSpeed = villagesWithAllSpeeds .GroupBy(x => x.Village) .Select(x => GetBestSpeedMatch(x.ToList())); var villages = villagesWithBestSpeed .OrderBy(x => x.TimeBeforeNeedToSend) .ToArray(); if (!villages.Any(x => x.TimeBeforeNeedToSend.TotalSeconds > AutoFindMinimumAmountOfSecondsLeft)) { return villages.OrderByDescending(x => x.TimeBeforeNeedToSend).Take(AutoFindAmountOfAttackersWhenNone); } else { return villages.Where(x => x.TimeBeforeNeedToSend.TotalSeconds > AutoFindMinimumAmountOfSecondsLeft).Take(AutoFindAmountOfAttackers); } }
public IEnumerable<Travelfun> GetAttackersFromYou(AttackPlan plan, Unit slowestUnit, VillageType? villageType) { return GetAttackers(World.Default.You, plan, slowestUnit, villageType); }
public IEnumerable<Travelfun> GetAttackersFromPool(AttackPlan plan, Unit slowestUnit, VillageType? villageType, out bool depleted) { var attackers = GetAttackers(_attackersPool, plan, slowestUnit, villageType).ToArray(); _attackersPool.RemoveAll(attackers.Select(x => x.Village).Contains); depleted = !_attackersPool.Any(); return attackers; }
void setVillageTypeNet(int type) { myType = (VillageType) type; }
/// <summary> /// Sets the type of a village /// </summary> /// <remarks>Offense, Defense, ...</remarks> public void SetVillageType(Village village, VillageType value) { _villageTypes.Position = village.Y * 1000 + village.X; _villageTypes.WriteByte((byte)value); }
/// <summary> /// Changes the flags for a village /// and saves it in the village report txt /// </summary> private void FlagSwitcher(VillageType type, ToolStripButton button) { if (_current.Village != null) { VillageType villageType = _current.Village.Type; if ((villageType & type) == 0) villageType |= type; else villageType &= ~type; button.Checked = (villageType & type) != 0; _current.Village.Type = villageType; World.Default.DrawMaps(); } }