private string GenerateFileStringTemplate(LEDCubeTemplateActionsModel cube, int numLine) { string result = $"*{numLine}*+{cube.Name}+m{cube.StepsDiods.Count}m-"; string before = string.Empty, after = string.Empty; for (int i = 0; i < cube.StepsDiods.Count; i++) { result += cube.StepsTimingDiods[i].ToString() + "-"; for (int j = 0; j < 8; j++) { for (int k = 0; k < 8; k++) { for (int l = 0; l < 8; l++) { var test = cube.StepsStringsDiods[i].First()[j, k, l]; if (test == "" || test == null) { before += "0,"; } else { string next = string.Empty; for (int j1 = 0; j1 < 8; j1++) { for (int k1 = 0; k1 < 8; k1++) { for (int l1 = 0; l1 < 8; l1++) { next = cube.StepsStringsDiods[i].Last()[j1, k1, l1]; if (next == test) { next = j1.ToString() + k1.ToString() + l1.ToString(); before += next + ","; } } } } } } } } result += before + "-" + cube.StepsTimingDiods[i + 10].ToString() + "-"; before = string.Empty; } return(result); }
public void CodeCubeTemplateToFile(LEDCubeTemplateActionsModel cube) { FileStream fs; if (!File.Exists(pathToCubeTemplateFile)) { fs = File.Create(pathToCubeTemplateFile); fs.Close(); } using (StreamReader sr = new StreamReader(pathToCubeTemplateFile)) { while (sr.Peek() >= 0) { sr.ReadLine(); numLine++; } } var fileString = GenerateFileStringTemplate(cube, numLine); using (StreamWriter sw = new StreamWriter(pathToCubeTemplateFile)) { sw.WriteLine(fileString); } }
private LEDCubeTemplateActionsModel GetLEDCubeTemplateActionsModel(string line) { if (line.Count() > 10) { var model = new LEDCubeTemplateActionsModel(); model.StepsTimingDiods = new Dictionary <int, int>(); model.FirstLedCubeDiods = new bool[8, 8, 8]; for (int str = 0; str < line.Count(); str++) { if (line[str] == '+') { string name = string.Empty; str++; while (line[str] != '+') { name += line[str]; str++; } str++; model.Name = name; } if (line[str] == 'm') { str++; string numStepsStr = string.Empty; while (line[str] != 'm') { numStepsStr += line[str]; str++; } int numSteps = int.Parse(numStepsStr); for (int k = 0; k < numSteps; k++) { var list = new List <bool[, , ]>(); model.StepsDiods.Add(k, list); } str++; } if (line[str] == '-') { str++; int counter = 1; for (int step = 0; step < model.StepsDiods.Count; step++) { string timing = string.Empty; while (line[str] != '-') { timing += line[str]; str++; } str++; model.StepsTimingDiods[step] = int.Parse(timing); var readingFirst = new string[8, 8, 8]; var readingSecond = new string[8, 8, 8]; var boolReadingFirst = new bool[8, 8, 8]; var boolReadingSecond = new bool[8, 8, 8]; for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { for (int k = 0; k < 8; k++) { if (line[str + 1] == ',') { readingFirst[i, j, k] = string.Empty; str += 2; } else { string position = string.Empty; while (line[str] != ',') { position += line[str]; str++; } str++; var intPosition = int.Parse(position); readingFirst[i, j, k] = counter.ToString(); boolReadingFirst[i, j, k] = true; readingSecond[intPosition / 100, (intPosition / 10) % 10, intPosition % 10] = counter.ToString(); boolReadingSecond[intPosition / 100, (intPosition / 10) % 10, intPosition % 10] = true; counter++; } } } } model.StepsStringsDiods[step].Add(readingFirst); model.StepsStringsDiods[step].Add(readingSecond); model.StepsDiods[step].Add(boolReadingFirst); model.StepsDiods[step].Add(boolReadingSecond); str++; timing = string.Empty; while (line[str] != '-') { timing += line[str]; str++; } model.StepsTimingDiods[step + 10] = int.Parse(timing); str++; } } } return(model); } return(null); }