예제 #1
0
파일: Tile.cs 프로젝트: Gabylone/RogueText
    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());
        }
    }