//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); } }
/// <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); }