private void CreateConnection(ConnectionTemplate ct, CrossReferencedDictionary <string, Module> modules) { if (ct.SourceIndex == -1) { if (ct.DestIndex == -1) { Connections.NewConnection(modules[ct.Source], modules[ct.Dest]); } else { Connections.NewConnection(modules[ct.Source], modules[ct.Dest], ct.DestIndex); } } else { if (ct.DestIndex == -1) { Connections.NewConnection(modules[ct.Source], ct.SourceIndex, modules[ct.Dest]); } else { Connections.NewConnection(modules[ct.Source], ct.SourceIndex, modules[ct.Dest], ct.DestIndex); } } }
public BoardTemplate(XElement element, SynthData data) { modules = new CrossReferencedDictionary <string, Module>(); connections = new List <ConnectionTemplate>(); foreach (var mod in element.Element("modules").Elements()) { string moduleName = mod.Name.LocalName.Substring(MODULE_SAVE_PREFIX.Length); string moduleType = mod.ElementValue("type"); modules[moduleName] = data.ModuleTypes[moduleType].Instance.CreateInstance(mod, data); } foreach (var con in element.Element("connections").Elements()) { connections.Add(new ConnectionTemplate(con)); } }
public ModuleBoard CreateInstance(SynthData data) { var boardModules = new CrossReferencedDictionary <string, Module>(); foreach (var m in modules) { boardModules[m.Key] = m.Value.Clone(); } foreach (var ct in connections) { CreateConnection(ct, boardModules); } var board = new ModuleBoard(boardModules.Keys2.ToArray(), data); return(board); }
public BoardTemplate() { modules = new CrossReferencedDictionary <string, Module>(); connections = new List <ConnectionTemplate>(); }