Exemple #1
0
        /// <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;
        }
Exemple #2
0
 public RabbitInfo(RabNetEngRabbit r)
     : this()
 {
     _rabId = 0;
     _rab   = r;
 }
Exemple #3
0
 public Proholost(int r) : this()
 {
     r1          = Engine.get().getRabbit(r);
     label1.Text = r1.FullName;
 }
Exemple #4
0
 /// <summary>
 /// Добавление нового кролика в список, если есть подсосные то и их
 /// </summary>
 /// <param name="r">Объект символизирующий кролика или группу</param>
 public void AddRabbit(RabNetEngRabbit r)
 {
     _rabERs.Add(r);
     clear();
 }
Exemple #5
0
 public AddRabVacForm(RabNetEngRabbit rab) : this(rab, true, 0)
 {
 }
Exemple #6
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);
        }
Exemple #7
0
 public FuckForm(RabNetEngRabbit rab)
     : this()
 {
     _rabFemale = rab;
     init();
 }
Exemple #8
0
        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());
            }
        }
Exemple #9
0
 private bool isMom(RabNetEngRabbit r1)
 {
     return(r1.Sex == Rabbit.SexType.FEMALE && r1.Status > 0);
 }