Exemplo n.º 1
0
        /// <summary>
        /// Формирование дерева с результатом.
        /// </summary>
        //private void insertSoldier(int table, int index, string parsingString, cRsrcsNode parent, int deep, string nariad, string nariadGroup, bool kontrakt, bool free)
        public void insertSoldier(cSoldier soldier, cRsrcsNode parent, int index, int deep)
        {
            // Добавляем солдата в список, если он не скрыт:
            if (!soldier.inUse)
            {
                return;
            }
            // Вспомогательные переменные:
            string group;             // Ищем в parent группу с именем group:

            // Определяем, какого служащего добавляем. Свободного или нет:
            if (String.IsNullOrEmpty(soldier.task))             // Свободного:
            {
                group = getGroupName(soldier.place, deep);
                if ((deep == 0 && group == null) || (deep == 1 && group == null))
                {
                    return;
                }
                parent.Count++;                 // Количество личного состава в поддереве.
                if (group == null)              // значит элемент записываем в parent:
                {
                    parent.Nodes.Add(new cRsrcsNode(soldier, index, deep));
                }
                else                 // Необходимо дальше искать группу для элемента:
                {
                    int ind = getGroupIndex(parent, group);
                    if (ind == -1)                     // Группу с таким именем не нашли, создаем новую:
                    {
                        cRsrcsNode n = new cRsrcsNode(null, parent.Nodes.Count, deep + 1);
                        n.Group = group;
                        parent.Nodes.Add(n);
                        insertSoldier(soldier, n, index, deep + 1);
                    }
                    else
                    {
                        insertSoldier(soldier, parent.Nodes[ind], index, deep + 1);
                    }
                }
            }
            else             // Добавление столбцов с нарядами:
            {
                switch (deep)
                {
                case 0:
                    group = getGroupName(soldier.place, 0);
                    break;

                case 1:
                    group = getTaskCategory(soldier.task);
                    break;

                case 2:
                    group = soldier.task;
                    break;

                default:
                    group = null;
                    break;
                }
                parent.Count++;                 // Количество личного состава в поддереве.
                if (group == null)
                {
                    parent.Nodes.Add(new cRsrcsNode(soldier, index, deep));                     // ???.
                }
                else
                {
                    int ind = getGroupIndex(parent, group);
                    if (ind == -1)                     // Группу с таким именем не нашли, создаем новую:
                    {
                        cRsrcsNode n = new cRsrcsNode(null, parent.Nodes.Count, deep + 1);
                        n.Group = group;
                        parent.Nodes.Add(n);
                        insertSoldier(soldier, n, index, deep + 1);
                    }
                    else
                    {
                        insertSoldier(soldier, parent.Nodes[ind], index, deep + 1);
                    }
                }
            }
        }
Exemplo n.º 2
0
 public cRsrcsNode(cSoldier soldier, int index, int deep)
 {
     _soldier = soldier;
     Deep     = deep;
     Index    = index;
 }