internal void Process(List <Shade> shades) { RawShades = shades; IsResultReady = false; PaperParser.Process(shades); ShadeItemKeys.Clear(); if (PaperParser.MainReady) { foreach (ItemParser itemParser in ItemParsers) { itemParser.Process(PaperParser); ShadeItemKeys.AddRange(itemParser.ItemKeys); } SetParser.Process(PaperParser); PaperItem[] keys = new PaperItem[Assessment.GetTypeLength(Assessment.AssessmentType)]; for (int i = 0; i < keys.Length; i++) { keys[i] = new PaperItem(false, false, false, false, false); } foreach (ShadeItemKey shadeItemKey in ShadeItemKeys) { switch (shadeItemKey.Key) { case Key.A: keys[shadeItemKey.ItemNumber - 1].A = true; break; case Key.B: keys[shadeItemKey.ItemNumber - 1].B = true; break; case Key.C: keys[shadeItemKey.ItemNumber - 1].C = true; break; case Key.D: keys[shadeItemKey.ItemNumber - 1].D = true; break; case Key.E: keys[shadeItemKey.ItemNumber - 1].E = true; break; } } AnswerParser = AnswerParser.Parse(Assessment, keys, SetParser.SetParserResult); IsResultReady = true; } }