public void WriteItemDescription() { if (items.Count == 0) { return; } // item AND item counts List <ItemGroup> itemGroups = ItemGroup.GetItemGroups(items); // ITEM GROUP " est près de l'évier " SOCKET List <ItemPhrase> phrases = new List <ItemPhrase>(); // note : en quoi ItemGroup & ItemPhrase ne peuvent pas être les memes classes ? // bonne question for (int item_group_index = 0; item_group_index < itemGroups.Count; item_group_index++) { ItemGroup itemGroup = itemGroups[item_group_index]; // retourne la phrase de position appropriée Socket socket = itemGroup.item.GetSocket(); // si la position a déjà été trouve ( pour éviter : près du mur, une armoire, près de mur, une fenêtre ) // et donc addictioner les noms ( près du mur, une armoire ET une fenêtre ) ItemPhrase matchingPhrase = phrases.Find(x => x.socket == socket); if (matchingPhrase != null && matchingPhrase.socket.relative == false) { matchingPhrase.itemGroups.Add(itemGroup); continue; } ItemPhrase newPhrase = new ItemPhrase(); newPhrase.itemGroups.Add(itemGroup); newPhrase.socket = socket; Phrase.Write(newPhrase.GetText()); } }