示例#1
0
        /// <summary>
        /// Szkielet zbudowany na podstawie pikiet
        /// </summary>
        /// <returns></returns>
        public bool ZbudujSzkielet()
        {
            //Muszą być co najmniej dwie pikiety (na których będą oparte oba brzegi koryta)
            if (_pikiety.Count < 2)
            {
                return(false);
            }

            int brzegLewyIndex  = -1;
            int brzegPrawyIndex = -1;

            //Rozmieszczamy wszystkie pikiety równomiernie na szkicu (stała odległość)
            for (int i = 0; i < _pikiety.Count; i++)
            {
                Pikieta pikieta = _pikiety[i];

                int alignedPosition = Alignment * i + _obszar.Top;
                pikieta.MoveTo(_obszar.Left + StylSzkicu.PikietyWidth, alignedPosition);

                if (pikieta.JestKorytem())
                {
                    //przy każdej pikiecie koryta aktualizujemy indeks prawego koryta
                    //ostatnia pikieta koryta będzie prawym korytem
                    brzegPrawyIndex = i;

                    if (brzegLewyIndex < 0)     //tylko pierwsza pikieta koryta będzie lewym korytem
                    {
                        brzegLewyIndex = i - 1; //brzeg zaczyna się jedną pikiete wcześniej
                    }
                }

                if (pikieta.JestDroga())
                {
                    Droga droga = new Droga(i, i + 1);
                    _drogi.Add(droga);
                }
            }

            if (brzegLewyIndex >= 0 && brzegPrawyIndex > 0 && brzegPrawyIndex > brzegLewyIndex)
            {
                //Tworzymy koryto
                Koryto = new Koryto(brzegLewyIndex + 1, brzegPrawyIndex + 1);

                //Tworzymy skarpę brzegu lewego
                Skarpa brzegLewy = new Skarpa(brzegLewyIndex, brzegLewyIndex + 1, true);
                _skarpy.Add(brzegLewy);

                //Tworzymy skarpę brzegu prawego
                Skarpa brzegPrawy = new Skarpa(brzegPrawyIndex + 1, brzegPrawyIndex + 2, true);
                _skarpy.Add(brzegPrawy);
            }

            return(true);
        }
示例#2
0
        /// <summary>
        /// Dodanie drogi do szkicu (od podanej pikiety)
        /// </summary>
        /// <param name="pikieta"></param>
        /// <returns></returns>
        public bool DodajDroga(Pikieta pikieta)
        {
            if (pikieta == null)
            {
                return(false);
            }

            for (int i = 1; i <= _pikiety.Count; i++)
            {
                if (pikieta.Numer == _pikiety[i - 1].Numer)
                {
                    Droga droga = new Droga(i, i + 1);
                    Drogi.Add(droga);
                    return(_zmodyfikowany = true);
                }
            }

            return(false);
        }