// After words are placed and sorted, this method looks up the placed word definition public List <PlacedWord> FindDefinitionsAndAssignLocationIndex(List <PlacedWord> placedWords) { var placedWordWithDeets = new List <PlacedWord>(); var previousStartPos = new Tuple <int, int>(-1, -1); var count = 0; for (var i = 0; i < placedWords.Count; i++) { var definitionArray = WordList.Instance().WordAndDefinitions.Where(d => d.Word == placedWords[i].Word).ToArray(); if (definitionArray == null) { return(null); } var definition = definitionArray[0].Definition; if (!previousStartPos.Equals(placedWords[i].StartPos)) { count++; } placedWordWithDeets.Add(new PlacedWord { Word = placedWords[i].Word, StartPos = placedWords[i].StartPos, Direction = placedWords[i].Direction, DefinitionIndex = count.ToString(), Definition = definition, }); // Assign Definition index to placedWord placedWords[i].DefinitionIndex = count.ToString(); previousStartPos = placedWords[i].StartPos; } return(placedWordWithDeets); }