/// <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); }
/// <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); }
// Загрузка блока ресурсов 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); } }
public static ResourceWPF ToNormal(SaveResource resource) { return(new ResourceWPF(resource.Position, resource.Model)); }