public void Unpack() { if (Directory.Exists(_scriptDirectory)) { Directory.Delete(_scriptDirectory, true); } Directory.CreateDirectory(_scriptDirectory); IEnumerable <string> sceneFiles = Directory.GetFiles(_sceneDirectory, "*.scn"); foreach (string sceneFile in sceneFiles) { string fileTemplate = Path.Combine(_scriptDirectory, Path.GetFileName(sceneFile) + ".txt"); int lineCounter = 0; StringExtractor stringExtractor = new StringExtractor(); byte[] data = File.ReadAllBytes(sceneFile); stringExtractor.Import(data); List <string> templateLines = new List <string>(); foreach (string line in stringExtractor.Strings) { templateLines.Add($"<{(lineCounter++):0000}> {line}"); } File.AppendAllLines(fileTemplate, templateLines); } }
public void Pack() { foreach (string templateFile in Directory.GetFiles(_scriptDirectory, "*.txt")) { string sceneFile = Path.Combine(_sceneDirectory, Path.GetFileNameWithoutExtension(templateFile)); StringExtractor stringExtractor = new StringExtractor(); stringExtractor.Import(sceneFile); string[] templateLines = File.ReadAllLines(templateFile); foreach (string line in templateLines.Select(x => x.Trim()).Where(x => !x.StartsWith("//"))) { Match m = REGEX_SCRIPT_LINES.Match(line); if (m.Success) { stringExtractor.Strings[int.Parse(m.Groups["number"].Value)] = m.Groups["text"].Value; } } stringExtractor.Export(Path.Combine(_scriptDirectory, Path.GetFileName(sceneFile))); } }