예제 #1
0
        /// <summary>
        /// Производит сохранение о блоке ресурса
        /// </summary>
        /// <param name="Block"></param>
        /// <param name="resources"></param>
        /// <param name="saveProcess"></param>
        /// <returns></returns>
        private SaveResource SaveBlockResourse(BlockWPF Block, Dictionary <ResourceWPF, Guid> resources, SaveProcess saveProcess)
        {
            SaveResource temp = null;

            // Если обрабатываемый блок - начальный или конечный элемент
            if (Block is StartBlockWPF || Block is EndBlockWPF)
            {
                temp = new SaveResource()
                {
                    Id = new Guid(), Model = null, Position = Block.Position
                };
            }
            else
            {
                // Проверяем видели ли элемент текущий
                if (!resources.ContainsKey(Block as ResourceWPF))
                {
                    temp = SaveResource.ToSave(Block as ResourceWPF);
                    resources.Add(Block as ResourceWPF, temp.Id); // Добавляем в обработанные блоки
                    saveProcess.ResourceList.Add(temp);           // Добавляем в сохранённые
                }
                else
                {
                    temp = saveProcess.ResourceList.Where(x => x.Id.CompareTo(resources[Block as ResourceWPF]) == 0).First();  // Возвращаем блок из списка
                }
            }

            return(temp);
        }
예제 #2
0
        /// <summary>
        /// Производит сохранение информации о связи с ресурсами
        /// </summary>
        /// <param name="element"></param>
        /// <param name="processes"></param>
        /// <param name="resources"></param>
        /// <param name="saveProcess"></param>
        private void SaveResourceConnection(UIElement element, Dictionary <ProcedureWPF, Guid> procedures, Dictionary <ResourceWPF, Guid> resources, SaveProcess saveProcess)
        {
            var connection = element as ResConnectionWPF; // Достаём информацию о связи

            // Информация о начальных и конечных блоках
            BlockWPF Start = connection.StartBlock;
            BlockWPF End   = connection.EndBlock;

            SaveProcedure procedure = null;
            SaveResource  resource  = null;

            // Если начальный элемент - процедура
            if (Start is ProcedureWPF)
            {
                procedure = SaveBlockProcedure(Start, procedures, saveProcess);
                resource  = SaveBlockResourse(End, resources, saveProcess);
            }
            else
            {
                procedure = SaveBlockProcedure(End, procedures, saveProcess);
                resource  = SaveBlockResourse(Start, resources, saveProcess);
            }

            // Формируем информацию
            SaveResourceConnection resConnection = new Utility.SaveResourceConnection()
            {
                StartID = procedure.Id,
                EndID   = resource.Id
            };

            // Сохраняем
            saveProcess.ResourceConnectionList.Add(resConnection);
        }
예제 #3
0
 // Загрузка блока ресурсов
 private ResourceWPF LoadResourceBlock(SaveResource Block, Dictionary <Guid, ResourceWPF> worksavelist)
 {
     if (worksavelist.ContainsKey(Block.Id))
     {
         return(worksavelist[Block.Id]);
     }
     else
     {
         ResourceWPF curRes = SaveResource.ToNormal(Block);
         worksavelist.Add(Block.Id, curRes);
         return(curRes);
     }
 }
예제 #4
0
 public static ResourceWPF ToNormal(SaveResource resource)
 {
     return(new ResourceWPF(resource.Position, resource.Model));
 }