Exemplo n.º 1
0
    public static void UnassignParentGroupForGroup(AnimalGroup group)
    {
        if (group.leader.parent.isPlayer)
        {
            foreach (AnimalGroup childGroup in group.childGroups)
            {
                AssignParentToGroup(group.leader.parent, childGroup);
            }
            group.childGroups.Clear();
        }
        else
        {
            group.parentGroup.childGroups.Remove(group);
            foreach (AnimalGroup childGroup in group.childGroups)
            {
                AssignParentToGroup(group.leader.parent, childGroup);
            }
        }

        group.leader.depth = 998;
        foreach (Animal animal in group.herdAnimals)
        {
            animal.depth = 999;
        }
        group.leader.parent = null;
        group.currentState  = AnimalGroup.GroupState.Disenfranchised;
    }
Exemplo n.º 2
0
        /// <summary>
        /// Returns the valid fleece-free weight range associated with stock of a given
        /// age etc, along with expected basal weight assuming that the current weight
        ///
        /// is the highest weight reached so far(BWFA, or "base weight for age").
        /// This is complicated in younger animals by the fact that a given condition
        /// score may be relative to any of a range of normal weights.

        /// </summary>
        /// <param name="mainParams"></param>
        /// <param name="BreedInfo"></param>
        /// <param name="iGenotype"></param>
        /// <param name="Repro"></param>
        public void ValidFFWeightRange(AnimalParamSet mainParams,
                                       SingleGenotypeInits[] BreedInfo,
                                       int iGenotype,
                                       GrazType.ReproType Repro,
                                       int AgeDays,
                                       double dLowBC, double dHighBC,
                                       out double LowWt, out double HighWt)
        {
            GrazType.ReproType[] SexRepro = { GrazType.ReproType.Castrated, GrazType.ReproType.Empty };
            int[] MatureMonths            = { 24, 36 };

            AnimalParamSet Genotype;
            double         MaxNormWt,
                           MinNormWt;

            Genotype  = stock.ParamsFromGenotypeInits(mainParams, BreedInfo, iGenotype);
            MaxNormWt = AnimalGroup.GrowthCurve(AgeDays, Repro, Genotype);

            if ((AgeDays < MatureAge[(int)Genotype.Animal]) && (dLowBC <= 1.0))                     // Allow for the possibility of a sub-
            {
                MinNormWt = 0.7 * MaxNormWt;                                                        // optimal normal weight in young
            }
            else                                                                                    // animals
            {
                MinNormWt = MaxNormWt;
            }

            LowWt  = MinNormWt * (dLowBC - 0.5 * BC_STEP);
            HighWt = MaxNormWt * (dHighBC + 0.499 * BC_STEP);
            if ((Repro == GrazType.ReproType.EarlyPreg) || (Repro == GrazType.ReproType.LatePreg))  // Allowance for conceptus in ewes & cows
            {
                HighWt = HighWt * 1.15;
            }
        }
        protected override void PrepareInsertUpdateCommand(DbCommand command, AnimalGroup animalGroup)
        {
            SqlCommand sqlCommand = (SqlCommand)command;

            sqlCommand.Parameters.Add("@p_id", SqlDbType.Int).Value = animalGroup.Id;
            sqlCommand.Parameters.Add("@p_description", SqlDbType.VarChar).Value = animalGroup.Description;
        }
 public AnimalBasicInfo(string species, AnimalGroup group)
 {
     this.AvailableMedicines = new HashSet <Medicine>();
     this.AssignedAnimals    = new HashSet <Animal>();
     this.Species            = species;
     this.Group = group;
 }
Exemplo n.º 5
0
        private void CollectCandidates(Vector2 direction, AnimalGroup candidate, List <AnimalGroup> removeCandidates, Vector2 size)
        {
            var candidateId = candidate.Id.Data;
            var nextCoord   = candidate.Coord.Value;
            var animals     = GetEntities <AnimalGroup>();

            var condition = Math.Abs(direction.x) > 0.001f
                                ? new Func <Vector2, Vector2, bool>((coord, s) => coord.x >= 0 && coord.x < s.x)
                                : (coord, s) => coord.y >= 0 && coord.y < s.y;

            nextCoord += direction;
            bool breakOccured = false;

            while (condition(nextCoord, size) && breakOccured == false)
            {
                foreach (var animal in animals)
                {
                    if (animal.Coord.Value != nextCoord)
                    {
                        continue;
                    }

                    if (animal.Id.Data == candidateId)
                    {
                        removeCandidates.Add(animal);
                    }
                    else
                    {
                        breakOccured = true;
                    }
                    break;
                }
                nextCoord += direction;
            }
        }
Exemplo n.º 6
0
        public static void CollectInput(Farm farm, IGrazing animal)
        {
            foreach (GrazingField field in farm.GrazingFields)
            {
                if (field.Animals.Count < field.Capacity)
                {
                    StringBuilder output = new StringBuilder();
                    output.Append($"{farm.GrazingFields.IndexOf(field)+1}. Grazing Field (");
                    if (field.Animals.Count == 0)
                    {
                        output.Append("0");
                    }
                    else
                    {
                        //group by
                        List <TypeCounter> animalCount = (
                            from ruminant in field.Animals
                            group ruminant by ruminant.Type into AnimalGroup
                            select new TypeCounter {
                            Type = AnimalGroup.Key,
                            Count = AnimalGroup.Count()
                        }
                            ).ToList();
                        foreach (TypeCounter entry in animalCount)
                        {
                            // TODO: remove trailing comma
                            output.Append($"{entry.Count} {entry.Type},");
                        }
                    }
                    output.Append($" of {field.Capacity} animals)");
                    Console.WriteLine(output);
                }
            }
            // STRETCH: realign numbers for facility listing when it skips full ones
            // put available fields in a new temporary List<>? then foreach the list?
            // use linq directives to pull available fields?

            Console.WriteLine();

            // How can I output the type of animal chosen here?
            Console.WriteLine($"Place the animal where?");

            Console.Write("> ");
            int choice = Int32.Parse(Console.ReadLine());

            try {
                farm.GrazingFields[choice - 1].AddResource(farm, animal);
            } catch (ArgumentOutOfRangeException) {
                Console.WriteLine($"Invalid option: {choice}");
                Console.WriteLine("Press any key to go back to main menu.");
                Console.ReadLine();
            }

            /*
             *  Couldn't get this to work. Can you?
             *  Stretch goal. Only if the app is fully functional.
             */
            // farm.PurchaseResource<IGrazing>(animal, choice);
        }
        void OnButtonClicked(object sender, EventArgs e)
        {
            GroupedAnimalsViewModel viewModel = BindingContext as GroupedAnimalsViewModel;
            AnimalGroup             group     = viewModel.Animals.FirstOrDefault(a => a.Name == "Monkeys");
            Animal monkey = group.FirstOrDefault(m => m.Name == "Proboscis Monkey");

            collectionView.ScrollTo(monkey, group, (ScrollToPosition)enumPicker.SelectedItem, animateSwitch.IsToggled);
        }
 public static bool isGroup(this Animal animal, AnimalGroup groupNumber)
 {
     if ((AnimalGroup)animal == groupNumber)
     {
         return(true);
     }
     return(false);
 }
Exemplo n.º 9
0
        protected override void PrepareInsertUpdateCommand(DbCommand command, AnimalGroup animalGroup)
        {
            OracleCommand oracleCommand = (OracleCommand)command;

            oracleCommand.BindByName = true;
            oracleCommand.Parameters.Add("p_id", OracleDbType.Int32).Value             = animalGroup.Id;
            oracleCommand.Parameters.Add("p_description", OracleDbType.Varchar2).Value = animalGroup.Description;
        }
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            AnimalGroup animalGroup = await db.AnimalGroups.FindAsync(id);

            db.AnimalGroups.Remove(animalGroup);
            await db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
Exemplo n.º 11
0
    public static void AssignNearbyGroupsToPlayer(Animal player, List <GameObject> groups)
    {
        List <GameObject> nearbyIdle = NearbyGroups(player.transform.position, 7f, groups, AnimalGroup.GroupState.Idle);

        foreach (GameObject groupObj in nearbyIdle)
        {
            AnimalGroup group = groupObj.GetComponent <AnimalGroup>();
            AssignParentToGroup(player, group);
        }
    }
        public async Task <ActionResult> Edit([Bind(Include = "Id,Name")] AnimalGroup animalGroup)
        {
            if (ModelState.IsValid)
            {
                db.Entry(animalGroup).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            return(View(animalGroup));
        }
Exemplo n.º 13
0
        public int Insert(AnimalGroup animalGroup)
        {
            db.Connect();
            DbCommand command = db.CreateCommand(GetInsertSql());

            PrepareInsertUpdateCommand(command, animalGroup);
            int ret = db.ExecuteNonQuery(command);

            db.Close();
            return(ret);
        }
Exemplo n.º 14
0
 public BreederStationDataLayer.Orm.Dto.AnimalGroup mapDomainToDtoObject(AnimalGroup animalGroup)
 {
     BreederStationDataLayer.Orm.Dto.AnimalGroup dtoAnimalGroup = new BreederStationDataLayer.Orm.Dto.AnimalGroup
     {
         Id           = animalGroup.Id,
         Description  = animalGroup.Description,
         AnimalsInfo  = animalGroup.AnimalsInfo,
         BreedersInfo = animalGroup.BreedersInfo
     };
     return(dtoAnimalGroup);
 }
Exemplo n.º 15
0
 public static void FindParentsForIdleGroups(List <GameObject> groups)
 {
     foreach (GameObject groupObj in groups)
     {
         AnimalGroup group = groupObj.GetComponent <AnimalGroup>();
         if (group.currentState == AnimalGroup.GroupState.Idle)
         {
             FindAFriend(group, groups);
         }
     }
 }
        public async Task <ActionResult> Create([Bind(Include = "Id,Name")] AnimalGroup animalGroup)
        {
            if (ModelState.IsValid)
            {
                db.AnimalGroups.Add(animalGroup);
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            return(View(animalGroup));
        }
Exemplo n.º 17
0
        public AnimalGroup mapDtoToDomainObject(BreederStationDataLayer.Orm.Dto.AnimalGroup dtoAnimalGroup)
        {
            AnimalGroup aninalGroup = new AnimalGroup
            {
                Id           = dtoAnimalGroup.Id,
                Description  = dtoAnimalGroup.Description,
                AnimalsInfo  = dtoAnimalGroup.AnimalsInfo,
                BreedersInfo = dtoAnimalGroup.BreedersInfo
            };

            return(aninalGroup);
        }
        // GET: AnimalGroups/Delete/5
        public async Task <ActionResult> Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            AnimalGroup animalGroup = await db.AnimalGroups.FindAsync(id);

            if (animalGroup == null)
            {
                return(HttpNotFound());
            }
            return(View(animalGroup));
        }
Exemplo n.º 19
0
    public static void AssignParentToGroup(Animal parent, AnimalGroup group)
    {
        group.currentState = AnimalGroup.GroupState.Stampeding;
        group.stateTimer   = 600;
        group.parentGroup  = parent.group;

        if (group.parentGroup)
        {
            group.parentGroup.childGroups.Add(group);
        }
        group.leader.parent = parent;
        group.leader.depth  = parent.depth + 1;
        foreach (Animal animal in group.herdAnimals)
        {
            animal.depth = group.leader.depth + 1;
        }
    }
Exemplo n.º 20
0
    public static List <GameObject> NearbyGroups(Vector3 position, float radius, List <GameObject> groups, AnimalGroup.GroupState groupState)
    {
        List <GameObject> nearby = new List <GameObject>();

        foreach (GameObject groupObj in groups)
        {
            AnimalGroup group = groupObj.GetComponent <AnimalGroup>();
            if (group.currentState != groupState)
            {
                continue;
            }
            float distance = Vector3.Distance(position, group.leader.transform.position);
            if (distance < radius)
            {
                nearby.Add(groupObj);
            }
        }
        return(nearby);
    }
Exemplo n.º 21
0
    public static void FindAFriend(AnimalGroup group, List <GameObject> groups)
    {
        List <GameObject> nearbyStampeding = NearbyGroups(group.leader.transform.position, 10f, groups, AnimalGroup.GroupState.Stampeding);
        List <Animal>     animals          = new List <Animal>();

        foreach (GameObject groupObj in nearbyStampeding)
        {
            AnimalGroup _group = groupObj.GetComponent <AnimalGroup>();
            if (group == _group)
            {
                continue;
            }
            animals.AddRange(_group.herdAnimals);
        }
        if (animals.Count == 0)
        {
            return;
        }
        AssignParentToGroup(animals[Random.Range(0, animals.Count)], group);
    }
Exemplo n.º 22
0
        /// <summary>
        /// Populate metabolizable energy use array
        /// Note: these are an* ME* partition
        /// </summary>
        /// <param name="model">The animal model</param>
        /// <param name="energyValues">The energy use returned</param>
        public static void MakeEnergyUse(StockList model, ref EnergyUse[] energyValues)
        {
            double ME_Metab;
            double ME_MoveGraze;
            int    idx;

            for (idx = 1; idx <= model.Count(); idx++)
            {
                AnimalGroup group = model.At(idx);
                ME_Metab     = group.AnimalState.EnergyUse.Metab / group.AnimalState.Efficiency.Maint;
                ME_MoveGraze = group.AnimalState.EnergyUse.Maint - ME_Metab - group.AnimalState.EnergyUse.Cold;

                energyValues[idx].MaintBase      = ME_Metab;
                energyValues[idx].MaintMoveGraze = ME_MoveGraze;  // Separating E(graze) and E(move) requires work in AnimGRP.pas...
                energyValues[idx].MaintCold      = group.AnimalState.EnergyUse.Cold;
                energyValues[idx].Conceptus      = group.AnimalState.EnergyUse.Preg;
                energyValues[idx].Lactation      = group.AnimalState.EnergyUse.Lact;
                energyValues[idx].Fleece         = group.AnimalState.EnergyUse.Wool / group.AnimalState.Efficiency.Gain;
                energyValues[idx].Gain           = group.AnimalState.EnergyUse.Gain / group.AnimalState.Efficiency.Gain;
            }
        }
Exemplo n.º 23
0
        protected override IList <AnimalGroup> Read(DbDataReader reader, bool allInfo)
        {
            IList <AnimalGroup> animalGroups = new List <AnimalGroup>();
            OracleDataReader    oracleReader = (OracleDataReader)reader;

            while (oracleReader.Read())
            {
                int         i           = -1;
                AnimalGroup animalGroup = new AnimalGroup();
                animalGroup.Id          = oracleReader.GetInt32(++i);
                animalGroup.Description = oracleReader.GetString(++i);

                if (allInfo)
                {
                    animalGroup.BreedersInfo = oracleReader.GetString(++i);
                    animalGroup.AnimalsInfo  = oracleReader.GetString(++i);
                }
                animalGroups.Add(animalGroup);
            }
            return(animalGroups);
        }
Exemplo n.º 24
0
        public AnimalGroup Select(int animalGroupId)
        {
            db.Connect();

            DbCommand command = db.CreateCommand(GetSelectAllInfoByIdSql());

            PrepareGroupIdCommand(command, animalGroupId);
            DbDataReader reader = db.Select(command);

            IList <AnimalGroup> animalGroups = Read(reader, true);

            AnimalGroup animalGroup = new AnimalGroup();

            if (animalGroups.Count != 0)
            {
                animalGroup = animalGroups[0];
            }

            reader.Close();
            db.Close();

            return(animalGroup);
        }
Exemplo n.º 25
0
 public bool AddAnimalGroup(AnimalGroup animalGroup)
 {
     return(animalGroupGateway.Insert(mapDomainToDtoObject(animalGroup)) > 0);
 }
Exemplo n.º 26
0
 public bool UpdateAnimalGroup(AnimalGroup animalGroup)
 {
     return(animalGroupGateway.Update(mapDomainToDtoObject(animalGroup)) > 0);
 }
Exemplo n.º 27
0
 protected abstract void PrepareInsertUpdateCommand(DbCommand command, AnimalGroup animalGroup);
Exemplo n.º 28
0
    public static void AssignParentGroupToGroup(AnimalGroup parentGroup, AnimalGroup group)
    {
        Animal newParent = parentGroup.herdAnimals[Random.Range(0, parentGroup.herdAnimals.Count)];

        AssignParentToGroup(newParent, group);
    }