/// <summary> /// Сохраняет операции, по пересадке кролика /// warning full vachanaliation and analizing troubles /// </summary> /// <param name="r">Строка кролика</param> /// <param name="id"></param> /// <param name="allowReplace">Уже перемещен</param> private void commitRabbit(RP rp, int id, bool allowReplace) { if (rp.Saved) { return; } if (rp.ID == 0) { //int[] a = getAddress(rp); Address a = _freeBuildings.SearchByMedName(rp.CurAddress); _rabERs[_replaceList.IndexOf(rp)].ReplaceRabbit(a.Farm, a.Floor, a.Section, rp.CurAddress); rp.Saved = true; return; } RabNetEngRabbit rb = Engine.get().getRabbit(id == 0 ? rp.ID : id); RabNetEngRabbit par = null; if (rp.Younger) { par = Engine.get().getRabbit(rp.Parent); } if (rp.PlaceTo != null || rp.PlaceWith != null) { if (!allowReplace) { return; } if (rp.PlaceWith != null) { rb.CombineWidth(rp.PlaceWith.ID); rp.Saved = true; return; } if (rp.PlaceTo != null) { rb.PlaceSuckerTo(rp.PlaceTo.ID); } } if (rp.Replaced && !allowReplace) { //int[] a = getAddress(rp); Address a = _freeBuildings.SearchByMedName(rp.CurAddress); //if (rp.Younger) //par.ReplaceYounger(rb.ID, a.Farm, a.Tier, a.Section, rp.CurAddress); //else rb.ReplaceRabbit(a.Farm, a.Floor, a.Section, rp.CurAddress); } if (rp.CanHaveNest) { if (!rp.Younger || (rp.Younger && rp.Replaced && rp.PlaceTo == null)) { RabNetEngRabbit rr = Engine.get().getRabbit(rb.ID); RabNetEngBuilding rbe = Engine.get().getBuilding(rr.RawAddress); string[] vals = rr.RawAddress.Split(','); ///todo ГОВНОКОД нужно переделывать движок построек //BuildingType tp = Building.ParseType(vals[3]); if (rbe.Type == BuildingType.Jurta || rbe.Type == BuildingType.Female) { rbe.setNest(rp.SetNest, 0); } else if (rbe.Type == BuildingType.DualFemale) { rbe.setNest(rp.SetNest, Int32.Parse(vals[2])); } } } if (rp.NewSex != rp.Sex) { rb.SetSex(rp.NewSex); } /// рассаживаем отделеных while (rp.Clones.Count > 0) { RP c = rp.Clones[0]; Address a = _freeBuildings.SearchByMedName(c.CurAddress); int cid = rb.Clone(c.Count, a.Farm, a.Floor, a.Section); c.ID = cid; commitRabbit(c, cid, allowReplace); if (_action == Action.ONE_GIRL_OUT && _girlout == 0 && c.Sex == Rabbit.SexType.FEMALE && c.Count == 1) { _girlout = cid; } rp.Clones.RemoveAt(0); } rp.Saved = true; }
public RabbitInfo(RabNetEngRabbit r) : this() { _rabId = 0; _rab = r; }
public Proholost(int r) : this() { r1 = Engine.get().getRabbit(r); label1.Text = r1.FullName; }
/// <summary> /// Добавление нового кролика в список, если есть подсосные то и их /// </summary> /// <param name="r">Объект символизирующий кролика или группу</param> public void AddRabbit(RabNetEngRabbit r) { _rabERs.Add(r); clear(); }
public AddRabVacForm(RabNetEngRabbit rab) : this(rab, true, 0) { }
private DialogResult performJob(ZootehJob job, ref bool needUpdate) { DialogResult res = DialogResult.OK; switch (job.Type) { case JobType.NestOut: RabNetEngBuilding b = Engine.get().getBuilding(job.ID); b.setNest(false, (job.ID2 == 0 ? 0 : 1)); needUpdate = false; break; case JobType.PreOkrol: Engine.get().preOkrol(job.ID); //_fullUpdate = false; break; case JobType.BoysOut: case JobType.GirlsOut: ReplaceForm rf = new ReplaceForm(); rf.AddRabbit(job.ID); if (job.Type == JobType.BoysOut) { rf.SetAction(ReplaceForm.Action.BOYSOUT); } res = rf.ShowDialog(); break; case JobType.CountKids: RabNetEngRabbit rrr = Engine.get().getRabbit(job.ID); CountKids ck = new CountKids(job.ID); int id2 = 0; for (int i = 0; i < rrr.Youngers.Count; i++) { if (rrr.Youngers[i].ID == job.ID2) { id2 = i; } } if (_makeFlag == 0) { //rrr.CountKids(0, 0, 0, rrr.Youngers[id2].Group, rrr.Youngers[id2].Age, 0); ck.MakeCount(); ck.Dispose(); needUpdate = false; } else { //ck = new CountKids(job.ID, job.Flag == 1); //ck.SetGroup(id2); res = ck.ShowDialog(); } break; case JobType.F**k: int id = job.ID; if (_makeFlag == -1) { needUpdate = false; Engine.db().SetRabbitVaccine(id, Vaccine.V_ID_LUST); res = DialogResult.OK; break; } if (job.Flag > 1) { id = 0; ReplaceBrideForm rb = new ReplaceBrideForm(job.ID); res = rb.ShowDialog(); if (res == DialogResult.OK) { id = rb.getGirlOut(); } res = DialogResult.Cancel; } if (id != 0) { res = (new FuckForm(id)).ShowDialog(); } break; case JobType.Okrol: res = (new OkrolForm(job.ID)).ShowDialog(); break; case JobType.Vaccine: //прививка RabNetEngRabbit rab = Engine.get().getRabbit(job.ID); AddRabVacForm dlg = new AddRabVacForm(rab, false, job.ID2); res = dlg.ShowDialog(); if (res == DialogResult.OK) { rab.SetVaccine(dlg.VacID, dlg.VacDate, false); if (rab.ParentID != 0 && Engine.opt().getBoolOption(Options.OPT_ID.VACC_MOTHER)) { RabNetEngRabbit r2 = Engine.get().getRabbit(rab.ParentID); r2.SetVaccine(dlg.VacID, dlg.VacDate, false); } } needUpdate = false; break; case JobType.NestSet: //установка гнездовья RabPlace rp = RabPlace.Parse(job.Rabplace); if (rp.CanHaveNest()) { RabNetEngBuilding rbe = RabNetEngBuilding.FromPlace(job.Rabplace, Engine.get()); rbe.setNest(true, rp.Section); res = DialogResult.OK; needUpdate = false; break; } ReplaceForm f = new ReplaceForm(); f.AddRabbit(job.ID); f.SetAction(ReplaceForm.Action.SET_NEST); res = f.ShowDialog(); break; case JobType.BoysByOne: f = new ReplaceForm(); f.AddRabbit(job.ID); res = f.ShowDialog(); break; case JobType.SpermTake: RabNetEngRabbit r = Engine.get().getRabbit(job.ID); r.SpermTake(); needUpdate = false; break; } return(res); }
public FuckForm(RabNetEngRabbit rab) : this() { _rabFemale = rab; init(); }
private void button6_Click(object sender, EventArgs e) { try { bool no_names = false; bool no_addresses = false; //bool no_gens = false; bool same_names = false; foreach (RabNetEngRabbit r in this.rbs) { if (r.NameID == 0 && r.SurnameID == 0) { no_names = true; } if (r.Address == Rabbit.NULL_ADDRESS) { no_addresses = true; } //if (r.Genoms == "") { // no_gens = true; //} if (!same_names) { foreach (RabNetEngRabbit r2 in rbs) { if (r != r2 && r.NameID == r2.NameID) { same_names = true; } } } } String msg = ""; if (no_names) { msg = "У некоторых кроликов нет имени." + Environment.NewLine; } if (no_addresses) { msg += "У некоторых кроликов нет адреса." + Environment.NewLine; } //if (no_gens) { // msg += "У некоторых кроликов нет ни одного Номера Гена." + Environment.NewLine; //} if (same_names) { msg += "Двум или более кроликам назначено одно имя." + Environment.NewLine; } if (msg != "") { MessageBox.Show(this, msg, "Нельзя продолжить", MessageBoxButtons.OK); DialogResult = DialogResult.None; return; /*msg += "Продолжить?"; * if (MessageBox.Show(this, msg, "Предупреждение", MessageBoxButtons.YesNo) == DialogResult.No) * { * DialogResult = DialogResult.None; * return; * }*/ } foreach (RabNetEngRabbit r in rbs) { foreach (RabNetEngRabbit r2 in rbs) { if (r2 != r && r2.NewAddress == r.NewAddress && r.NewAddress != "") { RabNetEngRabbit mom = r; RabNetEngRabbit chl = r2; if (isMom(r2)) { chl = r; mom = r2; } commit(mom); chl.Mom = mom.ID; commit(chl); } } commit(r); } Close(); } catch (Exception ex) { MessageBox.Show("Ошибка " + ex.ToString()); } }
private bool isMom(RabNetEngRabbit r1) { return(r1.Sex == Rabbit.SexType.FEMALE && r1.Status > 0); }