Example #1
0
 /// <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;
 }
Example #2
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
 }
Example #3
0
 public void TogglePurpose(VillageType changeTo)
 {
     if (Type.HasFlag(changeTo))
     {
         Type &= ~changeTo;
     }
     else
     {
         AllowOnlyOnePrimaryPurpose(changeTo);
         Type |= changeTo;
     }
 }
Example #4
0
        /// <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);
        }
Example #5
0
        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);
        }
Example #7
0
 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;
         }
     }
 }
Example #8
0
        /// <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();
            }
        }
Example #9
0
        /// <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);
        }
Example #10
0
        /// <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);
        }
Example #11
0
 public void SetPurpose(VillageType changeTo)
 {
     AllowOnlyOnePrimaryPurpose(changeTo);
     Type |= changeTo;
 }
 internal static ValueTuple <ItemObject, float>[] Get_productions(ref VillageType __instance)
 {
     return(accessTools_productions(__instance));
 }
Example #13
0
 public void setMyType(VillageType vt)
 {
     myType = vt;
 }
Example #14
0
 /// <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;
        }
Example #18
0
 /// <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;
 }
Example #19
0
 void setVillageTypeNet(int type)
 {
     myType = (VillageType) type;
 }
Example #20
0
        /// <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);
        }
Example #21
0
 /// <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);
 }
Example #22
0
        /// <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();
            }
        }