Example #1
0
        //public void ReplaceYounger(int yid, int farm, int tier, int sec, string address)
        //{
        //    _eng.db().replaceYounger(yid, farm, tier, sec);
        //    /*foreach (YoungRabbit y in Youngers) //TODO warning removing tag
        //        if (y.ID == yid)
        //            y.tag = "";*/
        //    OneRabbit r = _eng.db().GetRabbit(yid);
        //    _eng.logs().log(LogType.REPLACE, yid,0,r.AddressSmall,address);
        //}

        /// <summary>
        /// Списать кролика
        /// </summary>
        /// <param name="when">Дата списания</param>
        /// <param name="reason">Причина списания</param>
        /// <param name="notes">Заметки по данному списанию</param>
        /// <param name="count">Количество списанных кроликов</param>
        public void KillIt(int daysPast, int reason, string notes, int count)
        {
            if (count == Group)
            {
                _eng.db().KillRabbit(_id, daysPast, reason, notes);
                _eng.logs().log(LogType.RABBIT_KILLED, this.ID, 0, this.AddressSmall, "",
                                String.Format(" {0:s}[{1:d}] {2:s} {3:s}", FullName, Group, notes, (daysPast != 0 ? String.Format(" {0:d} дней назад", daysPast) : "")));
            }
            else
            {
                int             nid = this.Clone(count);
                RabNetEngRabbit nr  = new RabNetEngRabbit(nid, _eng);
                //nr.CloneAddress = AddressSmall;
                nr.KillIt(daysPast, reason, notes, count);
            }
        }
Example #2
0
        /// <summary>
        /// Подсчет подсосных\гнездовых
        /// </summary>
        /// <param name="dead">Количество мертвых</param>
        /// <param name="killed">Количество притоптанных</param>
        /// <param name="added">Количество появившихся</param>
        /// <param name="atall">Всего кроликов</param>
        /// <param name="age">Возраст детей</param>
        public void CountKids(int dead, int killed, int added, int atall, int age, int yID)
        {
            if (Sex != Rabbit.SexType.FEMALE)
            {
                throw new ExNotFemale(this);
            }

            YoungRabbit y = _youngers.GetByID(yID);

            if (y == null)
            {
                throw new ExNoRabbit();
            }

            _eng.logs().log(LogType.COUNT_KIDS, ID, y.ID, this.AddressSmall, "", String.Format("  возраст {0:d} всего {1:d} (умерло {2:d}, притоптано {3:d}, прибавилось {4:d})", age, atall, dead, killed, added));

            if (dead == 0 && killed == 0 && added == 0)
            {
                return;
            }

            RabNetEngRabbit r = _eng.getRabbit(y.ID);

            if (atall == 0)
            {
                //r.CloneAddress = AddressSmall;
                r.KillIt(0, DeadReason_Static.Dead_KidsCount, "при подсчете", y.Group);
            }
            else
            {
                RabNetEngRabbit clone = _eng.getRabbit(r.Clone(dead + killed));
                //clone.CloneAddress = AddressSmall;
                clone.KillIt(0, DeadReason_Static.Dead_KidsCount, "при подсчете", clone.Group);
            }

            /// todo при родах если есть мертвые крольчата, то они не записываются в рожденые, но пишутся в мертвые
            /// но если умирает кролик, который при родах был жив, то он тоже пишется в мертвые
            /// так что здесь мы всех равняем к притоптаным, а это не правильно
            _eng.db().CountKids(_id, 0, dead + killed, added, y.ID);
        }