public string GetAcfAppSubItem(string acfPath, string subItemName) { AcfReader acfReader = new AcfReader(acfPath); ACF_Struct acfStruct = acfReader.ACFFileToStruct(); return(acfStruct.SubACF["AppState"].SubItems[subItemName]); }
private ACF_Struct ACFFileToStruct(string RegionToReadIn) { ACF_Struct ACF = new ACF_Struct(); int LengthOfRegion = RegionToReadIn.Length; int CurrentPos = 0; while (LengthOfRegion > CurrentPos) { int FirstItemStart = RegionToReadIn.IndexOf('"', CurrentPos); if (FirstItemStart == -1) { break; } int FirstItemEnd = RegionToReadIn.IndexOf('"', FirstItemStart + 1); CurrentPos = FirstItemEnd + 1; string FirstItem = RegionToReadIn.Substring(FirstItemStart + 1, FirstItemEnd - FirstItemStart - 1); int SecondItemStartQuote = RegionToReadIn.IndexOf('"', CurrentPos); int SecondItemStartBraceleft = RegionToReadIn.IndexOf('{', CurrentPos); if (SecondItemStartBraceleft == -1 || SecondItemStartQuote < SecondItemStartBraceleft) { int SecondItemEndQuote = RegionToReadIn.IndexOf('"', SecondItemStartQuote + 1); string SecondItem = RegionToReadIn.Substring(SecondItemStartQuote + 1, SecondItemEndQuote - SecondItemStartQuote - 1); CurrentPos = SecondItemEndQuote + 1; ACF.SubItems.Add(FirstItem, SecondItem); } else { int SecondItemEndBraceright = RegionToReadIn.NextEndOf('{', '}', SecondItemStartBraceleft + 1); ACF_Struct ACFS = ACFFileToStruct(RegionToReadIn.Substring(SecondItemStartBraceleft + 1, SecondItemEndBraceright - SecondItemStartBraceleft - 1)); CurrentPos = SecondItemEndBraceright + 1; ACF.SubACF.Add(FirstItem, ACFS); } } return(ACF); }